]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
ceph-volume: reject disks smaller then 5GB in inventory 29041/head
authorJan Fajerski <jfajerski@suse.com>
Mon, 15 Jul 2019 08:33:45 +0000 (10:33 +0200)
committerJan Fajerski <jfajerski@suse.com>
Thu, 7 Nov 2019 16:10:54 +0000 (17:10 +0100)
Volumes smaller than 5GB won't be created anyway. This also guards
against drives with size 0, as can happen in mdraid setups.

Fixes: http://tracker.ceph.com/issues/40776
Signed-off-by: Jan Fajerski <jfajerski@suse.com>
src/ceph-volume/ceph_volume/tests/util/test_device.py
src/ceph-volume/ceph_volume/util/device.py

index 7477777bc8d57c74645fcf9870c8d852dc6d037a..9cf8f01c9e2e6140f98d273cc096067a62d98aa5 100644 (file)
@@ -401,7 +401,7 @@ class TestCephDiskDevice(object):
         assert not disk.available
 
     def test_accept_non_removable_device(self, device_info):
-        data = {"/dev/sdb": {"removable": 0}}
+        data = {"/dev/sdb": {"removable": 0, "size": 5368709120}}
         device_info(devices=data)
         disk = device.Device("/dev/sdb")
         assert disk.available
@@ -412,8 +412,14 @@ class TestCephDiskDevice(object):
         disk = device.Device("/dev/cdrom")
         assert not disk.available
 
+    def test_reject_smaller_than_5gb(self, device_info):
+        data = {"/dev/sda": {"size": 5368709119}}
+        device_info(devices=data)
+        disk = device.Device("/dev/sda")
+        assert not disk.available, 'too small device is available'
+
     def test_accept_non_readonly_device(self, device_info):
-        data = {"/dev/sda": {"ro": 0}}
+        data = {"/dev/sda": {"ro": 0, "size": 5368709120}}
         device_info(devices=data)
         disk = device.Device("/dev/sda")
         assert disk.available
index ea478f3877d7891f3ed88189a4e061a2a8da9b34..fc7d471f0a8f2a6681e6f4d36a1be6b90f0339af 100644 (file)
@@ -389,6 +389,9 @@ class Device(object):
         ]
         rejected = [reason for (k, v, reason) in reasons if
                     self.sys_api.get(k, '') == v]
+        # reject disks small than 5GB
+        if int(self.sys_api.get('size', 0)) < 5368709120:
+            rejected.append('Insufficient space (<5GB)')
         if self.is_ceph_disk_member:
             rejected.append("Used by ceph-disk")