예제 #1
0
    def test_get_disk_mapping_updates_original(self):
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        block_device_info = {
            'root_device_name':
            '/dev/vda',
            'swap': {
                'device_name': '/dev/vdb',
                'device_type': 'really_lame_type',
                'swap_size': 10
            },
            'ephemerals': [{
                'disk_bus': 'no_such_bus',
                'device_type': 'yeah_right',
                'device_name': '/dev/vdc',
                'size': 10
            }],
            'block_device_mapping': [{
                'connection_info': "fake",
                'mount_device': None,
                'device_type': 'lawnmower',
                'delete_on_termination': True
            }]
        }
        expected_swap = {
            'device_name': '/dev/vdb',
            'disk_bus': 'virtio',
            'device_type': 'disk',
            'swap_size': 10
        }
        expected_ephemeral = {
            'disk_bus': 'virtio',
            'device_type': 'disk',
            'device_name': '/dev/vdc',
            'size': 10
        }
        expected_bdm = {
            'connection_info': "fake",
            'mount_device': '/dev/vdd',
            'device_type': 'disk',
            'disk_bus': 'virtio',
            'delete_on_termination': True
        }

        blockinfo.get_disk_mapping("kvm", instance_ref, "virtio", "ide",
                                   image_meta, block_device_info)

        self.assertEqual(expected_swap, block_device_info['swap'])
        self.assertEqual(expected_ephemeral,
                         block_device_info['ephemerals'][0])
        self.assertEqual(expected_bdm,
                         block_device_info['block_device_mapping'][0])
예제 #2
0
    def test_get_disk_mapping_simple(self):
        # The simplest possible disk mapping setup, all defaults

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta)

        expect = {
            'disk': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
            'disk.local': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk'
            },
            'root': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            }
        }
        self.assertEqual(expect, mapping)
예제 #3
0
    def test_get_disk_mapping_rescue(self):
        # A simple disk mapping setup, but in rescue mode

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm",
                                             instance_ref,
                                             "virtio",
                                             "ide",
                                             image_meta,
                                             rescue=True)

        expect = {
            'disk.rescue': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
            'disk': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk'
            },
            'root': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)
예제 #4
0
    def test_get_disk_mapping_simple_iso(self):
        # A simple disk mapping setup, but with a ISO for root device

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {'disk_format': 'iso'}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta)

        expect = {
            'disk': {
                'bus': 'ide',
                'dev': 'hda',
                'type': 'cdrom',
                'boot_index': '1'
            },
            'disk.local': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk'
            },
            'root': {
                'bus': 'ide',
                'dev': 'hda',
                'type': 'cdrom',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)
예제 #5
0
    def test_get_disk_mapping_simple_swap(self):
        # A simple disk mapping setup, but with a swap device added

        instance_ref = objects.Instance(**self.test_instance)
        instance_ref.flavor.swap = 5
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta)

        expect = {
            'disk': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
            'disk.local': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk'
            },
            'disk.swap': {
                'bus': 'virtio',
                'dev': 'vdc',
                'type': 'disk'
            },
            'root': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)
예제 #6
0
    def test_get_disk_mapping_blockdev_eph(self):
        # A disk mapping with a blockdev replacing the ephemeral device
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        block_device_info = {
            'block_device_mapping': [
                {'connection_info': "fake",
                 'mount_device': "/dev/vdb",
                 'boot_index': -1,
                 'delete_on_termination': True},
                ]
            }
        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta,
                                             block_device_info)

        expect = {
            'disk': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            '/dev/vdb': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'},
            'root': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            }
        self.assertEqual(expect, mapping)
예제 #7
0
    def test_get_disk_mapping_cdrom_configdrive(self):
        # A simple disk mapping setup, with configdrive added as cdrom
        # It's necessary to check if the architecture is power, because
        # power doesn't have support to ide, and so libvirt translate
        # all ide calls to scsi

        self.flags(force_config_drive=True)
        self.flags(config_drive_format='iso9660')

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta)

        bus_ppc = ("scsi", "sdz")
        expect_bus = {"ppc": bus_ppc, "ppc64": bus_ppc}

        bus, dev = expect_bus.get(blockinfo.libvirt_utils.get_arch({}),
                                  ("ide", "hdd"))

        expect = {
            'disk': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'},
            'disk.config': {'bus': bus, 'dev': dev, 'type': 'cdrom'},
            'root': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'}
            }

        self.assertEqual(expect, mapping)
예제 #8
0
    def test_get_disk_mapping_ephemeral(self):
        # A disk mapping with ephemeral devices
        instance_ref = objects.Instance(**self.test_instance)
        instance_ref.flavor.swap = 5
        image_meta = {}

        block_device_info = {
            'ephemerals': [
                {'device_type': 'disk', 'guest_format': 'ext4',
                 'device_name': '/dev/vdb', 'size': 10},
                {'disk_bus': 'ide', 'guest_format': None,
                 'device_name': '/dev/vdc', 'size': 10},
                {'device_type': 'floppy',
                 'device_name': '/dev/vdd', 'size': 10},
                ]
            }
        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta,
                                             block_device_info)

        expect = {
            'disk': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            'disk.eph0': {'bus': 'virtio', 'dev': 'vdb',
                          'type': 'disk', 'format': 'ext4'},
            'disk.eph1': {'bus': 'ide', 'dev': 'vdc', 'type': 'disk'},
            'disk.eph2': {'bus': 'virtio', 'dev': 'vdd', 'type': 'floppy'},
            'disk.swap': {'bus': 'virtio', 'dev': 'vde', 'type': 'disk'},
            'root': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            }
        self.assertEqual(expect, mapping)
예제 #9
0
    def test_get_disk_mapping_simple_rootdev(self):
        # A simple disk mapping setup, but with custom root device name

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}
        block_device_info = {'root_device_name': '/dev/sda'}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta,
                                             block_device_info)

        expect = {
            'disk': {
                'bus': 'scsi',
                'dev': 'sda',
                'type': 'disk',
                'boot_index': '1'
            },
            'disk.local': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk'
            },
            'root': {
                'bus': 'scsi',
                'dev': 'sda',
                'type': 'disk',
                'boot_index': '1'
            }
        }
        self.assertEqual(expect, mapping)
예제 #10
0
    def test_get_disk_mapping_blockdev_many(self):
        # A disk mapping with a blockdev replacing all devices
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        block_device_info = {
            'block_device_mapping': [
                {
                    'connection_info': "fake",
                    'mount_device': "/dev/vda",
                    'boot_index': 0,
                    'disk_bus': 'scsi',
                    'delete_on_termination': True
                },
                {
                    'connection_info': "fake",
                    'mount_device': "/dev/vdb",
                    'boot_index': -1,
                    'delete_on_termination': True
                },
                {
                    'connection_info': "fake",
                    'mount_device': "/dev/vdc",
                    'boot_index': -1,
                    'device_type': 'cdrom',
                    'delete_on_termination': True
                },
            ]
        }
        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta,
                                             block_device_info)

        expect = {
            '/dev/vda': {
                'bus': 'scsi',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
            '/dev/vdb': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk'
            },
            '/dev/vdc': {
                'bus': 'virtio',
                'dev': 'vdc',
                'type': 'cdrom'
            },
            'root': {
                'bus': 'scsi',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)
예제 #11
0
    def test_get_disk_mapping_updates_original(self):
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        block_device_info = {
            'root_device_name': '/dev/vda',
            'swap': {'device_name': '/dev/vdb',
                     'device_type': 'really_lame_type',
                     'swap_size': 10},
            'ephemerals': [{'disk_bus': 'no_such_bus',
                            'device_type': 'yeah_right',
                            'device_name': '/dev/vdc', 'size': 10}],
            'block_device_mapping': [
                {'connection_info': "fake",
                 'mount_device': None,
                 'device_type': 'lawnmower',
                 'delete_on_termination': True}]
            }
        expected_swap = {'device_name': '/dev/vdb', 'disk_bus': 'virtio',
                         'device_type': 'disk', 'swap_size': 10}
        expected_ephemeral = {'disk_bus': 'virtio',
                              'device_type': 'disk',
                              'device_name': '/dev/vdc', 'size': 10}
        expected_bdm = {'connection_info': "fake",
                        'mount_device': '/dev/vdd',
                        'device_type': 'disk',
                        'disk_bus': 'virtio',
                        'delete_on_termination': True}

        blockinfo.get_disk_mapping("kvm", instance_ref,
                                   "virtio", "ide",
                                   image_meta,
                                   block_device_info)

        self.assertEqual(expected_swap, block_device_info['swap'])
        self.assertEqual(expected_ephemeral,
                         block_device_info['ephemerals'][0])
        self.assertEqual(expected_bdm,
                         block_device_info['block_device_mapping'][0])
예제 #12
0
    def test_get_disk_mapping_simple_configdrive(self):
        # A simple disk mapping setup, but with configdrive added
        # It's necessary to check if the architecture is power, because
        # power doesn't have support to ide, and so libvirt translate
        # all ide calls to scsi

        self.flags(force_config_drive=True)

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta)

        # The last device is selected for this. on x86 is the last ide
        # device (hdd). Since power only support scsi, the last device
        # is sdz

        bus_ppc = ("scsi", "sdz")
        expect_bus = {"ppc": bus_ppc, "ppc64": bus_ppc}

        bus, dev = expect_bus.get(blockinfo.libvirt_utils.get_arch({}),
                                  ("ide", "hdd"))

        expect = {
            'disk': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
            'disk.local': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk'
            },
            'disk.config': {
                'bus': bus,
                'dev': dev,
                'type': 'cdrom'
            },
            'root': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            }
        }

        self.assertEqual(expect, mapping)
예제 #13
0
    def test_get_disk_mapping_lxc(self):
        # A simple disk mapping setup, but for lxc

        self.test_instance['ephemeral_gb'] = 0
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("lxc", instance_ref,
                                             "lxc", "lxc",
                                             image_meta)
        expect = {
            'disk': {'bus': 'lxc', 'dev': None,
                     'type': 'disk', 'boot_index': '1'},
            'root': {'bus': 'lxc', 'dev': None,
                     'type': 'disk', 'boot_index': '1'},
        }
        self.assertEqual(expect, mapping)
예제 #14
0
    def test_get_disk_mapping_simple_iso(self):
        # A simple disk mapping setup, but with a ISO for root device

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {'disk_format': 'iso'}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta)

        expect = {
            'disk': {'bus': 'ide', 'dev': 'hda',
                     'type': 'cdrom', 'boot_index': '1'},
            'disk.local': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk'},
            'root': {'bus': 'ide', 'dev': 'hda',
                     'type': 'cdrom', 'boot_index': '1'},
            }
        self.assertEqual(expect, mapping)
예제 #15
0
    def test_get_disk_mapping_simple(self):
        # The simplest possible disk mapping setup, all defaults

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta)

        expect = {
            'disk': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'},
            'root': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'}
            }
        self.assertEqual(expect, mapping)
예제 #16
0
    def test_get_disk_mapping_rescue(self):
        # A simple disk mapping setup, but in rescue mode

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta,
                                             rescue=True)

        expect = {
            'disk.rescue': {'bus': 'virtio', 'dev': 'vda',
                            'type': 'disk', 'boot_index': '1'},
            'disk': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'},
            'root': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            }
        self.assertEqual(expect, mapping)
예제 #17
0
    def test_get_disk_mapping_simple_swap(self):
        # A simple disk mapping setup, but with a swap device added

        instance_ref = objects.Instance(**self.test_instance)
        instance_ref.flavor.swap = 5
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta)

        expect = {
            'disk': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'},
            'disk.swap': {'bus': 'virtio', 'dev': 'vdc', 'type': 'disk'},
            'root': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            }
        self.assertEqual(expect, mapping)
