From 18f22de67e8304aebf4e78e2dfa6fe7831e635a3 Mon Sep 17 00:00:00 2001 From: Bharat Kunwar Date: Fri, 17 May 2019 15:34:58 +0100 Subject: [PATCH] Fix typo that breaks invocation of os_stack (#56575) * Fix typo that breaks invocation of os_stack * Apply tags conditionally so that the module does not throw up an error when using an older distro of openstacksdk --- .../modules/cloud/openstack/os_stack.py | 38 +++++++++---------- 1 file changed, 18 insertions(+), 20 deletions(-) diff --git a/lib/ansible/modules/cloud/openstack/os_stack.py b/lib/ansible/modules/cloud/openstack/os_stack.py index 9f3b1e70506..b6f11957156 100644 --- a/lib/ansible/modules/cloud/openstack/os_stack.py +++ b/lib/ansible/modules/cloud/openstack/os_stack.py @@ -154,16 +154,15 @@ from ansible.module_utils.openstack import openstack_full_argument_spec, opensta from ansible.module_utils._text import to_native -def _create_stack(module, stack, cloud, sdk): +def _create_stack(module, stack, cloud, sdk, parameters): try: stack = cloud.create_stack(module.params['name'], - tags=module.params['tag'], template_file=module.params['template'], environment_files=module.params['environment'], timeout=module.params['timeout'], wait=True, rollback=module.params['rollback'], - **module.params['parameters']) + **parameters) stack = cloud.get_stack(stack.id, None) if stack.stack_status == 'CREATE_COMPLETE': @@ -177,17 +176,16 @@ def _create_stack(module, stack, cloud, sdk): module.fail_json(msg=to_native(e)) -def _update_stack(module, stack, cloud, sdk): +def _update_stack(module, stack, cloud, sdk, parameters): try: stack = cloud.update_stack( module.params['name'], - tags=module.params['tag'], template_file=module.params['template'], environment_files=module.params['environment'], timeout=module.params['timeout'], rollback=module.params['rollback'], wait=module.params['wait'], - **module.params['parameters']) + **parameters) if stack['stack_status'] == 'UPDATE_COMPLETE': return stack @@ -242,24 +240,24 @@ def main(): stack = cloud.get_stack(name) if module.check_mode: - module.exit_json(changed=_system_state_change(module, stack, - cloud)) + module.exit_json(changed=_system_state_change(module, stack, cloud)) if state == 'present': + parameters = module.params['parameters'] + if module.params['tag']: + parameters['tags'] = module.params['tag'] + from distutils.version import StrictVersion + min_version = '0.28.0' + if StrictVersion(sdk.version.__version__) < StrictVersion(min_version) and stack: + module.warn("To update tags using os_stack module, the" + "installed version of the openstacksdk" + "library MUST be >={min_version}" + "".format(min_version=min_version)) if not stack: - stack = _create_stack(module, stack, cloud, sdk) + stack = _create_stack(module, stack, cloud, sdk, parameters) else: - if module.params['tags']: - from distutils.version import StrictVersion - min_version = '0.28.0' - if StrictVersion(sdk.version.__version__) < StrictVersion(min_version): - module.warn("To update tags using os_stack module, the" - "installed version of the openstacksdk" - "library MUST be >={min_version}" - "".format(min_version=min_version)) - stack = _update_stack(module, stack, cloud, sdk) - changed = True - module.exit_json(changed=changed, + stack = _update_stack(module, stack, cloud, sdk, parameters) + module.exit_json(changed=True, stack=stack, id=stack.id) elif state == 'absent':