Skip to content

Commit

Permalink
module_utils: refactor
Browse files Browse the repository at this point in the history
- update `generate_ceph_cmd()` so `user_key` is automatically built from
`cluster` and `user` params.

- update and add testing.

Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
  • Loading branch information
guits committed Nov 26, 2020
1 parent 926a1b2 commit 67467fd
Show file tree
Hide file tree
Showing 6 changed files with 124 additions and 56 deletions.
10 changes: 5 additions & 5 deletions library/ceph_dashboard_user.py
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ def create_user(module, container_image=None):

args = ['ac-user-create', name, password]

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['dashboard'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['dashboard'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand All @@ -141,7 +141,7 @@ def set_roles(module, container_image=None):

args.extend(roles)

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['dashboard'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['dashboard'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand All @@ -157,7 +157,7 @@ def set_password(module, container_image=None):

args = ['ac-user-set-password', name, password]

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['dashboard'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['dashboard'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand All @@ -172,7 +172,7 @@ def get_user(module, container_image=None):

args = ['ac-user-show', name, '--format=json']

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['dashboard'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['dashboard'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand All @@ -187,7 +187,7 @@ def remove_user(module, container_image=None):

args = ['ac-user-delete', name]

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['dashboard'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['dashboard'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand Down
12 changes: 6 additions & 6 deletions library/ceph_ec_profile.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,9 +113,9 @@ def get_profile(module, name, cluster='ceph', container_image=None):

args = ['get', name, '--format=json']

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'erasure-code-profile'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'erasure-code-profile'],
args=args,
cluster=cluster,
container_image=container_image)

return cmd
Expand All @@ -132,9 +132,9 @@ def create_profile(module, name, k, m, stripe_unit, cluster='ceph', force=False,
if force:
args.append('--force')

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'erasure-code-profile'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'erasure-code-profile'],
args=args,
cluster=cluster,
container_image=container_image)

return cmd
Expand All @@ -147,9 +147,9 @@ def delete_profile(module, name, cluster='ceph', container_image=None):

args = ['rm', name]

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'erasure-code-profile'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'erasure-code-profile'],
args=args,
cluster=cluster,
container_image=container_image)

return cmd
Expand Down
10 changes: 5 additions & 5 deletions library/ceph_fs.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ def create_fs(module, container_image=None):

args = ['new', name, metadata, data]

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['fs'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['fs'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand All @@ -134,7 +134,7 @@ def get_fs(module, container_image=None):

args = ['get', name, '--format=json']

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['fs'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['fs'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand All @@ -149,7 +149,7 @@ def remove_fs(module, container_image=None):

args = ['rm', name, '--yes-i-really-mean-it']

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['fs'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['fs'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand All @@ -164,7 +164,7 @@ def fail_fs(module, container_image=None):

args = ['fail', name]

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['fs'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['fs'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand All @@ -180,7 +180,7 @@ def set_fs(module, container_image=None):

args = ['set', name, 'max_mds', str(max_mds)]

cmd = generate_ceph_cmd(cluster=cluster, sub_cmd=['fs'], args=args, container_image=container_image)
cmd = generate_ceph_cmd(sub_cmd=['fs'], args=args, cluster=cluster, container_image=container_image)

return cmd

Expand Down
36 changes: 18 additions & 18 deletions library/ceph_pool.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,9 +167,9 @@ def check_pool_exist(cluster,

args = ['stats', name, '-f', output_format]

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand Down Expand Up @@ -211,9 +211,9 @@ def get_application_pool(cluster,

args = ['application', 'get', name, '-f', output_format]

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand All @@ -233,9 +233,9 @@ def enable_application_pool(cluster,

args = ['application', 'enable', name, application]

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand All @@ -256,9 +256,9 @@ def disable_application_pool(cluster,
args = ['application', 'disable', name,
application, '--yes-i-really-mean-it']

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand All @@ -279,9 +279,9 @@ def get_pool_details(module,

args = ['ls', 'detail', '-f', output_format]

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand Down Expand Up @@ -367,9 +367,9 @@ def list_pools(cluster,

args.extend(['-f', output_format])

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand Down Expand Up @@ -418,9 +418,9 @@ def create_pool(cluster,
'--autoscale-mode',
user_pool_config['pg_autoscale_mode']['value']])

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand All @@ -435,9 +435,9 @@ 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(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand All @@ -460,9 +460,9 @@ def update_pool(module, cluster, name,
delta[key]['cli_set_opt'],
delta[key]['value']]

cmd = generate_ceph_cmd(cluster=cluster,
sub_cmd=['osd', 'pool'],
cmd = generate_ceph_cmd(sub_cmd=['osd', 'pool'],
args=args,
cluster=cluster,
user=user,
user_key=user_key,
container_image=container_image)
Expand Down
5 changes: 4 additions & 1 deletion module_utils/ca_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,14 @@
import datetime


def generate_ceph_cmd(cluster, sub_cmd, args, user='client.admin', user_key='/etc/ceph/ceph.client.admin.keyring', container_image=None):
def generate_ceph_cmd(sub_cmd, args, user_key=None, cluster='ceph', user='client.admin', container_image=None):
'''
Generate 'ceph' command line to execute
'''

if not user_key:
user_key = '/etc/ceph/{}.{}.keyring'.format(cluster, user)

cmd = pre_generate_ceph_cmd(container_image=container_image)

base_cmd = [
Expand Down
107 changes: 86 additions & 21 deletions tests/library/test_ca_common.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,29 +3,31 @@
import ca_common
import pytest

fake_binary = 'ceph'
fake_cluster = 'ceph'
fake_container_binary = 'podman'
fake_container_image = 'docker.io/ceph/daemon:latest'
fake_container_cmd = [
fake_container_binary,
'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=' + fake_binary,
fake_container_image
]


class TestCommon(object):

def setup_method(self):
self.fake_binary = 'ceph'
self.fake_cluster = 'ceph'
self.fake_container_cmd = [
fake_container_binary,
'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=' + self.fake_binary,
fake_container_image
]

@patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': fake_container_binary})
def test_container_exec(self):
cmd = ca_common.container_exec(fake_binary, fake_container_image)
assert cmd == fake_container_cmd
cmd = ca_common.container_exec(self.fake_binary, fake_container_image)
assert cmd == self.fake_container_cmd

def test_not_is_containerized(self):
assert ca_common.is_containerized() is None
Expand All @@ -38,9 +40,9 @@ def test_is_containerized(self):
@patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': fake_container_binary})
def test_pre_generate_ceph_cmd(self, image):
if image:
expected_cmd = fake_container_cmd
expected_cmd = self.fake_container_cmd
else:
expected_cmd = [fake_binary]
expected_cmd = [self.fake_binary]

assert ca_common.pre_generate_ceph_cmd(image) == expected_cmd

Expand All @@ -50,16 +52,79 @@ def test_generate_ceph_cmd(self, image):
sub_cmd = ['osd', 'pool']
args = ['create', 'foo']
if image:
expected_cmd = fake_container_cmd
expected_cmd = self.fake_container_cmd
else:
expected_cmd = [fake_binary]
expected_cmd = [self.fake_binary]

expected_cmd.extend([
'-n', 'client.admin',
'-k', '/etc/ceph/ceph.client.admin.keyring',
'--cluster',
fake_cluster,
self.fake_cluster,
'osd', 'pool',
'create', 'foo'
])
assert ca_common.generate_ceph_cmd(sub_cmd, args, cluster=self.fake_cluster, container_image=image) == 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(self, image):
sub_cmd = ['osd', 'pool']
args = ['create', 'foo']
if image:
expected_cmd = self.fake_container_cmd
else:
expected_cmd = [self.fake_binary]

expected_cmd.extend([
'-n', 'client.admin',
'-k', '/etc/ceph/foo.client.admin.keyring',
'--cluster',
'foo',
'osd', 'pool',
'create', 'foo'
])
result = ca_common.generate_ceph_cmd(sub_cmd, args, cluster='foo', container_image=image)
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):
sub_cmd = ['osd', 'pool']
args = ['create', 'foo']
if image:
expected_cmd = self.fake_container_cmd
else:
expected_cmd = [self.fake_binary]

expected_cmd.extend([
'-n', 'client.foo',
'-k', '/etc/ceph/foo.client.foo.keyring',
'--cluster',
'foo',
'osd', 'pool',
'create', 'foo'
])
result = ca_common.generate_ceph_cmd(sub_cmd, args, cluster='foo', user='client.foo', container_image=image)
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):
sub_cmd = ['osd', 'pool']
args = ['create', 'foo']
if image:
expected_cmd = self.fake_container_cmd
else:
expected_cmd = [self.fake_binary]

expected_cmd.extend([
'-n', 'client.foo',
'-k', '/etc/ceph/ceph.client.foo.keyring',
'--cluster',
'ceph',
'osd', 'pool',
'create', 'foo'
])
assert ca_common.generate_ceph_cmd(fake_cluster, sub_cmd, args, container_image=image) == expected_cmd
result = ca_common.generate_ceph_cmd(sub_cmd, args, user='client.foo', container_image=image)
assert result == expected_cmd

0 comments on commit 67467fd

Please sign in to comment.