]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: refactor get_physical_osds()
authorGuillaume Abrioux <gabrioux@ibm.com>
Fri, 14 Feb 2025 12:34:50 +0000 (12:34 +0000)
committerGuillaume Abrioux <gabrioux@ibm.com>
Mon, 24 Feb 2025 11:56:23 +0000 (11:56 +0000)
This refactors `get_physical_osds()`.
The calculation of `data_slots` is now more concise. The handling of
`dev_size`, `rel_data_size`, and `abs_size` is standardized.
The initialization of `free_size` is moved outside the loop
for clarity. Redundant checks and assignments are removed to simplify
the code.

Signed-off-by: Guillaume Abrioux <gabrioux@ibm.com>
(cherry picked from commit 140199b098bcc203b480330dbd8547230a7954c2)

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

index 57c715a2fb97c69a3cd4e8b85ce791c2e673e41a..f9ecf4bb5d9ba665dda1f771fe1b0ba3b9ec01fe 100644 (file)
@@ -597,46 +597,48 @@ class Batch(object):
             return {k: str(v) for k, v in self._get_osd_plan().items()}
 
 def get_physical_osds(devices: List[device.Device], args: argparse.Namespace) -> List[Batch.OSD]:
-    '''
-    Goes through passed physical devices and assigns OSDs
-    '''
-    data_slots = args.osds_per_device
-    if args.data_slots:
-        data_slots = max(args.data_slots, args.osds_per_device)
-    #rel_data_size = args.data_allocate_fraction / data_slots
-    #mlogger.debug('relative data size: {}'.format(rel_data_size))
+    """
+    Goes through passed physical devices and assigns OSDs.
+    """
+    data_slots = max(args.data_slots, args.osds_per_device) if args.data_slots else args.osds_per_device
     ret = []
+
     for dev in devices:
+        if not dev.available_lvm:
+            continue
+
+        total_dev_size = dev.vg_size[0]
+        dev_size = total_dev_size
         rel_data_size = args.data_allocate_fraction / data_slots
-        if dev.available_lvm:
-            total_dev_size = dev.vg_size[0]
-            dev_size = dev.vg_size[0]
 
-            if args.has_block_db_size_without_db_devices:
-                all_db_space = args.block_db_size * data_slots
-                dev_size -= all_db_space.b.as_int()
+        if args.has_block_db_size_without_db_devices:
+            all_db_space = args.block_db_size * data_slots
+            dev_size -= all_db_space.b.as_int()
 
-            abs_size = disk.Size(b=int(dev_size * rel_data_size))
-            mlogger.error(f'{dev_size} {abs_size} {rel_data_size}')
+        abs_size = disk.Size(b=int(dev_size * rel_data_size))
 
-            if args.has_block_db_size_without_db_devices:
-                rel_data_size = abs_size / disk.Size(b=total_dev_size)
+        if args.has_block_db_size_without_db_devices:
+            rel_data_size = abs_size / disk.Size(b=total_dev_size)
+
+        free_size = dev.vg_free[0]
+
+        for _ in range(args.osds_per_device):
+            if abs_size.b > free_size:
+                break
+
+            free_size -= abs_size.b
+            osd_id = args.osd_ids.pop() if args.osd_ids else None
+
+            ret.append(Batch.OSD(
+                dev.path,
+                rel_data_size,
+                abs_size,
+                args.osds_per_device,
+                osd_id,
+                'dmcrypt' if args.dmcrypt else None,
+                dev.symlink
+            ))
 
-            free_size = dev.vg_free[0]
-            for _ in range(args.osds_per_device):
-                if abs_size > free_size:
-                    break
-                free_size -= abs_size.b
-                osd_id = None
-                if args.osd_ids:
-                    osd_id = args.osd_ids.pop()
-                ret.append(Batch.OSD(dev.path,
-                                     rel_data_size,
-                                     abs_size,
-                                     args.osds_per_device,
-                                     osd_id,
-                                     'dmcrypt' if args.dmcrypt else None,
-                                     dev.symlink))
     return ret
 
 def get_lvm_osds(lvs: List[device.Device], args: argparse.Namespace) -> List[Batch.OSD]: