From b177c7b55895696879bb754d7f9147d34b092f1c Mon Sep 17 00:00:00 2001 From: Nikhil Jain Date: Fri, 12 Feb 2021 08:19:32 +0530 Subject: [PATCH 1/2] add support diff mode in tower_settings module --- .../plugins/modules/tower_settings.py | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/awx_collection/plugins/modules/tower_settings.py b/awx_collection/plugins/modules/tower_settings.py index c2e8ed1ae5..7fcd3618dc 100644 --- a/awx_collection/plugins/modules/tower_settings.py +++ b/awx_collection/plugins/modules/tower_settings.py @@ -133,7 +133,7 @@ def main(): existing_settings = module.get_endpoint('settings/all')['json'] # Begin a json response - json_response = {'changed': False, 'old_values': {}} + json_output = {'changed': False, 'old_values': {}, 'new_values': {} } # Check any of the settings to see if anything needs to be updated needs_update = False @@ -141,18 +141,29 @@ def main(): if a_setting not in existing_settings or existing_settings[a_setting] != new_settings[a_setting]: # At least one thing is different so we need to patch needs_update = True - json_response['old_values'][a_setting] = existing_settings[a_setting] + json_output['old_values'][a_setting] = existing_settings[a_setting] + json_output['new_values'][a_setting] = new_settings[a_setting] + + if module._diff: + json_output['diff'] = { + 'before': json_output['old_values'], + 'after': json_output['new_values'] + } # If nothing needs an update we can simply exit with the response (as not changed) if not needs_update: - module.exit_json(**json_response) + module.exit_json(**json_output) + + if module.check_mode and module._diff: + json_output['changed'] = True + module.exit_json(**json_output) # Make the call to update the settings response = module.patch_endpoint('settings/all', **{'data': new_settings}) if response['status_code'] == 200: # Set the changed response to True - json_response['changed'] = True + json_output['changed'] = True # To deal with the old style values we need to return 'value' in the response new_values = {} @@ -161,11 +172,11 @@ def main(): # If we were using a name we will just add a value of a string, otherwise we will return an array in values if name is not None: - json_response['value'] = new_values[name] + json_output['value'] = new_values[name] else: - json_response['values'] = new_values + json_output['values'] = new_values - module.exit_json(**json_response) + module.exit_json(**json_output) elif 'json' in response and '__all__' in response['json']: module.fail_json(msg=response['json']['__all__']) else: From 3ad2bb1bb9a4b9f0fdddf39cb6416f8373a245b5 Mon Sep 17 00:00:00 2001 From: Nikhil Jain Date: Mon, 15 Feb 2021 09:31:16 +0530 Subject: [PATCH 2/2] remove whitespaces --- awx_collection/plugins/modules/tower_settings.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/awx_collection/plugins/modules/tower_settings.py b/awx_collection/plugins/modules/tower_settings.py index 7fcd3618dc..b0f39126c3 100644 --- a/awx_collection/plugins/modules/tower_settings.py +++ b/awx_collection/plugins/modules/tower_settings.py @@ -133,7 +133,7 @@ def main(): existing_settings = module.get_endpoint('settings/all')['json'] # Begin a json response - json_output = {'changed': False, 'old_values': {}, 'new_values': {} } + json_output = {'changed': False, 'old_values': {}, 'new_values': {}} # Check any of the settings to see if anything needs to be updated needs_update = False @@ -153,7 +153,7 @@ def main(): # If nothing needs an update we can simply exit with the response (as not changed) if not needs_update: module.exit_json(**json_output) - + if module.check_mode and module._diff: json_output['changed'] = True module.exit_json(**json_output)