コード例 #1
0
ファイル: blockinfo.py プロジェクト: Milstein/nova
def default_device_names(virt_type, context, instance, root_device_name,
                         ephemerals, swap, block_device_mapping,
                         image_meta):

    block_device_info = {
        'root_device_name': root_device_name,
        'swap': driver_block_device.get_swap(
            driver_block_device.convert_swap(swap)),
        'ephemerals': driver_block_device.convert_ephemerals(ephemerals),
        'block_device_mapping': (
            driver_block_device.convert_volumes(
                block_device_mapping) +
            driver_block_device.convert_snapshots(
                block_device_mapping) +
            driver_block_device.convert_blanks(
                block_device_mapping))
    }

    get_disk_info(virt_type, instance, image_meta, block_device_info)

    for driver_bdm in itertools.chain(block_device_info['ephemerals'],
                               [block_device_info['swap']] if
                               block_device_info['swap'] else [],
                               block_device_info['block_device_mapping']):
        driver_bdm.save()
コード例 #2
0
ファイル: blockinfo.py プロジェクト: vuil/nova
def default_device_names(virt_type, instance, root_device_name,
                         update_func, ephemerals, swap, block_device_mapping):

    block_device_info = {
        'root_device_name': root_device_name,
        'swap': driver_block_device.get_swap(
            driver_block_device.convert_swap(swap)),
        'ephemerals': driver_block_device.convert_ephemerals(ephemerals),
        'block_device_mapping': (
            driver_block_device.convert_volumes(
                block_device_mapping) +
            driver_block_device.convert_snapshots(
                block_device_mapping))
    }

    devices = dict((bdm.get('id'), bdm) for bdm in
        itertools.chain(ephemerals, swap, block_device_mapping))

    get_disk_info(virt_type, instance, block_device_info)

    for driver_bdm in itertools.chain(block_device_info['ephemerals'],
                               [block_device_info['swap']] if
                               block_device_info['swap'] else [],
                               block_device_info['block_device_mapping']):
        if driver_bdm.id in devices:
            bdm = devices[driver_bdm.id]
            # NOTE (ndipanov): We may have chosen different values
            # for bus and type so update those along with device name
            bdm['device_name'] = get_device_name(driver_bdm)
            bdm['disk_bus'] = driver_bdm['disk_bus']
            # Swap does not have device type in driver format
            bdm['device_type'] = driver_bdm.get('device_type', 'disk')
            if update_func:
                update_func(bdm)
コード例 #3
0
def default_device_names(virt_type, context, instance, root_device_name,
                         ephemerals, swap, block_device_mapping,
                         image_meta):

    block_device_info = {
        'root_device_name': root_device_name,
        'swap': driver_block_device.get_swap(
            driver_block_device.convert_swap(swap)),
        'ephemerals': driver_block_device.convert_ephemerals(ephemerals),
        'block_device_mapping': (
            driver_block_device.convert_volumes(
                block_device_mapping) +
            driver_block_device.convert_snapshots(
                block_device_mapping) +
            driver_block_device.convert_blanks(
                block_device_mapping))
    }

    get_disk_info(virt_type, instance, image_meta, block_device_info)

    for driver_bdm in itertools.chain(block_device_info['ephemerals'],
                               [block_device_info['swap']] if
                               block_device_info['swap'] else [],
                               block_device_info['block_device_mapping']):
        driver_bdm.save(context)
コード例 #4
0
ファイル: blockinfo.py プロジェクト: BigFire/nova-1
def default_device_names(virt_type, instance, root_device_name, update_func,
                         ephemerals, swap, block_device_mapping):

    block_device_info = {
        'root_device_name':
        root_device_name,
        'swap':
        driver_block_device.get_swap(driver_block_device.convert_swap(swap)),
        'ephemerals':
        driver_block_device.convert_ephemerals(ephemerals),
        'block_device_mapping':
        (driver_block_device.convert_volumes(block_device_mapping) +
         driver_block_device.convert_snapshots(block_device_mapping))
    }

    devices = dict(
        (bdm.get('id'), bdm)
        for bdm in itertools.chain(ephemerals, swap, block_device_mapping))

    get_disk_info(virt_type, instance, block_device_info)

    for driver_bdm in itertools.chain(
            block_device_info['ephemerals'],
        [block_device_info['swap']] if block_device_info['swap'] else [],
            block_device_info['block_device_mapping']):
        if driver_bdm.id in devices:
            bdm = devices[driver_bdm.id]
            # NOTE (ndipanov): We may have chosen different values
            # for bus and type so update those along with device name
            bdm['device_name'] = get_device_name(driver_bdm)
            bdm['disk_bus'] = driver_bdm['disk_bus']
            # Swap does not have device type in driver format
            bdm['device_type'] = driver_bdm.get('device_type', 'disk')
            if update_func:
                update_func(bdm)
