]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
library/ceph_crush_rule: module refactor
authorGuillaume Abrioux <gabrioux@redhat.com>
Fri, 2 Jun 2023 19:00:35 +0000 (21:00 +0200)
committerGuillaume Abrioux <gabrioux@ibm.com>
Mon, 11 Mar 2024 14:48:19 +0000 (15:48 +0100)
This refactor makes the 'name' argument not mandatory because when
'state' is 'info' we shouldn't need to pass it.

The second change is just a duplicate code removal.

Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit e433d2b955f8a52a869a192f415a1db55269bc72)

library/ceph_crush_rule.py
roles/ceph-facts/tasks/get_def_crush_rule_name.yml

index e696a9fb72377e11c7c7f70eb3872a4417f6fa4b..a84d7caf0515230bb63cb68950b5a912408dd5a6 100644 (file)
@@ -190,7 +190,7 @@ def remove_rule(module, container_image=None):
 def main():
     module = AnsibleModule(
         argument_spec=dict(
-            name=dict(type='str', required=True),
+            name=dict(type='str', required=False),
             cluster=dict(type='str', required=False, default='ceph'),
             state=dict(type='str', required=False, choices=['present', 'absent', 'info'], default='present'),  # noqa: E501
             rule_type=dict(type='str', required=False, choices=['replicated', 'erasure']),  # noqa: E501
@@ -203,6 +203,8 @@ def main():
         supports_check_mode=True,
         required_if=[
             ('state', 'present', ['rule_type']),
+            ('state', 'present', ['name']),
+            ('state', 'absent', ['name']),
             ('rule_type', 'replicated', ['bucket_root', 'bucket_type']),
             ('rule_type', 'erasure', ['profile'])
         ]
@@ -230,8 +232,8 @@ def main():
     # will return either the image name or None
     container_image = is_containerized()
 
+    rc, cmd, out, err = exec_command(module, get_rule(module, container_image=container_image))  # noqa: E501
     if state == "present":
-        rc, cmd, out, err = exec_command(module, get_rule(module, container_image=container_image))  # noqa: E501
         if rc != 0:
             rc, cmd, out, err = exec_command(module, create_rule(module, container_image=container_image))  # noqa: E501
             changed = True
@@ -239,18 +241,15 @@ def main():
             rule = json.loads(out)
             if (rule['type'] == 1 and rule_type == 'erasure') or (rule['type'] == 3 and rule_type == 'replicated'):  # noqa: E501
                 module.fail_json(msg="Can not convert crush rule {} to {}".format(name, rule_type), changed=False, rc=1)  # noqa: E501
-
     elif state == "absent":
-        rc, cmd, out, err = exec_command(module, get_rule(module, container_image=container_image))  # noqa: E501
         if rc == 0:
             rc, cmd, out, err = exec_command(module, remove_rule(module, container_image=container_image))  # noqa: E501
             changed = True
         else:
             rc = 0
             out = "Crush Rule {} doesn't exist".format(name)
-
-    elif state == "info":
-        rc, cmd, out, err = exec_command(module, get_rule(module, container_image=container_image))  # noqa: E501
+    else:
+        pass
 
     exit_module(module=module, out=out, rc=rc, cmd=cmd, err=err, startd=startd, changed=changed)  # noqa: E501
 
index cdfcfbf3622114b4065e503ad52ca19711ff56ad..70ba069501573a118ddcbc1cb0a616a662d8aa3f 100644 (file)
@@ -1,7 +1,6 @@
 ---
 - name: get current default crush rule details
   ceph_crush_rule:
-    name: ""
     cluster: "{{ cluster }}"
     state: info
   environment: