]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commitdiff
ceph-volume lvm.batch.validators account for osds per device, include collocation
authorAlfredo Deza <adeza@redhat.com>
Tue, 11 Sep 2018 16:11:01 +0000 (12:11 -0400)
committerAlfredo Deza <adeza@redhat.com>
Wed, 12 Sep 2018 15:35:41 +0000 (11:35 -0400)
Signed-off-by: Alfredo Deza <adeza@redhat.com>
src/ceph-volume/ceph_volume/devices/lvm/strategies/validators.py

index 06c5ebeaf61e3121d03e4ae0fff1f3799df4831b..6b89387209630a80014fb1deb4f5aafc69e3ad1b 100644 (file)
@@ -2,16 +2,30 @@ from ceph_volume.util import disk
 from ceph_volume.api import lvm
 
 
-def minimum_device_size(devices):
+def minimum_device_size(devices, osds_per_device=1):
     """
     Ensure that the minimum requirements for this type of scenario is
     met, raise an error if the provided devices would not work
     """
-    msg = 'Unable to use device smaller than 5GB: %s (%s)'
+    msg = 'Unable to use device %s %s, LVs would be smaller than 5GB'
     for device in devices:
         device_size = disk.Size(b=device.sys_api['size'])
-        if device_size < disk.Size(gb=5):
-            raise RuntimeError(msg % (device, device_size))
+        lv_size = device_size / osds_per_device
+        if lv_size < disk.Size(gb=5):
+            raise RuntimeError(msg % (device_size, device.path))
+
+
+def minimum_device_collocated_size(devices, journal_size, osds_per_device=1):
+    """
+    Similar to ``minimum_device_size``, but take into account that the size of
+    the journal affects the size left of the device
+    """
+    msg = 'Unable to use device %s %s, LVs would be smaller than 5GB'
+    for device in devices:
+        device_size = disk.Size(b=device.sys_api['size'])
+        lv_size = (device_size / osds_per_device) - journal_size
+        if lv_size < disk.Size(gb=5):
+            raise RuntimeError(msg % (device_size, device.path))
 
 
 def no_lvm_membership(devices):