return caps_cli
-def generate_ceph_cmd(cluster, args, user, user_key_path, container_image=None):
+def generate_ceph_cmd(cluster, args, user, user_key_path, container_image=None, no_log=False):
'''
Generate 'ceph' command line to execute
'''
if container_image:
binary = 'ceph'
cmd = container_exec(
- binary, container_image)
+ binary, container_image, no_log=no_log)
else:
binary = ['ceph']
cmd = binary
return cmd_list
-def list_keys(cluster, user, user_key_path, container_image=None):
+def list_keys(cluster, user, user_key_path, container_image=None, no_log=False):
'''
List all CephX keys
'''
]
cmd_list.append(generate_ceph_cmd(
- cluster, args, user, user_key_path, container_image))
+ cluster, args, user, user_key_path, container_image, no_log=no_log))
return cmd_list
keyring_filename = cluster + "-" + hostname + "/keyring"
user_key_path = os.path.join("/var/lib/ceph/mon/", keyring_filename)
rc, cmd, out, err = exec_commands(
- module, list_keys(cluster, user, user_key_path, container_image))
+ module, list_keys(cluster, user, user_key_path, container_image, no_log=True))
if rc != 0:
result["stdout"] = "failed to retrieve ceph keys"
result["sdterr"] = err
return cmd
-def container_exec(binary, container_image):
+def container_exec(binary, container_image, no_log=False):
'''
Build the docker CLI to run a command inside a container
'''
'--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=' + binary, container_image]
+ '-v', '/var/log/ceph/:/var/log/ceph/:z'
+ ]
+
+ if no_log:
+ command_exec.append('--log-drive=none')
+
+ command_exec.extend(['--entrypoint=' + binary, container_image])
+
return command_exec
with pytest.raises(ca_test_common.AnsibleExitJson) as result:
ceph_key.run_module()
assert result.value.args[0]['stdout'] == fake_secret.decode()
+
+ @mock.patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': 'podman'})
+ @mock.patch.dict(os.environ, {'CEPH_CONTAINER_IMAGE': 'docker.io/ceph/daemon:latest'})
+ @mock.patch('ansible.module_utils.basic.AnsibleModule.fail_json')
+ @mock.patch('ceph_key.exec_commands')
+ def test_state_fetch_keys(self, m_exec_commands, m_fail_json):
+ output_format = "plain"
+ ca_test_common.set_module_args({"state": "fetch_initial_keys",
+ "cluster": "ceph",
+ "name": "client.admin",
+ "output_format": output_format})
+
+ m_exec_commands.return_value = (0,
+ ['ceph', 'auth', 'get', 'client.admin', '-f', output_format],
+ '[{"entity":"client.admin","key":"AQC1tw5fF156GhAAoJCvHGX/jl/k7/N4VZm8iQ==","caps":{"mds":"allow *","mgr":"allow *","mon":"allow *","osd":"allow *"}}]', # noqa: E501
+ 'exported keyring for client.admin')
+
+
+ m_fail_json.side_effect = ca_test_common.fail_json
+
+ with pytest.raises(ca_test_common.AnsibleFailJson) as result:
+ ceph_key.run_module()
+
+ import pdb; pdb.set_trace()
+ result = result.value.args[0]