コード例 #5
0
ファイル: test_virt_drivers.py プロジェクト: anantk/nova
    def test_attach_detach_different_power_states(self):
        instance_ref, network_info = self._get_running_instance()
        connection_info = {"driver_volume_type": "fake", "serial": "fake_serial", "data": {}}
        self.connection.power_off(instance_ref)
        self.connection.attach_volume(None, connection_info, instance_ref, "/dev/sda")

        bdm = {
            "root_device_name": None,
            "swap": None,
            "ephemerals": [],
            "block_device_mapping": driver_block_device.convert_volumes(
                [
                    fake_block_device.FakeDbBlockDeviceDict(
                        {
                            "id": 1,
                            "instance_uuid": instance_ref["uuid"],
                            "device_name": "/dev/sda",
                            "source_type": "volume",
                            "destination_type": "volume",
                            "delete_on_termination": False,
                            "snapshot_id": None,
                            "volume_id": "abcdedf",
                            "volume_size": None,
                            "no_device": None,
                        }
                    )
                ]
            ),
        }
        bdm["block_device_mapping"][0]["connection_info"] = {"driver_volume_type": "fake", "data": {}}
        with mock.patch.object(driver_block_device.DriverVolumeBlockDevice, "save"):
            self.connection.power_on(self.ctxt, instance_ref, network_info, bdm)
            self.connection.detach_volume(connection_info, instance_ref, "/dev/sda")
コード例 #6
0
    def test_attach_detach_different_power_states(self, _):
        instance_ref, network_info = self._get_running_instance()
        connection_info = {
            "driver_volume_type": "fake",
            "serial": "fake_serial",
            "data": {}
        }
        self.connection.power_off(instance_ref)
        self.connection.attach_volume(None, connection_info, instance_ref,
                                      '/dev/sda')

        bdm = {
            'root_device_name':
            None,
            'swap':
            None,
            'ephemerals': [],
            'block_device_mapping':
            driver_block_device.convert_volumes([
                objects.BlockDeviceMapping(
                    self.ctxt,
                    **fake_block_device.FakeDbBlockDeviceDict({
                        'id':
                        1,
                        'instance_uuid':
                        instance_ref['uuid'],
                        'device_name':
                        '/dev/sda',
                        'source_type':
                        'volume',
                        'destination_type':
                        'volume',
                        'delete_on_termination':
                        False,
                        'snapshot_id':
                        None,
                        'volume_id':
                        'abcdedf',
                        'volume_size':
                        None,
                        'no_device':
                        None
                    })),
            ])
        }
        bdm['block_device_mapping'][0]['connection_info'] = ({
            'driver_volume_type':
            'fake',
            'data': {}
        })
        with mock.patch.object(driver_block_device.DriverVolumeBlockDevice,
                               'save'):
            self.connection.power_on(self.ctxt, instance_ref, network_info,
                                     bdm)
            self.connection.detach_volume(mock.sentinel.context,
                                          connection_info, instance_ref,
                                          '/dev/sda')
コード例 #7
0
def default_device_names(virt_type, context, instance, root_device_name, ephemerals, swap, block_device_mapping):

    block_device_info = {
        "root_device_name": root_device_name,
        "swap": driver_block_device.get_swap(driver_block_device.convert_swap(swap)),
        "ephemerals": driver_block_device.convert_ephemerals(ephemerals),
        "block_device_mapping": (
            driver_block_device.convert_volumes(block_device_mapping)
            + driver_block_device.convert_snapshots(block_device_mapping)
        ),
    }

    get_disk_info(virt_type, instance, block_device_info)

    for driver_bdm in itertools.chain(
        block_device_info["ephemerals"],
        [block_device_info["swap"]] if block_device_info["swap"] else [],
        block_device_info["block_device_mapping"],
    ):
        driver_bdm.save(context)
コード例 #8
0
ファイル: test_virt_drivers.py プロジェクト: mahak/nova
    def test_attach_detach_different_power_states(self, _):
        instance_ref, network_info = self._get_running_instance()
        connection_info = {
            "driver_volume_type": "fake",
            "serial": "fake_serial",
            "data": {}
        }
        self.connection.power_off(instance_ref)
        self.connection.attach_volume(None, connection_info, instance_ref,
                                      '/dev/sda')

        bdm = {
            'root_device_name': None,
            'swap': None,
            'ephemerals': [],
            'block_device_mapping': driver_block_device.convert_volumes([
                objects.BlockDeviceMapping(
                    self.ctxt,
                    **fake_block_device.FakeDbBlockDeviceDict(
                        {'id': 1, 'instance_uuid': instance_ref['uuid'],
                         'device_name': '/dev/sda',
                         'source_type': 'volume',
                         'destination_type': 'volume',
                         'delete_on_termination': False,
                         'snapshot_id': None,
                         'volume_id': 'abcdedf',
                         'volume_size': None,
                         'no_device': None
                         })),
                ])
        }
        bdm['block_device_mapping'][0]['connection_info'] = (
            {'driver_volume_type': 'fake', 'data': {}})
        with mock.patch.object(
                driver_block_device.DriverVolumeBlockDevice, 'save'):
            self.connection.power_on(
                    self.ctxt, instance_ref, network_info, bdm)
            self.connection.detach_volume(mock.sentinel.context,
                                          connection_info,
                                          instance_ref,
                                          '/dev/sda')