From 04a40eda0ac089c07654d9ab07958126f0fc8f84 Mon Sep 17 00:00:00 2001 From: Alfredo Deza Date: Tue, 11 Sep 2018 12:11:01 -0400 Subject: [PATCH] ceph-volume lvm.batch.validators account for osds per device, include collocation Signed-off-by: Alfredo Deza --- .../devices/lvm/strategies/validators.py | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/ceph-volume/ceph_volume/devices/lvm/strategies/validators.py b/src/ceph-volume/ceph_volume/devices/lvm/strategies/validators.py index 06c5ebeaf61e3..6b89387209630 100644 --- a/src/ceph-volume/ceph_volume/devices/lvm/strategies/validators.py +++ b/src/ceph-volume/ceph_volume/devices/lvm/strategies/validators.py @@ -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): -- 2.39.5