ceph_orch_apply: fix idempotency

As is idempotency does not work as the ceph orch
output does contain more attributes than the expected
spec.

Signed-off-by: Teoman ONAY <tonay@ibm.com>
pull/7572/head
Teoman ONAY 2024-05-28 14:06:03 +02:00 committed by Teoman ONAY
parent f6fd034e7e
commit 5a44fbeaa6
1 changed files with 16 additions and 1 deletions

View File

@ -103,6 +103,21 @@ def apply_spec(module: "AnsibleModule",
return rc, cmd, out, err return rc, cmd, out, err
def change_required(current: Dict, expected: Dict) -> bool:
""" checks if the current config differs from what is expected """
if not current:
return True
for key, value in expected.items():
if key in current:
if current[key] != value:
return True
continue
else:
return True
return False
def run_module() -> None: def run_module() -> None:
module_args = dict( module_args = dict(
@ -137,7 +152,7 @@ def run_module() -> None:
expected = parse_spec(module.params.get('spec')) expected = parse_spec(module.params.get('spec'))
current_spec = retrieve_current_spec(module, expected) current_spec = retrieve_current_spec(module, expected)
if not current_spec or current_spec != expected: if change_required(current_spec, expected):
rc, cmd, out, err = apply_spec(module, spec) rc, cmd, out, err = apply_spec(module, spec)
changed = True changed = True
else: else: