Beispiel #1
0
    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)