mirror of https://github.com/ceph/ceph-ansible.git
Do not pass NoneType as argument to ceph_crush_rule
With ansible-core 2.15 it is not possible to pass argument of unexpected type, as otherwise module will fail with: `'None' is not a string and conversion is not allowed` With that we want to only get all existing crush rules, so we can simply supply an empty string as a name argument, which would satisfy requirements and have same behaviour for previous ansible versions. Alternative approach would be to stop making `name` as a required argument to the module and use empty string as default value when info state is used. Signed-off-by: Dmitriy Rabotyagov <noonedeadpunk@gmail.com>pull/7470/head
parent
490ca79ccc
commit
b610297554
|
@ -46,7 +46,8 @@ description:
|
|||
options:
|
||||
name:
|
||||
description:
|
||||
- name of the Ceph Crush rule.
|
||||
- name of the Ceph Crush rule. If state is 'info' - empty string
|
||||
can be provided as a value to get all crush rules
|
||||
required: true
|
||||
cluster:
|
||||
description:
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
---
|
||||
- name: get current default crush rule details
|
||||
ceph_crush_rule:
|
||||
name: null
|
||||
name: ""
|
||||
cluster: "{{ cluster }}"
|
||||
state: info
|
||||
environment:
|
||||
|
|
|
@ -396,6 +396,31 @@ class TestCephCrushRuleModule(object):
|
|||
assert result['stderr'] == stderr
|
||||
assert result['stdout'] == stdout
|
||||
|
||||
@patch('ansible.module_utils.basic.AnsibleModule.exit_json')
|
||||
@patch('ansible.module_utils.basic.AnsibleModule.run_command')
|
||||
def test_get_all_rules(self, m_run_command, m_exit_json):
|
||||
ca_test_common.set_module_args({
|
||||
'name': str(),
|
||||
'state': 'info'
|
||||
})
|
||||
m_exit_json.side_effect = ca_test_common.exit_json
|
||||
rc = 0
|
||||
stderr = ''
|
||||
stdout = '{{"rule_name":"{}","steps":[{{"item_name":"{}"}},{{"type":"{}"}}]}}'.format(fake_name, fake_bucket_root, fake_bucket_type)
|
||||
m_run_command.return_value = rc, stdout, stderr
|
||||
|
||||
with pytest.raises(ca_test_common.AnsibleExitJson) as result:
|
||||
ceph_crush_rule.main()
|
||||
|
||||
result = result.value.args[0]
|
||||
assert not result['changed']
|
||||
assert result['cmd'] == ['ceph', '-n', fake_user, '-k', fake_keyring,
|
||||
'--cluster', fake_cluster, 'osd', 'crush', 'rule',
|
||||
'dump', '', '--format=json']
|
||||
assert result['rc'] == rc
|
||||
assert result['stderr'] == stderr
|
||||
assert result['stdout'] == stdout
|
||||
|
||||
@patch.dict(os.environ, {'CEPH_CONTAINER_BINARY': fake_container_binary})
|
||||
@patch.dict(os.environ, {'CEPH_CONTAINER_IMAGE': fake_container_image})
|
||||
@patch('ansible.module_utils.basic.AnsibleModule.exit_json')
|
||||
|
|
Loading…
Reference in New Issue