]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
python-common: drive_selection: fix KeyError when osdspec_affinity is not set 53157/head
authorGuillaume Abrioux <gabrioux@ibm.com>
Wed, 19 Jul 2023 09:27:19 +0000 (09:27 +0000)
committerLaura Flores <lflores@ibm.com>
Fri, 25 Aug 2023 18:20:20 +0000 (18:20 +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>
(cherry picked from commit 908f1d17a15a9d4c9bf603aa45e5f246bb0263e7)

src/python-common/ceph/deployment/drive_selection/selector.py

index d6556dd2c0a557c73d231bf8147093f7dc44a401..0753fe4873823467c92a551d35daaffa9d4a8574 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))