Commit ff2043f9 authored by Guillaume Abrioux's avatar Guillaume Abrioux
Browse files

ceph_key: handle error in a better way

When calling the `ceph_key` module with `state: info`, if the ceph
command called fails, the actual error is hidden by the module which
makes it pretty difficult to troubleshoot.

The current code always states that if rc is not equal to 0 the keyring
doesn't exist.

`state: info` should always return the actual rc, stdout and stderr.

Closes: https://bugzilla.redhat.com/show_bug.cgi?id=1964889

Signed-off-by: default avatarGuillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit d58500ad)
parent 77f32a33
...@@ -645,10 +645,6 @@ def run_module(): ...@@ -645,10 +645,6 @@ def run_module():
elif state == "info": elif state == "info":
rc, cmd, out, err = exec_commands( rc, cmd, out, err = exec_commands(
module, info_key(cluster, name, user, user_key_path, output_format, container_image)) # noqa E501 module, info_key(cluster, name, user, user_key_path, output_format, container_image)) # noqa E501
if rc != 0:
result["stdout"] = "skipped, since {0} does not exist".format(name)
result['rc'] = 0
module.exit_json(**result)
elif state == "list": elif state == "list":
rc, cmd, out, err = exec_commands( rc, cmd, out, err = exec_commands(
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
register: initial_mon_key register: initial_mon_key
run_once: True run_once: True
delegate_to: "{{ running_mon }}" delegate_to: "{{ running_mon }}"
failed_when: initial_mon_key.rc not in [0, 2]
when: running_mon is defined when: running_mon is defined
- name: generate monitor initial keyring - name: generate monitor initial keyring
...@@ -25,11 +26,17 @@ ...@@ -25,11 +26,17 @@
become: false become: false
run_once: true run_once: true
when: when:
- initial_mon_key.skipped is defined - initial_mon_key is skipped
or
initial_mon_key is not succeeded
- name: set_fact _initial_mon_key_success
set_fact: # when initial_mon_key is registered above, `rc: 2` is considered success.
_initial_mon_key_success: "{{ initial_mon_key is not skipped and initial_mon_key.rc == 0 }}"
- name: get initial keyring when it already exists - name: get initial keyring when it already exists
set_fact: set_fact:
monitor_keyring: "{{ (initial_mon_key.stdout | from_json)[0]['key'] if initial_mon_key is not skipped else monitor_keyring.stdout }}" monitor_keyring: "{{ (initial_mon_key.stdout | from_json)[0]['key'] if _initial_mon_key_success | bool else monitor_keyring.stdout }}"
when: initial_mon_key.stdout|default('')|length > 0 or monitor_keyring is not skipped when: initial_mon_key.stdout|default('')|length > 0 or monitor_keyring is not skipped
- name: create monitor initial keyring - name: create monitor initial keyring
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment