]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
Initialize rbd pool at pool creation
authorTeoman ONAY <tonay@redhat.com>
Tue, 29 Nov 2022 08:47:58 +0000 (09:47 +0100)
committerGuillaume Abrioux <gabrioux@ibm.com>
Tue, 14 Feb 2023 09:52:14 +0000 (10:52 +0100)
When creating a RBD pool it needs to be initialized as per documentation[1]
Modified (pre_)generate_ceph_cmd to make it usable with any command with
the same parameters as the ceph command

[1]https://docs.ceph.com/en/latest/rbd/rados-rbd-cmds/#create-a-block-device-pool

Signed-off-by: Teoman ONAY <tonay@redhat.com>
13 files changed:
library/ceph_crush_rule.py
library/ceph_dashboard_user.py
library/ceph_ec_profile.py
library/ceph_fs.py
library/ceph_key.py
library/ceph_mgr_module.py
library/ceph_osd.py
library/ceph_osd_flag.py
library/ceph_pool.py
module_utils/ca_common.py
tests/library/test_ceph_key.py
tests/library/test_ceph_pool.py
tests/module_utils/test_ca_common.py

index 87d4f1e2d73f417304091cecf61d3eb2e16773f8..88ec8434cbcff032aafad1f9711797aa7380395d 100644 (file)
@@ -18,12 +18,12 @@ __metaclass__ = type
 from ansible.module_utils.basic import AnsibleModule
 try:
     from ansible.module_utils.ca_common import exit_module, \
-                                               generate_ceph_cmd, \
+                                               generate_cmd, \
                                                is_containerized, \
                                                exec_command
 except ImportError:
     from module_utils.ca_common import exit_module, \
-                                       generate_ceph_cmd, \
+                                       generate_cmd, \
                                        is_containerized, \
                                        exec_command
 import datetime
@@ -142,10 +142,10 @@ def create_rule(module, container_image=None):
         if profile:
             args.append(profile)
 
-    cmd = generate_ceph_cmd(['osd', 'crush', 'rule'],
-                            args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'crush', 'rule'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -160,10 +160,10 @@ def get_rule(module, container_image=None):
 
     args = ['dump', name, '--format=json']
 
-    cmd = generate_ceph_cmd(['osd', 'crush', 'rule'],
-                            args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'crush', 'rule'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -178,10 +178,10 @@ def remove_rule(module, container_image=None):
 
     args = ['rm', name]
 
-    cmd = generate_ceph_cmd(['osd', 'crush', 'rule'],
-                            args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'crush', 'rule'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
index 22cc760f19dd412781d2b58a7388b24db7eb4e86..89fdafff91352c5b3ac7d61720c0c9543e8e8ebb 100644 (file)
@@ -17,13 +17,13 @@ __metaclass__ = type
 
 from ansible.module_utils.basic import AnsibleModule
 try:
-    from ansible.module_utils.ca_common import generate_ceph_cmd, \
+    from ansible.module_utils.ca_common import generate_cmd, \
                                                is_containerized, \
                                                exec_command, \
                                                exit_module, \
                                                fatal
 except ImportError:
-    from module_utils.ca_common import generate_ceph_cmd, is_containerized, exec_command, exit_module, fatal  # noqa: E501
+    from module_utils.ca_common import generate_cmd, is_containerized, exec_command, exit_module, fatal  # noqa: E501
 
 import datetime
 import json
@@ -123,11 +123,11 @@ def create_user(module, container_image=None):
 
     args = ['ac-user-create', '-i', '-',  name]
 
-    cmd = generate_ceph_cmd(sub_cmd=['dashboard'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image,
-                            interactive=True)
+    cmd = generate_cmd(sub_cmd=['dashboard'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image,
+                       interactive=True)
 
     return cmd
 
@@ -145,10 +145,10 @@ def set_roles(module, container_image=None):
 
     args.extend(roles)
 
-    cmd = generate_ceph_cmd(sub_cmd=['dashboard'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['dashboard'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -163,11 +163,11 @@ def set_password(module, container_image=None):
 
     args = ['ac-user-set-password', '-i', '-', name]
 
-    cmd = generate_ceph_cmd(sub_cmd=['dashboard'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image,
-                            interactive=True)
+    cmd = generate_cmd(sub_cmd=['dashboard'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image,
+                       interactive=True)
 
     return cmd
 
@@ -182,10 +182,10 @@ def get_user(module, container_image=None):
 
     args = ['ac-user-show', name, '--format=json']
 
-    cmd = generate_ceph_cmd(sub_cmd=['dashboard'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['dashboard'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -200,10 +200,10 @@ def remove_user(module, container_image=None):
 
     args = ['ac-user-delete', name]
 
-    cmd = generate_ceph_cmd(sub_cmd=['dashboard'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['dashboard'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
index c37b7b612c652824dc284ebb3919793cb0c652cd..66bef253ad4ce2a2b0f824a5e95ef4499848b2d4 100644 (file)
@@ -18,12 +18,12 @@ __metaclass__ = type
 from ansible.module_utils.basic import AnsibleModule
 try:
     from ansible.module_utils.ca_common import is_containerized, \
-                                               generate_ceph_cmd, \
+                                               generate_cmd, \
                                                exec_command, \
                                                exit_module
 except ImportError:
     from module_utils.ca_common import is_containerized, \
-                                            generate_ceph_cmd, \
+                                            generate_cmd, \
                                             exec_command, \
                                             exit_module
 import datetime
@@ -113,10 +113,10 @@ def get_profile(module, name, cluster='ceph', container_image=None):
 
     args = ['get', name, '--format=json']
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'erasure-code-profile'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'erasure-code-profile'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -134,10 +134,10 @@ def create_profile(module, name, k, m, stripe_unit, crush_device_class, cluster=
     if force:
         args.append('--force')
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'erasure-code-profile'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'erasure-code-profile'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -149,10 +149,10 @@ def delete_profile(module, name, cluster='ceph', container_image=None):
 
     args = ['rm', name]
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'erasure-code-profile'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'erasure-code-profile'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -210,7 +210,7 @@ def run_module():
             if current_profile['k'] != k or \
                current_profile['m'] != m or \
                current_profile.get('stripe_unit', stripe_unit) != stripe_unit or \
-               current_profile.get('crush-device-class', crush_device_class) != crush_device_class:
+               current_profile.get('crush-device-class', crush_device_class) != crush_device_class:  # noqa: E501
                 rc, cmd, out, err = exec_command(module,
                                                  create_profile(module,
                                                                 name,
index 1be8881dc1a4747fd546cc6d8be38e75264c60d5..10db2b161b324544939f36599d8696b90663cbed 100644 (file)
@@ -19,12 +19,12 @@ from ansible.module_utils.basic import AnsibleModule
 try:
     from ansible.module_utils.ca_common import is_containerized, \
                                                exec_command, \
-                                               generate_ceph_cmd, \
+                                               generate_cmd, \
                                                exit_module
 except ImportError:
     from module_utils.ca_common import is_containerized, \
                                        exec_command, \
-                                       generate_ceph_cmd, \
+                                       generate_cmd, \
                                        exit_module
 
 import datetime
@@ -119,10 +119,10 @@ def create_fs(module, container_image=None):
 
     args = ['new', name, metadata, data]
 
-    cmd = generate_ceph_cmd(sub_cmd=['fs'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['fs'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -137,10 +137,10 @@ def get_fs(module, container_image=None):
 
     args = ['get', name, '--format=json']
 
-    cmd = generate_ceph_cmd(sub_cmd=['fs'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['fs'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -155,10 +155,10 @@ def remove_fs(module, container_image=None):
 
     args = ['rm', name, '--yes-i-really-mean-it']
 
-    cmd = generate_ceph_cmd(sub_cmd=['fs'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['fs'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -173,10 +173,10 @@ def fail_fs(module, container_image=None):
 
     args = ['fail', name]
 
-    cmd = generate_ceph_cmd(sub_cmd=['fs'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['fs'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
@@ -192,10 +192,10 @@ def set_fs(module, container_image=None):
 
     args = ['set', name, 'max_mds', str(max_mds)]
 
-    cmd = generate_ceph_cmd(sub_cmd=['fs'],
-                            args=args,
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['fs'],
+                       args=args,
+                       cluster=cluster,
+                       container_image=container_image)
 
     return cmd
 
index 8372b01752095ad0319708df2052a0c32f9b8d6a..612a8bcb09fd96f85dfa2127e83cf129ca8d213e 100644 (file)
@@ -19,12 +19,12 @@ __metaclass__ = type
 
 from ansible.module_utils.basic import AnsibleModule
 try:
-    from ansible.module_utils.ca_common import generate_ceph_cmd, \
+    from ansible.module_utils.ca_common import generate_cmd, \
                                                is_containerized, \
                                                container_exec, \
                                                fatal
 except ImportError:
-    from module_utils.ca_common import generate_ceph_cmd, \
+    from module_utils.ca_common import generate_cmd, \
                                        is_containerized, \
                                        container_exec, \
                                        fatal
@@ -304,12 +304,12 @@ def create_key(module, result, cluster, user, user_key, name, secret, caps, impo
         cluster, name, secret, caps, dest, container_image))
 
     if import_key or user != 'client.admin':
-        cmd_list.append(generate_ceph_cmd(sub_cmd=['auth'],
-                                          args=args,
-                                          cluster=cluster,
-                                          user=user,
-                                          user_key=user_key,
-                                          container_image=container_image))
+        cmd_list.append(generate_cmd(sub_cmd=['auth'],
+                                     args=args,
+                                     cluster=cluster,
+                                     user=user,
+                                     user_key=user_key,
+                                     container_image=container_image))
 
     return cmd_list
 
@@ -326,12 +326,12 @@ def delete_key(cluster, user, user_key, name, container_image=None):
         name,
     ]
 
-    cmd_list.append(generate_ceph_cmd(sub_cmd=['auth'],
-                                      args=args,
-                                      cluster=cluster,
-                                      user=user,
-                                      user_key=user_key,
-                                      container_image=container_image))
+    cmd_list.append(generate_cmd(sub_cmd=['auth'],
+                                 args=args,
+                                 cluster=cluster,
+                                 user=user,
+                                 user_key=user_key,
+                                 container_image=container_image))
 
     return cmd_list
 
@@ -350,12 +350,12 @@ def get_key(cluster, user, user_key, name, dest, container_image=None):
         dest,
     ]
 
-    cmd_list.append(generate_ceph_cmd(sub_cmd=['auth'],
-                                      args=args,
-                                      cluster=cluster,
-                                      user=user,
-                                      user_key=user_key,
-                                      container_image=container_image))
+    cmd_list.append(generate_cmd(sub_cmd=['auth'],
+                                 args=args,
+                                 cluster=cluster,
+                                 user=user,
+                                 user_key=user_key,
+                                 container_image=container_image))
 
     return cmd_list
 
@@ -374,12 +374,12 @@ def info_key(cluster, name, user, user_key, output_format, container_image=None)
         output_format,
     ]
 
-    cmd_list.append(generate_ceph_cmd(sub_cmd=['auth'],
-                                      args=args,
-                                      cluster=cluster,
-                                      user=user,
-                                      user_key=user_key,
-                                      container_image=container_image))
+    cmd_list.append(generate_cmd(sub_cmd=['auth'],
+                                 args=args,
+                                 cluster=cluster,
+                                 user=user,
+                                 user_key=user_key,
+                                 container_image=container_image))
 
     return cmd_list
 
@@ -397,12 +397,12 @@ def list_keys(cluster, user, user_key, container_image=None):
         'json',
     ]
 
-    cmd_list.append(generate_ceph_cmd(sub_cmd=['auth'],
-                                      args=args,
-                                      cluster=cluster,
-                                      user=user,
-                                      user_key=user_key,
-                                      container_image=container_image))
+    cmd_list.append(generate_cmd(sub_cmd=['auth'],
+                                 args=args,
+                                 cluster=cluster,
+                                 user=user,
+                                 user_key=user_key,
+                                 container_image=container_image))
 
     return cmd_list
 
index 1971159d3f912c379e48b187e318b814307b9418..0c2d177e414aa238ae8b1d150f895ce9496be870 100644 (file)
@@ -18,11 +18,11 @@ __metaclass__ = type
 from ansible.module_utils.basic import AnsibleModule
 try:
     from ansible.module_utils.ca_common import exit_module, \
-                                               generate_ceph_cmd, \
+                                               generate_cmd, \
                                                is_containerized
 except ImportError:
     from module_utils.ca_common import exit_module, \
-                                       generate_ceph_cmd, \
+                                       generate_cmd, \
                                        is_containerized
 import datetime
 
@@ -97,10 +97,10 @@ def main():
 
     container_image = is_containerized()
 
-    cmd = generate_ceph_cmd(['mgr', 'module'],
-                            [state, name],
-                            cluster=cluster,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['mgr', 'module'],
+                       args=[state, name],
+                       cluster=cluster,
+                       container_image=container_image)
 
     if module.check_mode:
         exit_module(
index 63e15010d75626664f91f29e950ccffb3c93908d..0eadc938d55ab45504a095b66105e02363bb1d07 100644 (file)
@@ -17,9 +17,9 @@ __metaclass__ = type
 
 from ansible.module_utils.basic import AnsibleModule
 try:
-    from ansible.module_utils.ca_common import exit_module, generate_ceph_cmd, is_containerized  # noqa: E501
+    from ansible.module_utils.ca_common import exit_module, generate_cmd, is_containerized  # noqa: E501
 except ImportError:
-    from module_utils.ca_common import exit_module, generate_ceph_cmd, is_containerized  # noqa: E501
+    from module_utils.ca_common import exit_module, generate_cmd, is_containerized  # noqa: E501
 import datetime
 
 
@@ -111,7 +111,7 @@ def main():
 
     container_image = is_containerized()
 
-    cmd = generate_ceph_cmd(['osd', state], ids, cluster=cluster, container_image=container_image)  # noqa: E501
+    cmd = generate_cmd(sub_cmd=['osd', state], args=ids, cluster=cluster, container_image=container_image)  # noqa: E501
 
     if state in ['destroy', 'purge']:
         cmd.append('--yes-i-really-mean-it')
index 1e6fe961192714f48d401125c13fa9f76c73f5d0..ef21eaf189a5899a98952d19b50fd2f7c12dc27f 100644 (file)
@@ -18,11 +18,11 @@ __metaclass__ = type
 from ansible.module_utils.basic import AnsibleModule
 try:
     from ansible.module_utils.ca_common import exit_module, \
-                                               generate_ceph_cmd, \
+                                               generate_cmd, \
                                                is_containerized
 except ImportError:
     from module_utils.ca_common import exit_module, \
-                                       generate_ceph_cmd, \
+                                       generate_cmd, \
                                        is_containerized
 import datetime
 
@@ -99,9 +99,9 @@ def main():
     container_image = is_containerized()
 
     if state == 'present':
-        cmd = generate_ceph_cmd(['osd', 'set'], [name], cluster=cluster, container_image=container_image)  # noqa: E501
+        cmd = generate_cmd(sub_cmd=['osd', 'set'], args=[name], cluster=cluster, container_image=container_image)  # noqa: E501
     else:
-        cmd = generate_ceph_cmd(['osd', 'unset'], [name], cluster=cluster, container_image=container_image)  # noqa: E501
+        cmd = generate_cmd(sub_cmd=['osd', 'unset'], args=[name], cluster=cluster, container_image=container_image)  # noqa: E501
 
     if module.check_mode:
         exit_module(
index 417236289c48e4e4886f1c3213aac88f164b9268..9451a71c398ace7ace0f610f01961e349e21e831 100644 (file)
@@ -19,14 +19,14 @@ __metaclass__ = type
 
 from ansible.module_utils.basic import AnsibleModule
 try:
-    from ansible.module_utils.ca_common import generate_ceph_cmd, \
-                                               pre_generate_ceph_cmd, \
+    from ansible.module_utils.ca_common import generate_cmd, \
+                                               pre_generate_cmd, \
                                                is_containerized, \
                                                exec_command, \
                                                exit_module
 except ImportError:
-    from module_utils.ca_common import generate_ceph_cmd, \
-                                       pre_generate_ceph_cmd, \
+    from module_utils.ca_common import generate_cmd, \
+                                       pre_generate_cmd, \
                                        is_containerized, \
                                        exec_command, \
                                        exit_module
@@ -167,12 +167,12 @@ def check_pool_exist(cluster,
 
     args = ['stats', name, '-f', output_format]
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                            args=args,
-                            cluster=cluster,
-                            user=user,
-                            user_key=user_key,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
 
     return cmd
 
@@ -182,7 +182,7 @@ def generate_get_config_cmd(param,
                             user,
                             user_key,
                             container_image=None):
-    _cmd = pre_generate_ceph_cmd(container_image=container_image)
+    _cmd = pre_generate_cmd('ceph', container_image=container_image)
     args = [
         '-n',
         user,
@@ -211,12 +211,12 @@ def get_application_pool(cluster,
 
     args = ['application', 'get', name, '-f', output_format]
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                            args=args,
-                            cluster=cluster,
-                            user=user,
-                            user_key=user_key,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
 
     return cmd
 
@@ -233,12 +233,34 @@ def enable_application_pool(cluster,
 
     args = ['application', 'enable', name, application]
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                            args=args,
-                            cluster=cluster,
-                            user=user,
-                            user_key=user_key,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
+
+    return cmd
+
+
+def init_rbd_pool(cluster,
+                  name,
+                  user,
+                  user_key,
+                  container_image=None):
+    '''
+    Initialize a rbd pool
+    '''
+
+    args = [name]
+
+    cmd = generate_cmd(cmd='rbd',
+                       sub_cmd=['pool', 'init'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
 
     return cmd
 
@@ -256,12 +278,12 @@ def disable_application_pool(cluster,
     args = ['application', 'disable', name,
             application, '--yes-i-really-mean-it']
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                            args=args,
-                            cluster=cluster,
-                            user=user,
-                            user_key=user_key,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
 
     return cmd
 
@@ -279,12 +301,12 @@ def get_pool_details(module,
 
     args = ['ls', 'detail', '-f', output_format]
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                            args=args,
-                            cluster=cluster,
-                            user=user,
-                            user_key=user_key,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
 
     rc, cmd, out, err = exec_command(module, cmd)
 
@@ -368,18 +390,17 @@ def list_pools(cluster,
 
     args.extend(['-f', output_format])
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                            args=args,
-                            cluster=cluster,
-                            user=user,
-                            user_key=user_key,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
 
     return cmd
 
 
 def create_pool(cluster,
-                name,
                 user,
                 user_key,
                 user_pool_config,
@@ -423,12 +444,12 @@ def create_pool(cluster,
                      '--autoscale-mode',
                      user_pool_config['pg_autoscale_mode']['value']])
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                            args=args,
-                            cluster=cluster,
-                            user=user,
-                            user_key=user_key,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
 
     return cmd
 
@@ -440,12 +461,12 @@ def remove_pool(cluster, name, user, user_key, container_image=None):
 
     args = ['rm', name, name, '--yes-i-really-really-mean-it']
 
-    cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                            args=args,
-                            cluster=cluster,
-                            user=user,
-                            user_key=user_key,
-                            container_image=container_image)
+    cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                       args=args,
+                       cluster=cluster,
+                       user=user,
+                       user_key=user_key,
+                       container_image=container_image)
 
     return cmd
 
@@ -465,12 +486,12 @@ def update_pool(module, cluster, name,
                     delta[key]['cli_set_opt'],
                     delta[key]['value']]
 
-            cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
-                                    args=args,
-                                    cluster=cluster,
-                                    user=user,
-                                    user_key=user_key,
-                                    container_image=container_image)
+            cmd = generate_cmd(sub_cmd=['osd', 'pool'],
+                               args=args,
+                               cluster=cluster,
+                               user=user,
+                               user_key=user_key,
+                               container_image=container_image)
 
             rc, cmd, out, err = exec_command(module, cmd)
             if rc != 0:
@@ -634,7 +655,6 @@ def run_module():
         else:
             rc, cmd, out, err = exec_command(module,
                                              create_pool(cluster,
-                                                         name,
                                                          user,
                                                          user_key,
                                                          user_pool_config=user_pool_config,  # noqa: E501
@@ -647,6 +667,13 @@ def run_module():
                                                                    user,
                                                                    user_key,
                                                                    container_image=container_image))  # noqa: E501
+                if rc == 0 and user_pool_config['application']['value'] == 'rbd':  # noqa: E501
+                    rc, cmd, out, err = exec_command(module,
+                                                     init_rbd_pool(cluster,
+                                                                   user_pool_config['pool_name']['value'],  # noqa: E501
+                                                                   user,
+                                                                   user_key,
+                                                                   container_image=container_image))  # noqa: E501
             if user_pool_config['min_size']['value']:
                 # not implemented yet
                 pass
index 7bd70ce1620abbfa8ae14d26ee43a8f2133729d4..f478b75e59a0172e3951c26ca8f43c574782684b 100644 (file)
@@ -2,15 +2,22 @@ import os
 import datetime
 
 
-def generate_ceph_cmd(sub_cmd, args, user_key=None, cluster='ceph', user='client.admin', container_image=None, interactive=False):
+def generate_cmd(cmd='ceph',
+                 sub_cmd=None,
+                 args=None,
+                 user_key=None,
+                 cluster='ceph',
+                 user='client.admin',
+                 container_image=None,
+                 interactive=False):
     '''
     Generate 'ceph' command line to execute
     '''
 
-    if not user_key:
+    if user_key is None:
         user_key = '/etc/ceph/{}.{}.keyring'.format(cluster, user)
 
-    cmd = pre_generate_ceph_cmd(container_image=container_image, interactive=interactive)
+    cmd = pre_generate_cmd(cmd, container_image=container_image, interactive=interactive)  # noqa: E501
 
     base_cmd = [
         '-n',
@@ -20,8 +27,11 @@ def generate_ceph_cmd(sub_cmd, args, user_key=None, cluster='ceph', user='client
         '--cluster',
         cluster
     ]
-    base_cmd.extend(sub_cmd)
-    cmd.extend(base_cmd + args)
+
+    if sub_cmd is not None:
+        base_cmd.extend(sub_cmd)
+
+    cmd.extend(base_cmd) if args is None else cmd.extend(base_cmd + args)
 
     return cmd
 
@@ -59,14 +69,14 @@ def is_containerized():
     return container_image
 
 
-def pre_generate_ceph_cmd(container_image=None, interactive=False):
+def pre_generate_cmd(cmd, container_image=None, interactive=False):
     '''
-    Generate ceph prefix comaand
+    Generate ceph prefix command
     '''
     if container_image:
-        cmd = container_exec('ceph', container_image, interactive=interactive)
+        cmd = container_exec(cmd, container_image, interactive=interactive)
     else:
-        cmd = ['ceph']
+        cmd = [cmd]
 
     return cmd
 
@@ -84,7 +94,7 @@ def exec_command(module, cmd, stdin=None):
     return rc, cmd, out, err
 
 
-def exit_module(module, out, rc, cmd, err, startd, changed=False, diff=dict(before="", after="")):
+def exit_module(module, out, rc, cmd, err, startd, changed=False, diff=dict(before="", after="")):  # noqa: E501
     endd = datetime.datetime.now()
     delta = endd - startd
 
index 3a7b4fd3dbf48670eb12ba65cf9eb55b420e6887..9a86340239266df05f7f97004b6a17dd74c7e2c1 100644 (file)
@@ -62,7 +62,7 @@ class TestCephKeyModule(object):
             'auth',
             'arg'
         ]
-        result = ceph_key.generate_ceph_cmd(
+        result = ceph_key.generate_cmd(
             sub_cmd=['auth'],
             args=fake_args,
             cluster=fake_cluster,
@@ -75,7 +75,7 @@ class TestCephKeyModule(object):
         fake_args = ['arg']
         fake_user = "fake-user"
         fake_user_key = "/tmp/my-key"
-        fake_container_image = "quay.ceph.io/ceph-ci/daemon:latest-luminous"
+        fake_container_image = "quay.io/ceph/daemon:latest-luminous"
         expected_command_list = ['docker',
                                  'run',
                                  '--rm',
@@ -93,7 +93,7 @@ class TestCephKeyModule(object):
                                  fake_cluster,
                                  'auth',
                                  'arg']
-        result = ceph_key.generate_ceph_cmd(
+        result = ceph_key.generate_cmd(
             sub_cmd=['auth'],
             args=fake_args,
             cluster=fake_cluster,
index 2ce40560fc5235511b4bf633340ceebce055e7e2..f072c26115cabc7c2f926bb3de5796567c3dbbc6 100644 (file)
@@ -2,6 +2,7 @@ import os
 import sys
 import ceph_pool
 from mock.mock import patch
+import pytest
 
 sys.path.append('./library')
 fake_user = 'client.admin'
@@ -282,6 +283,53 @@ class TestCephPoolModule(object):
 
         assert cmd == expected_command
 
+    @pytest.mark.parametrize("container_image", [None, fake_container_image_name])
+    def test_init_rbd_pool(self, container_image):
+        if container_image:
+            expected_command = [
+                    'podman',
+                    'run',
+                    '--rm',
+                    '--net=host',
+                    '-v',
+                    '/etc/ceph:/etc/ceph:z',
+                    '-v',
+                    '/var/lib/ceph/:/var/lib/ceph/:z',
+                    '-v',
+                    '/var/log/ceph/:/var/log/ceph/:z',
+                    '--entrypoint=rbd',
+                    fake_container_image_name,
+                    '-n',
+                    fake_user,
+                    '-k',
+                    fake_user_key,
+                    '--cluster',
+                    fake_cluster_name,
+                    'pool',
+                    'init',
+                    self.fake_user_pool_config['pool_name']['value']
+            ]
+        else:
+            expected_command = [
+                    'rbd',
+                    '-n',
+                    fake_user,
+                    '-k',
+                    fake_user_key,
+                    '--cluster',
+                    fake_cluster_name,
+                    'pool',
+                    'init',
+                    self.fake_user_pool_config['pool_name']['value']
+            ]
+
+        cmd = ceph_pool.init_rbd_pool(fake_cluster_name,
+                                      self.fake_user_pool_config['pool_name']['value'],
+                                      fake_user, fake_user_key,
+                                      container_image)
+
+        assert cmd == expected_command
+
     def test_disable_application_pool(self):
         expected_command = [
                 'podman',
@@ -442,7 +490,6 @@ class TestCephPoolModule(object):
         ]
 
         cmd = ceph_pool.create_pool(fake_cluster_name,
-                                    self.fake_user_pool_config['pool_name']['value'],
                                     fake_user, fake_user_key, self.fake_user_pool_config,
                                     container_image=fake_container_image_name)
 
@@ -489,7 +536,6 @@ class TestCephPoolModule(object):
         ]
 
         cmd = ceph_pool.create_pool(fake_cluster_name,
-                                    self.fake_user_pool_config['pool_name']['value'],
                                     fake_user, fake_user_key,
                                     self.fake_user_pool_config,
                                     container_image=fake_container_image_name)
@@ -535,7 +581,6 @@ class TestCephPoolModule(object):
         ]
 
         cmd = ceph_pool.create_pool(fake_cluster_name,
-                                    self.fake_user_pool_config['pool_name']['value'],
                                     fake_user, fake_user_key, self.fake_user_pool_config,
                                     container_image=fake_container_image_name)
 
@@ -583,7 +628,6 @@ class TestCephPoolModule(object):
         ]
 
         cmd = ceph_pool.create_pool(fake_cluster_name,
-                                    self.fake_user_pool_config['pool_name']['value'],
                                     fake_user, fake_user_key, self.fake_user_pool_config,
                                     container_image=fake_container_image_name)
 
index 2d0ea5ccf2cd49b46a606423ffcd38ab1bdc75e2..e562bae2f69116557cc66744cfcbe95225609ed8 100644 (file)
@@ -38,17 +38,17 @@ class TestCommon(object):
 
     @pytest.mark.parametrize('image', [None, fake_container_image])
     @patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': fake_container_binary})
-    def test_pre_generate_ceph_cmd(self, image):
+    def test_pre_generate_cmd(self, image):
         if image:
             expected_cmd = self.fake_container_cmd
         else:
             expected_cmd = [self.fake_binary]
 
-        assert ca_common.pre_generate_ceph_cmd(image) == expected_cmd
+        assert ca_common.pre_generate_cmd(self.fake_binary, image) == expected_cmd  # noqa: E501
 
     @pytest.mark.parametrize('image', [None, fake_container_image])
     @patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': fake_container_binary})
-    def test_generate_ceph_cmd(self, image):
+    def test_generate_cmd(self, image):
         sub_cmd = ['osd', 'pool']
         args = ['create', 'foo']
         if image:
@@ -64,11 +64,11 @@ class TestCommon(object):
             'osd', 'pool',
             'create', 'foo'
         ])
-        assert ca_common.generate_ceph_cmd(sub_cmd, args, cluster=self.fake_cluster, container_image=image) == expected_cmd
+        assert ca_common.generate_cmd(sub_cmd=sub_cmd, args=args, cluster=self.fake_cluster, container_image=image) == expected_cmd  # noqa: E501
 
     @pytest.mark.parametrize('image', [None, fake_container_image])
     @patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': fake_container_binary})
-    def test_generate_ceph_cmd_different_cluster_name(self, image):
+    def test_generate_cmd_different_cluster_name(self, image):
         sub_cmd = ['osd', 'pool']
         args = ['create', 'foo']
         if image:
@@ -84,12 +84,12 @@ class TestCommon(object):
             'osd', 'pool',
             'create', 'foo'
         ])
-        result = ca_common.generate_ceph_cmd(sub_cmd, args, cluster='foo', container_image=image)
+        result = ca_common.generate_cmd(sub_cmd=sub_cmd, args=args, cluster='foo', container_image=image)  # noqa: E501
         assert result == expected_cmd
 
     @pytest.mark.parametrize('image', [None, fake_container_image])
     @patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': fake_container_binary})
-    def test_generate_ceph_cmd_different_cluster_name_and_user(self, image):
+    def test_generate_cmd_different_cluster_name_and_user(self, image):
         sub_cmd = ['osd', 'pool']
         args = ['create', 'foo']
         if image:
@@ -105,12 +105,12 @@ class TestCommon(object):
             'osd', 'pool',
             'create', 'foo'
         ])
-        result = ca_common.generate_ceph_cmd(sub_cmd, args, cluster='foo', user='client.foo', container_image=image)
+        result = ca_common.generate_cmd(sub_cmd=sub_cmd, args=args, cluster='foo', user='client.foo', container_image=image)  # noqa: E501
         assert result == expected_cmd
 
     @pytest.mark.parametrize('image', [None, fake_container_image])
     @patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': fake_container_binary})
-    def test_generate_ceph_cmd_different_user(self, image):
+    def test_generate_cmd_different_user(self, image):
         sub_cmd = ['osd', 'pool']
         args = ['create', 'foo']
         if image:
@@ -126,7 +126,7 @@ class TestCommon(object):
             'osd', 'pool',
             'create', 'foo'
         ])
-        result = ca_common.generate_ceph_cmd(sub_cmd, args, user='client.foo', container_image=image)
+        result = ca_common.generate_cmd(sub_cmd=sub_cmd, args=args, user='client.foo', container_image=image)  # noqa: E501
         assert result == expected_cmd
 
     @pytest.mark.parametrize('stdin', [None, 'foo'])
@@ -137,7 +137,7 @@ class TestCommon(object):
         stdout = 'ceph version 1.2.3'
         fake_module.run_command.return_value = 0, stdout, stderr
         expected_cmd = [self.fake_binary, '--version']
-        _rc, _cmd, _out, _err = ca_common.exec_command(fake_module, expected_cmd, stdin=stdin)
+        _rc, _cmd, _out, _err = ca_common.exec_command(fake_module, expected_cmd, stdin=stdin)  # noqa: E501
         assert _rc == rc
         assert _cmd == expected_cmd
         assert _err == stderr