]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: quick fix in zap.py 51196/head
authorGuillaume Abrioux <gabrioux@ibm.com>
Wed, 29 Mar 2023 14:58:11 +0000 (16:58 +0200)
committerGuillaume Abrioux <gabrioux@ibm.com>
Mon, 24 Apr 2023 11:19:34 +0000 (13:19 +0200)
`api.get_single_pv(filters={'lv_uuid': lv.lv_uuid})` needs to be called
only if `--destroy` is passed in order to remove vg and pv when there's
nothing left.

With old deployments, it is possible that a lv_uuid matches more than 1
PV.
Given that `get_single_pv()` is only needed when `--destroy` is passed,
let's move this call where it is actually needed.

This makes `ceph-volume lvm zap` fail even though

Fixes: https://tracker.ceph.com/issues/59210
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit a666f700f16937565484dffc90713f6c04d76313)

src/ceph-volume/ceph_volume/devices/lvm/zap.py

index d6d778d165efe5d6d180e4f7c08f94a7a1ece413..708716e5e37a28b0240943dd02f1b7f8679ed2f4 100644 (file)
@@ -168,7 +168,6 @@ class Zap(object):
         """
         lv = api.get_single_lv(filters={'lv_name': device.lv_name, 'vg_name':
                                         device.vg_name})
-        pv = api.get_single_pv(filters={'lv_uuid': lv.lv_uuid})
         self.unmount_lv(lv)
 
         wipefs(device.path)
@@ -182,8 +181,10 @@ class Zap(object):
             elif len(lvs) <= 1:
                 mlogger.info('Only 1 LV left in VG, will proceed to destroy '
                              'volume group %s', device.vg_name)
+                pvs = api.get_pvs(filters={'lv_uuid': lv.lv_uuid})
                 api.remove_vg(device.vg_name)
-                api.remove_pv(pv.pv_name)
+                for pv in pvs:
+                    api.remove_pv(pv.pv_name)
             else:
                 mlogger.info('More than 1 LV left in VG, will proceed to '
                              'destroy LV only')