예제 #18
0
    def test_get_disk_mapping_complex(self):
        # The strangest possible disk mapping setup
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        block_device_info = {
            'root_device_name': '/dev/vdf',
            'swap': {'device_name': '/dev/vdy',
                     'swap_size': 10},
            'ephemerals': [
                {'device_type': 'disk', 'guest_format': 'ext4',
                 'device_name': '/dev/vdb', 'size': 10},
                {'disk_bus': 'ide', 'guest_format': None,
                 'device_name': '/dev/vdc', 'size': 10},
                ],
            'block_device_mapping': [
                {'connection_info': "fake",
                 'mount_device': "/dev/vda",
                 'boot_index': 1,
                 'delete_on_termination': True},
                ]
            }
        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta,
                                             block_device_info)

        expect = {
            'disk': {'bus': 'virtio', 'dev': 'vdf',
                     'type': 'disk', 'boot_index': '1'},
            '/dev/vda': {'bus': 'virtio', 'dev': 'vda',
                         'type': 'disk', 'boot_index': '2'},
            'disk.eph0': {'bus': 'virtio', 'dev': 'vdb',
                          'type': 'disk', 'format': 'ext4'},
            'disk.eph1': {'bus': 'ide', 'dev': 'vdc', 'type': 'disk'},
            'disk.swap': {'bus': 'virtio', 'dev': 'vdy', 'type': 'disk'},
            'root': {'bus': 'virtio', 'dev': 'vdf',
                     'type': 'disk', 'boot_index': '1'},
            }
        self.assertEqual(expect, mapping)
예제 #19
0
    def test_get_disk_mapping_disk_configdrive(self):
        # A simple disk mapping setup, with configdrive added as disk

        self.flags(force_config_drive=True)
        self.flags(config_drive_format='vfat')

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta)

        expect = {
            'disk': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            'disk.local': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'},
            'disk.config': {'bus': 'virtio', 'dev': 'vdz', 'type': 'disk'},
            'root': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            }
        self.assertEqual(expect, mapping)
예제 #20
0
    def test_get_disk_mapping_simple_rootdev(self):
        # A simple disk mapping setup, but with custom root device name

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}
        block_device_info = {
            'root_device_name': '/dev/sda'
            }

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta,
                                             block_device_info)

        expect = {
            'disk': {'bus': 'scsi', 'dev': 'sda',
                     'type': 'disk', 'boot_index': '1'},
            'disk.local': {'bus': 'virtio', 'dev': 'vda', 'type': 'disk'},
            'root': {'bus': 'scsi', 'dev': 'sda',
                     'type': 'disk', 'boot_index': '1'}
            }
        self.assertEqual(expect, mapping)
예제 #21
0
    def test_get_disk_mapping_custom_swap(self):
        # A disk mapping with a swap device at position vdb. This
        # should cause disk.local to be removed
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        block_device_info = {
            'swap': {'device_name': '/dev/vdb',
                     'swap_size': 10},
            }
        mapping = blockinfo.get_disk_mapping("kvm", instance_ref,
                                             "virtio", "ide",
                                             image_meta,
                                             block_device_info)

        expect = {
            'disk': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            'disk.swap': {'bus': 'virtio', 'dev': 'vdb', 'type': 'disk'},
            'root': {'bus': 'virtio', 'dev': 'vda',
                     'type': 'disk', 'boot_index': '1'},
            }
        self.assertEqual(expect, mapping)
예제 #22
0
    def test_get_disk_mapping_disk_configdrive(self):
        # A simple disk mapping setup, with configdrive added as disk

        self.flags(force_config_drive=True)
        self.flags(config_drive_format='vfat')

        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta)

        expect = {
            'disk': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
            'disk.local': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk'
            },
            'disk.config': {
                'bus': 'virtio',
                'dev': 'vdz',
                'type': 'disk'
            },
            'root': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)
