]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
python-common: drive_selection: fix KeyError when osdspec_affinity is not set 52532/head
authorGuillaume Abrioux <gabrioux@ibm.com>
Wed, 19 Jul 2023 09:27:19 +0000 (09:27 +0000)
committerGuillaume Abrioux <gabrioux@redhat.com>
Tue, 25 Jul 2023 15:46:04 +0000 (15:46 +0000)
When osdspec_affinity is not set, the drive selection code will fail.
This can happen when a device has multiple LVs where some of are used
by Ceph and at least one LV isn't used by Ceph.

Fixes: https://tracker.ceph.com/issues/58946
Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
src/python-common/ceph/deployment/drive_selection/selector.py

index 302519002bf71bd9191424dfa8f0b2aedb483784..1b3bfbb4ee3c5772bb61a9d6cd502b83b49d1e28 100644 (file)
@@ -131,9 +131,10 @@ class DriveSelection(object):
             if not disk.available and disk.ceph_device and disk.lvs:
                 other_osdspec_affinity = ''
                 for lv in disk.lvs:
-                    if lv['osdspec_affinity'] != self.spec.service_id:
-                        other_osdspec_affinity = lv['osdspec_affinity']
-                        break
+                    if 'osdspec_affinity' in lv.keys():
+                        if lv['osdspec_affinity'] != self.spec.service_id:
+                            other_osdspec_affinity = lv['osdspec_affinity']
+                            break
                 if other_osdspec_affinity:
                     logger.debug("{} is already used in spec {}, "
                                  "skipping it.".format(disk.path, other_osdspec_affinity))