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()
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)
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)
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)
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")
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')
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)
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')