Ignore Nova config drive in devices list
The Nova config drive is no more treated as a volume. The device containing the drive is filtered by a fixed label 'config-2' in lower and upper cases for compatibility with different distros. Change-Id: I345c9570010a42bb7e6cd2f31be834b7881a78ff Closes-Bug: #1588760
This commit is contained in:
parent
18aa22e7c5
commit
cf57c1f860
@ -143,6 +143,18 @@ def _find_instance_devices(instance):
|
||||
"mount | awk '$1 ~ /^\/dev/ {print $1}'")
|
||||
mounted_dev = mounted_info.split()
|
||||
|
||||
# find and ignore Nova config drive
|
||||
for label in ("config-2", "CONFIG-2"):
|
||||
code, nova_config_drive = r.execute_command(
|
||||
"/sbin/blkid -t LABEL=\"%s\" -odevice" % label,
|
||||
raise_when_error=False,
|
||||
run_as_root=True
|
||||
)
|
||||
drive_name = nova_config_drive.strip()
|
||||
if code == 0 and drive_name in attached_dev:
|
||||
attached_dev.remove(drive_name)
|
||||
break
|
||||
|
||||
# filtering attached devices, that should not be mounted
|
||||
for dev in attached_dev[:]:
|
||||
idx = re.sub("\D", "", dev)
|
||||
|
@ -93,35 +93,56 @@ class TestAttachVolume(base.SaharaWithDbTestCase):
|
||||
|
||||
attached_info = '/dev/vda /dev/vda1 /dev/vdb /dev/vdc'
|
||||
mounted_info = '/dev/vda1'
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info)]
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info), (2, ""),
|
||||
(2, "")]
|
||||
|
||||
diff = volumes._find_instance_devices(instance)
|
||||
self.assertEqual(['/dev/vdb', '/dev/vdc'], diff)
|
||||
|
||||
attached_info = '/dev/vda /dev/vda1 /dev/vdb /dev/vdb1 /dev/vdb2'
|
||||
mounted_info = '/dev/vda1'
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info)]
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info), (2, ""),
|
||||
(2, "")]
|
||||
|
||||
diff = volumes._find_instance_devices(instance)
|
||||
self.assertEqual(['/dev/vdb'], diff)
|
||||
|
||||
attached_info = '/dev/vda /dev/vda1 /dev/vdb /dev/vdb1 /dev/vdb2'
|
||||
mounted_info = '/dev/vda1 /dev/vdb1'
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info)]
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info), (2, ""),
|
||||
(2, "")]
|
||||
|
||||
diff = volumes._find_instance_devices(instance)
|
||||
self.assertEqual(['/dev/vdb2'], diff)
|
||||
|
||||
attached_info = '/dev/vda /dev/vda1 /dev/vdb /dev/vdb1 /dev/vdb2'
|
||||
mounted_info = '/dev/vda1 /dev/vdb2'
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info)]
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info), (2, ""),
|
||||
(2, "")]
|
||||
|
||||
diff = volumes._find_instance_devices(instance)
|
||||
self.assertEqual(['/dev/vdb1'], diff)
|
||||
|
||||
attached_info = '/dev/vda /dev/vda1 /dev/vdb'
|
||||
mounted_info = '/dev/vda1 /dev/vdb'
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info)]
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info), (2, ""),
|
||||
(2, "")]
|
||||
|
||||
diff = volumes._find_instance_devices(instance)
|
||||
self.assertEqual([], diff)
|
||||
|
||||
attached_info = '/dev/vda /dev/vda1 /dev/vdb'
|
||||
mounted_info = '/dev/vda1'
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info),
|
||||
(0, "/dev/vdb")]
|
||||
|
||||
diff = volumes._find_instance_devices(instance)
|
||||
self.assertEqual([], diff)
|
||||
|
||||
attached_info = '/dev/vda /dev/vda1 /dev/vdb'
|
||||
mounted_info = '/dev/vda1'
|
||||
ex_cmd.side_effect = [(0, attached_info), (0, mounted_info),
|
||||
(2, ""), (0, "/dev/vdb")]
|
||||
|
||||
diff = volumes._find_instance_devices(instance)
|
||||
self.assertEqual([], diff)
|
||||
|
Loading…
Reference in New Issue
Block a user