mirror of https://github.com/ceph/ceph-ansible.git
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
parent
f6fd034e7e
commit
5a44fbeaa6
|
@ -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:
|
||||||
|
|
Loading…
Reference in New Issue