Browse Source

Remove CD-ROM from block devices

Cristian Matiut 2 weeks ago
parent
commit
3ae533f1e1

+ 6 - 2
coriolis/osmorphing/osmount/base.py

@@ -22,6 +22,9 @@ LOG = logging.getLogger(__name__)
 
 MAJOR_COLUMN_INDEX = 4
 
+# lsblk TYPE values that represent migration volumes.
+_VOLUME_BLOCK_DEVICE_TYPES = frozenset({"disk"})
+
 
 class BaseOSMountTools(object, with_metaclass(abc.ABCMeta)):
 
@@ -443,11 +446,12 @@ class BaseLinuxOSMountTools(luks_mixin.LinuxLUKSMixin, BaseSSHOSMountTools):
         raw = self._exec_cmd("lsblk -lnao KNAME,TYPE")
         LOG.debug("All block devices: %s", raw)
 
-        # Exclude partitions; each line is "<kname> <type>".
+        # Include top-level disk devices only.
         volume_devs = []
         for line in raw.splitlines():
             parts = line.split()
-            if len(parts) >= 2 and parts[1] != "part":
+            if (len(parts) >= 2
+                    and parts[1] in _VOLUME_BLOCK_DEVICE_TYPES):
                 volume_devs.append("/dev/%s" % parts[0])
 
         LOG.debug("Ignoring block devices: %s", self._ignore_devices)

+ 2 - 0
coriolis/tests/osmorphing/osmount/test_base.py

@@ -699,6 +699,8 @@ class BaseLinuxOSMountToolsTestCase(test_base.CoriolisBaseTestCase):
             "sdb  disk\n"
             "sdb1 part\n"
             "sdb2 part\n"
+            "sr0  rom\n"
+            "loop0 loop\n"
         )
         mock_exec_cmd.return_value = lsblk_output
         self.base_os_mount_tools._ignore_devices = ["/dev/sda1"]