예제 #23
0
    def test_get_disk_mapping_custom_swap(self):
        # A disk mapping with a swap device at position vdb. This
        # should cause disk.local to be removed
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        block_device_info = {
            'swap': {
                'device_name': '/dev/vdb',
                'swap_size': 10
            },
        }
        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta,
                                             block_device_info)

        expect = {
            'disk': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
            'disk.swap': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk'
            },
            'root': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)
예제 #24
0
    def test_get_disk_mapping_lxc(self):
        # A simple disk mapping setup, but for lxc

        self.test_instance['ephemeral_gb'] = 0
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        mapping = blockinfo.get_disk_mapping("lxc", instance_ref, "lxc", "lxc",
                                             image_meta)
        expect = {
            'disk': {
                'bus': 'lxc',
                'dev': None,
                'type': 'disk',
                'boot_index': '1'
            },
            'root': {
                'bus': 'lxc',
                'dev': None,
                'type': 'disk',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)
예제 #25
0
    def test_get_disk_mapping_complex(self):
        # The strangest possible disk mapping setup
        instance_ref = objects.Instance(**self.test_instance)
        image_meta = {}

        block_device_info = {
            'root_device_name':
            '/dev/vdf',
            'swap': {
                'device_name': '/dev/vdy',
                'swap_size': 10
            },
            'ephemerals': [
                {
                    'device_type': 'disk',
                    'guest_format': 'ext4',
                    'device_name': '/dev/vdb',
                    'size': 10
                },
                {
                    'disk_bus': 'ide',
                    'guest_format': None,
                    'device_name': '/dev/vdc',
                    'size': 10
                },
            ],
            'block_device_mapping': [
                {
                    'connection_info': "fake",
                    'mount_device': "/dev/vda",
                    'boot_index': 1,
                    'delete_on_termination': True
                },
            ]
        }
        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta,
                                             block_device_info)

        expect = {
            'disk': {
                'bus': 'virtio',
                'dev': 'vdf',
                'type': 'disk',
                'boot_index': '1'
            },
            '/dev/vda': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '2'
            },
            'disk.eph0': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk',
                'format': 'ext4'
            },
            'disk.eph1': {
                'bus': 'ide',
                'dev': 'vdc',
                'type': 'disk'
            },
            'disk.swap': {
                'bus': 'virtio',
                'dev': 'vdy',
                'type': 'disk'
            },
            'root': {
                'bus': 'virtio',
                'dev': 'vdf',
                'type': 'disk',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)
예제 #26
0
    def test_get_disk_mapping_ephemeral(self):
        # A disk mapping with ephemeral devices
        instance_ref = objects.Instance(**self.test_instance)
        instance_ref.flavor.swap = 5
        image_meta = {}

        block_device_info = {
            'ephemerals': [
                {
                    'device_type': 'disk',
                    'guest_format': 'ext4',
                    'device_name': '/dev/vdb',
                    'size': 10
                },
                {
                    'disk_bus': 'ide',
                    'guest_format': None,
                    'device_name': '/dev/vdc',
                    'size': 10
                },
                {
                    'device_type': 'floppy',
                    'device_name': '/dev/vdd',
                    'size': 10
                },
            ]
        }
        mapping = blockinfo.get_disk_mapping("kvm", instance_ref, "virtio",
                                             "ide", image_meta,
                                             block_device_info)

        expect = {
            'disk': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
            'disk.eph0': {
                'bus': 'virtio',
                'dev': 'vdb',
                'type': 'disk',
                'format': 'ext4'
            },
            'disk.eph1': {
                'bus': 'ide',
                'dev': 'vdc',
                'type': 'disk'
            },
            'disk.eph2': {
                'bus': 'virtio',
                'dev': 'vdd',
                'type': 'floppy'
            },
            'disk.swap': {
                'bus': 'virtio',
                'dev': 'vde',
                'type': 'disk'
            },
            'root': {
                'bus': 'virtio',
                'dev': 'vda',
                'type': 'disk',
                'boot_index': '1'
            },
        }
        self.assertEqual(expect, mapping)