Skip to content

Commit

Permalink
Fix Boolean values defaulting to False in collection (ansible#14493)
Browse files Browse the repository at this point in the history
* Fix Boolean values defaulting to False in collection

* Remove null values in other cases, fix null handling for WFJT nodes

* Only remove null values if it is a boolean field

* Reset changes to WFJT node field processing

* Use test content from sean-m-sullivan to fix lookups in assert
  • Loading branch information
AlanCoding authored and djyasin committed Sep 11, 2024
1 parent 892cb41 commit 0e35665
Show file tree
Hide file tree
Showing 3 changed files with 37 additions and 0 deletions.
9 changes: 9 additions & 0 deletions awx_collection/plugins/module_utils/controller_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -980,6 +980,15 @@ def update_if_needed(self, existing_item, new_item, on_update=None, auto_exit=Tr
def create_or_update_if_needed(
self, existing_item, new_item, endpoint=None, item_type='unknown', on_create=None, on_update=None, auto_exit=True, associations=None
):
# Remove boolean values of certain specific types
# this is needed so that boolean fields will not get a false value when not provided
for key in list(new_item.keys()):
if key in self.argument_spec:
param_spec = self.argument_spec[key]
if 'type' in param_spec and param_spec['type'] == 'bool':
if new_item[key] is None:
new_item.pop(key)

if existing_item:
return self.update_if_needed(existing_item, new_item, on_update=on_update, auto_exit=auto_exit, associations=associations)
else:
Expand Down
19 changes: 19 additions & 0 deletions awx_collection/tests/integration/targets/host/tasks/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,16 @@
that:
- "result is not changed"

- name: Modify the host as a no-op
host:
name: "{{ host_name }}"
inventory: "{{ inv_name }}"
register: result

- assert:
that:
- "result is not changed"

- name: Delete a Host
host:
name: "{{ host_name }}"
Expand All @@ -68,6 +78,15 @@
that:
- "result is changed"

- name: Use lookup to check that host was enabled
ansible.builtin.set_fact:
host_enabled_test: "lookup('awx.awx.controller_api', 'hosts/{{result.id}}/').enabled"

- name: Newly created host should have API default value for enabled
assert:
that:
- host_enabled_test

- name: Delete a Host
host:
name: "{{ result.id }}"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,15 @@
that:
- result is changed

- name: Use lookup to check that schedules was enabled
ansible.builtin.set_fact:
schedules_enabled_test: "lookup('awx.awx.controller_api', 'schedules/{{result.id}}/').enabled"

- name: Newly created schedules should have API default value for enabled
assert:
that:
- schedules_enabled_test

- name: Build a real schedule with exists
schedule:
name: "{{ sched1 }}"
Expand Down

0 comments on commit 0e35665

Please sign in to comment.