Empty variables are not displayed in Extra Variables (change AAP-49448)
Please confirm the following
- I agree to follow this project's code of conduct.
- I have checked the current issues for duplicates.
- I understand that AWX is open source software provided for free and that I might not receive a timely response.
- I am NOT reporting a (potential) security vulnerability. (These should be emailed to
[email protected]instead.)
Bug Summary
Description
AAP incorrectly hides extra variables with empty string values on the details page, while still passing them to the playbook as defined variables.
Since extra variables are immutable in Ansible, a hidden empty string value cannot be overridden at any lower precedence level. This causes the following issues:
- The variable appears to be absent in the UI, while it is silently influencing playbook behavior
- This makes troubleshooting unnecessarily difficult, as the actual state of the variable is not transparent to the user
Expected behavior Extra variables with empty string values should be visible on the details page, as they are technically defined and actively passed to the playbook. Hiding them provides a misleading representation of the playbook's execution context.
Suggested fix Display all extra variables regardless of their value, including empty strings, to ensure full transparency and accurate troubleshooting.
AWX version
Ansible Automation Platform 2.6 (Automation Controller Version 4.7.13)
Select the relevant components
- UI
- UI (tech preview)
- API
- Docs
- Collection
- CLI
- Other
Installation method
docker development environment
Modifications
no
Ansible version
No response
Operating system
redhat
Web browser
No response
Steps to reproduce
Steps to reproduce
- Create a template with a "prompt on lauch"
--
- name: Initialize
hosts: localhost
gather_facts: no
tasks:
- name: step0
debug:
msg: "x is not defined!"
when: x is not defined
- name: step1
debug:
msg: "x is defined, value: {{ x }}"
when: x is definedSteps to reproduce - Wrong
- Launch template
- Enter the following data
{
"x": "",
"y": "value"
}- Execute the job
- Navigate to the results page: /execution/jobs/playbook//details
- This only shows:
'y': value- This is the job output:
PLAY [Initialize] **************************************************************
TASK [step0] *******************************************************************
skipping: [localhost]
TASK [step1] *******************************************************************
ok: [localhost] => {
"msg": "x is defined, value: "
}
PLAY RECAP *********************************************************************
localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0 Steps to reproduce - Correct
- Launch template
- Enter the following data
{
"y": "value"
}- Execute the job
- Navigate to the results page: /execution/jobs/playbook//details
- This shows:
'y': value- This is the job output:
PLAY [Initialize] **************************************************************
TASK [step0] ******************************************************************* ok: [localhost] => { "msg": "x is not defined!" }
TASK [step1] ******************************************************************* skipping: [localhost]
PLAY RECAP ********************************************************************* localhost : ok=1 changed=0 unreachable=0 failed=0 skipped=1 rescued=0 ignored=0
### Expected results
Show "x"
### Actual results
Only shows "y"
### Additional information
_No response_Source: ansible/awx