From: Alfredo Deza Date: Tue, 11 Sep 2018 16:11:01 +0000 (-0400) Subject: ceph-volume lvm.batch.validators account for osds per device, include collocation X-Git-Tag: v14.0.1~305^2~5 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=04a40eda0ac089c07654d9ab07958126f0fc8f84;p=ceph.git ceph-volume lvm.batch.validators account for osds per device, include collocation Signed-off-by: Alfredo Deza --- 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 06c5ebeaf61e..6b8938720963 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):