]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph-ansible.git/commitdiff
ceph_volume: fix bug in `is_lv()`
authorGuillaume Abrioux <gabrioux@redhat.com>
Mon, 22 Mar 2021 13:46:55 +0000 (14:46 +0100)
committerGuillaume Abrioux <gabrioux@redhat.com>
Wed, 24 Mar 2021 08:20:24 +0000 (09:20 +0100)
This function makes the `ceph_volume` module be not idempotent in
containerized context because it tries to run a container and bindmount
directories that no longer exist.

In that case, the `lvs` command being executed returns something
different than `0` so we can't call `json.loads(out)['report'][0]['lv']`
since it might throw an python error.

The idea is to return `True` only if `rc` is equal to `0` and
`len(result)` is greater than `0`, which means the command matched an
LV.

Fixes: #6284
Signed-off-by: Guillaume Abrioux <gabrioux@redhat.com>
(cherry picked from commit ed79bc7a4e38e257f37faac50a5a19c06711dd8d)

library/ceph_volume.py

index c9b39e1b2ec6c881ef8a4c3b62560fa49709b656..318445ce1da85d36668b72d4e067399e6d9a9dd3 100644 (file)
@@ -477,11 +477,12 @@ def is_lv(module, vg, lv, container_image):
 
     rc, cmd, out, err = exec_command(module, cmd)
 
-    result = json.loads(out)['report'][0]['lv']
-    if rc == 0 and len(result) > 0:
-        return True
-    else:
-        return False
+    if rc == 0:
+        result = json.loads(out)['report'][0]['lv']
+        if len(result) > 0:
+            return True
+
+    return False
 
 
 def zap_devices(module, container_image):