Fixes #35284 - Added ability for os_nova_flavor to update existing flavors (#37170)

This commit is contained in:
Arun prasath 2018-10-14 08:36:29 +05:30 committed by ansibot
parent 5b3e009198
commit 23b60d843e

View file

@ -212,6 +212,20 @@ def main():
module.exit_json(changed=_system_state_change(module, flavor)) module.exit_json(changed=_system_state_change(module, flavor))
if state == 'present': if state == 'present':
old_extra_specs = {}
require_update = False
if flavor:
old_extra_specs = flavor['extra_specs']
for param_key in ['ram', 'vcpus', 'disk', 'ephemeral', 'swap', 'rxtx_factor', 'is_public']:
if module.params[param_key] != flavor[param_key]:
require_update = True
break
if flavor and require_update:
cloud.delete_flavor(name)
flavor = None
if not flavor: if not flavor:
flavor = cloud.create_flavor( flavor = cloud.create_flavor(
name=name, name=name,
@ -228,11 +242,10 @@ def main():
else: else:
changed = False changed = False
old_extra_specs = flavor['extra_specs']
new_extra_specs = dict([(k, str(v)) for k, v in extra_specs.items()]) new_extra_specs = dict([(k, str(v)) for k, v in extra_specs.items()])
unset_keys = set(flavor['extra_specs'].keys()) - set(extra_specs.keys()) unset_keys = set(old_extra_specs.keys()) - set(extra_specs.keys())
if unset_keys: if unset_keys and not require_update:
cloud.unset_flavor_specs(flavor['id'], unset_keys) cloud.unset_flavor_specs(flavor['id'], unset_keys)
if old_extra_specs != new_extra_specs: if old_extra_specs != new_extra_specs: