def test_get_info_from_bdm(self): instance = objects.Instance(**self.test_instance) bdms = [ {"device_name": "/dev/vds", "device_type": "disk", "disk_bus": "usb", "swap_size": 4}, {"device_type": "disk", "guest_format": "ext4", "device_name": "/dev/vdb", "size": 2}, {"disk_bus": "ide", "guest_format": None, "device_name": "/dev/vdc", "size": 3}, { "connection_info": "fake", "mount_device": "/dev/sdr", "disk_bus": "lame_bus", "device_type": "cdrom", "boot_index": 0, "delete_on_termination": True, }, { "connection_info": "fake", "mount_device": "/dev/vdo", "disk_bus": "scsi", "boot_index": 1, "device_type": "lame_type", "delete_on_termination": True, }, ] expected = [ {"dev": "vds", "type": "disk", "bus": "usb"}, {"dev": "vdb", "type": "disk", "bus": "virtio", "format": "ext4"}, {"dev": "vdc", "type": "disk", "bus": "ide"}, {"dev": "sdr", "type": "cdrom", "bus": "scsi", "boot_index": "1"}, {"dev": "vdo", "type": "disk", "bus": "scsi", "boot_index": "2"}, ] image_meta = objects.ImageMeta.from_dict(self.test_image_meta) for bdm, expected in zip(bdms, expected): self.assertEqual(expected, blockinfo.get_info_from_bdm(instance, "kvm", image_meta, bdm)) # Test that passed bus and type are considered bdm = {"device_name": "/dev/vda"} expected = {"dev": "vda", "type": "disk", "bus": "ide"} self.assertEqual( expected, blockinfo.get_info_from_bdm(instance, "kvm", image_meta, bdm, disk_bus="ide", dev_type="disk") ) # Test that lame bus values are defaulted properly bdm = {"disk_bus": "lame_bus", "device_type": "cdrom"} with mock.patch.object(blockinfo, "get_disk_bus_for_device_type", return_value="ide") as get_bus: blockinfo.get_info_from_bdm(instance, "kvm", image_meta, bdm) get_bus.assert_called_once_with(instance, "kvm", image_meta, "cdrom") # Test that missing device is defaulted as expected bdm = {"disk_bus": "ide", "device_type": "cdrom"} expected = {"dev": "vdd", "type": "cdrom", "bus": "ide"} mapping = {"root": {"dev": "vda"}} with mock.patch.object(blockinfo, "find_disk_dev_for_disk_bus", return_value="vdd") as find_dev: got = blockinfo.get_info_from_bdm( instance, "kvm", image_meta, bdm, mapping, assigned_devices=["vdb", "vdc"] ) find_dev.assert_called_once_with( {"root": {"dev": "vda"}, "vdb": {"dev": "vdb"}, "vdc": {"dev": "vdc"}}, "ide" ) self.assertEqual(expected, got)
def test_get_info_from_bdm(self): bdms = [{'device_name': '/dev/vds', 'device_type': 'disk', 'disk_bus': 'usb', 'swap_size': 4}, {'device_type': 'disk', 'guest_format': 'ext3', 'device_name': '/dev/vdb', 'size': 2}, {'disk_bus': 'ide', 'guest_format': None, 'device_name': '/dev/vdc', 'size': 3}, {'connection_info': "fake", 'mount_device': "/dev/sdr", 'disk_bus': 'lame_bus', 'device_type': 'cdrom', 'delete_on_termination': True}, {'connection_info': "fake", 'mount_device': "/dev/vdo", 'disk_bus': 'scsi', 'device_type': 'lame_type', 'delete_on_termination': True}] expected = [{'dev': 'vds', 'type': 'disk', 'bus': 'usb'}, {'dev': 'vdb', 'type': 'disk', 'bus': 'virtio', 'format': 'ext3'}, {'dev': 'vdc', 'type': 'disk', 'bus': 'ide'}, {'dev': 'sdr', 'type': 'cdrom', 'bus': 'scsi'}, {'dev': 'vdo', 'type': 'disk', 'bus': 'scsi'}] for bdm, expected in zip(bdms, expected): self.assertEqual(expected, blockinfo.get_info_from_bdm('kvm', bdm, {})) # Test that passed bus and type are considered bdm = {'device_name': '/dev/vda'} expected = {'dev': 'vda', 'type': 'disk', 'bus': 'ide'} self.assertEqual( expected, blockinfo.get_info_from_bdm('kvm', bdm, {}, disk_bus='ide', dev_type='disk')) # Test that lame bus values are defaulted properly bdm = {'disk_bus': 'lame_bus', 'device_type': 'cdrom'} with mock.patch.object(blockinfo, 'get_disk_bus_for_device_type', return_value='ide') as get_bus: blockinfo.get_info_from_bdm('kvm', bdm, {}) get_bus.assert_called_once_with('kvm', None, 'cdrom') # Test that missing device is defaulted as expected bdm = {'disk_bus': 'ide', 'device_type': 'cdrom'} expected = {'dev': 'vdd', 'type': 'cdrom', 'bus': 'ide'} mapping = {'root': {'dev': 'vda'}} with mock.patch.object(blockinfo, 'find_disk_dev_for_disk_bus', return_value='vdd') as find_dev: got = blockinfo.get_info_from_bdm( 'kvm', bdm, mapping, assigned_devices=['vdb', 'vdc']) find_dev.assert_called_once_with( {'root': {'dev': 'vda'}, 'vdb': {'dev': 'vdb'}, 'vdc': {'dev': 'vdc'}}, 'ide') self.assertEqual(expected, got)
def test_get_info_from_bdm(self): bdms = [{ 'device_name': '/dev/vds', 'device_type': 'disk', 'disk_bus': 'usb', 'swap_size': 4 }, { 'device_type': 'disk', 'guest_format': 'ext3', 'device_name': '/dev/vdb', 'size': 2 }, { 'disk_bus': 'ide', 'guest_format': None, 'device_name': '/dev/vdc', 'size': 3 }, { 'connection_info': "fake", 'mount_device': "/dev/sdr", 'disk_bus': 'lame_bus', 'device_type': 'cdrom', 'boot_index': 0, 'delete_on_termination': True }, { 'connection_info': "fake", 'mount_device': "/dev/vdo", 'disk_bus': 'scsi', 'boot_index': 1, 'device_type': 'lame_type', 'delete_on_termination': True }] expected = [{ 'dev': 'vds', 'type': 'disk', 'bus': 'usb' }, { 'dev': 'vdb', 'type': 'disk', 'bus': 'virtio', 'format': 'ext3' }, { 'dev': 'vdc', 'type': 'disk', 'bus': 'ide' }, { 'dev': 'sdr', 'type': 'cdrom', 'bus': 'scsi', 'boot_index': '1' }, { 'dev': 'vdo', 'type': 'disk', 'bus': 'scsi', 'boot_index': '2' }] for bdm, expected in zip(bdms, expected): self.assertEqual(expected, blockinfo.get_info_from_bdm('kvm', bdm, {})) # Test that passed bus and type are considered bdm = {'device_name': '/dev/vda'} expected = {'dev': 'vda', 'type': 'disk', 'bus': 'ide'} self.assertEqual( expected, blockinfo.get_info_from_bdm('kvm', bdm, {}, disk_bus='ide', dev_type='disk')) # Test that lame bus values are defaulted properly bdm = {'disk_bus': 'lame_bus', 'device_type': 'cdrom'} with mock.patch.object(blockinfo, 'get_disk_bus_for_device_type', return_value='ide') as get_bus: blockinfo.get_info_from_bdm('kvm', bdm, {}) get_bus.assert_called_once_with('kvm', None, 'cdrom') # Test that missing device is defaulted as expected bdm = {'disk_bus': 'ide', 'device_type': 'cdrom'} expected = {'dev': 'vdd', 'type': 'cdrom', 'bus': 'ide'} mapping = {'root': {'dev': 'vda'}} with mock.patch.object(blockinfo, 'find_disk_dev_for_disk_bus', return_value='vdd') as find_dev: got = blockinfo.get_info_from_bdm('kvm', bdm, mapping, assigned_devices=['vdb', 'vdc']) find_dev.assert_called_once_with( { 'root': { 'dev': 'vda' }, 'vdb': { 'dev': 'vdb' }, 'vdc': { 'dev': 'vdc' } }, 'ide') self.assertEqual(expected, got)