From 3c1085f528596089a638ac3bb44a9ed3e201e62f Mon Sep 17 00:00:00 2001 From: Chris Behrens Date: Fri, 16 May 2014 21:36:13 -0700 Subject: [PATCH] Fix direct use of block_device module objects This replaces all uses of nova.objects.block_device.Block* with nova.objects.Block*. Partial-Blueprint: object-subclassing Change-Id: I7b7641cc75bbc180abd36920deedcb097fc3ecbc --- nova/api/ec2/cloud.py | 4 +- nova/api/metadata/base.py | 4 +- .../compute/contrib/extended_volumes.py | 4 +- nova/api/openstack/compute/contrib/volumes.py | 10 +-- .../compute/plugins/v3/extended_volumes.py | 8 +- .../openstack/compute/plugins/v3/servers.py | 4 +- nova/api/openstack/compute/servers.py | 4 +- nova/compute/api.py | 19 ++-- nova/compute/manager.py | 78 ++++++++--------- nova/conductor/manager.py | 7 +- .../openstack/compute/contrib/test_volumes.py | 6 +- .../plugins/v3/test_extended_volumes.py | 2 +- nova/tests/compute/test_compute.py | 86 +++++++++---------- nova/tests/compute/test_compute_api.py | 44 +++++----- nova/tests/compute/test_compute_mgr.py | 14 ++- nova/tests/compute/test_compute_utils.py | 4 +- nova/tests/integrated/test_api_samples.py | 4 +- .../integrated/v3/test_extended_volumes.py | 4 +- nova/tests/objects/test_block_device.py | 29 ++++--- nova/tests/test_block_device.py | 16 ++-- nova/tests/virt/libvirt/test_blockinfo.py | 12 +-- nova/virt/block_device.py | 7 +- nova/virt/libvirt/blockinfo.py | 4 +- nova/virt/libvirt/driver.py | 6 +- 24 files changed, 186 insertions(+), 194 deletions(-) diff --git a/nova/api/ec2/cloud.py b/nova/api/ec2/cloud.py index 82c765fb513a..b1596684815f 100644 --- a/nova/api/ec2/cloud.py +++ b/nova/api/ec2/cloud.py @@ -41,8 +41,8 @@ from nova import exception from nova.image import s3 from nova import network from nova.network.security_group import neutron_driver +from nova import objects from nova.objects import base as obj_base -from nova.objects import block_device as block_device_obj from nova.objects import ec2 as ec2_obj from nova.objects import flavor as flavor_obj from nova.objects import instance as instance_obj @@ -1058,7 +1058,7 @@ class CloudController(object): """Format InstanceBlockDeviceMappingResponseItemType.""" root_device_type = 'instance-store' mapping = [] - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance_uuid) for bdm in bdms: volume_id = bdm.volume_id diff --git a/nova/api/metadata/base.py b/nova/api/metadata/base.py index 020314b31e58..bf848e9539a2 100644 --- a/nova/api/metadata/base.py +++ b/nova/api/metadata/base.py @@ -30,8 +30,8 @@ from nova.compute import flavors from nova import conductor from nova import context from nova import network +from nova import objects from nova.objects import base as obj_base -from nova.objects import block_device as block_device_obj from nova.objects import instance as instance_obj from nova.objects import security_group as secgroup_obj from nova.openstack.common import importutils @@ -524,7 +524,7 @@ def get_metadata_by_instance_id(conductor_api, instance_id, address, def _format_instance_mapping(ctxt, instance): - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( ctxt, instance.uuid) return block_device.instance_block_mapping(instance, bdms) diff --git a/nova/api/openstack/compute/contrib/extended_volumes.py b/nova/api/openstack/compute/contrib/extended_volumes.py index 645c3f836bf6..f4af2f3d6320 100644 --- a/nova/api/openstack/compute/contrib/extended_volumes.py +++ b/nova/api/openstack/compute/contrib/extended_volumes.py @@ -18,7 +18,7 @@ from nova.api.openstack import extensions from nova.api.openstack import wsgi from nova.api.openstack import xmlutil from nova import compute -from nova.objects import block_device as block_device_obj +from nova import objects authorize = extensions.soft_extension_authorizer('compute', 'extended_volumes') @@ -29,7 +29,7 @@ class ExtendedVolumesController(wsgi.Controller): self.compute_api = compute.API() def _extend_server(self, context, server, instance): - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance['uuid']) volume_ids = [bdm.volume_id for bdm in bdms if bdm.volume_id] key = "%s:volumes_attached" % Extended_volumes.alias diff --git a/nova/api/openstack/compute/contrib/volumes.py b/nova/api/openstack/compute/contrib/volumes.py index 9597f0ba2eaf..8a613c8bcc7d 100644 --- a/nova/api/openstack/compute/contrib/volumes.py +++ b/nova/api/openstack/compute/contrib/volumes.py @@ -24,7 +24,7 @@ from nova.api.openstack import wsgi from nova.api.openstack import xmlutil from nova import compute from nova import exception -from nova.objects import block_device as block_device_obj +from nova import objects from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova.openstack.common import strutils @@ -355,7 +355,7 @@ class VolumeAttachmentController(wsgi.Controller): except exception.NotFound as e: raise exc.HTTPNotFound(explanation=e.format_message()) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance['uuid']) if not bdms: @@ -468,7 +468,7 @@ class VolumeAttachmentController(wsgi.Controller): except exception.NotFound as e: raise exc.HTTPNotFound(explanation=e.format_message()) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) found = False try: @@ -513,7 +513,7 @@ class VolumeAttachmentController(wsgi.Controller): volume = self.volume_api.get(context, volume_id) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance['uuid']) if not bdms: msg = _("Instance %s is not attached.") % server_id @@ -557,7 +557,7 @@ class VolumeAttachmentController(wsgi.Controller): except exception.NotFound as e: raise exc.HTTPNotFound(explanation=e.format_message()) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance['uuid']) limited_list = common.limited(bdms, req) results = [] diff --git a/nova/api/openstack/compute/plugins/v3/extended_volumes.py b/nova/api/openstack/compute/plugins/v3/extended_volumes.py index 29eeb954c126..6d5eb48630cf 100644 --- a/nova/api/openstack/compute/plugins/v3/extended_volumes.py +++ b/nova/api/openstack/compute/plugins/v3/extended_volumes.py @@ -23,7 +23,7 @@ from nova.api.openstack import wsgi from nova.api import validation from nova import compute from nova import exception -from nova.objects import block_device as block_device_obj +from nova import objects from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging from nova import volume @@ -46,7 +46,7 @@ class ExtendedVolumesController(wsgi.Controller): self.volume_api = volume.API() def _extend_server(self, context, server, instance): - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance['uuid']) volume_ids = [bdm['volume_id'] for bdm in bdms if bdm['volume_id']] key = "%s:volumes_attached" % ExtendedVolumes.alias @@ -70,7 +70,7 @@ class ExtendedVolumesController(wsgi.Controller): instance = common.get_instance(self.compute_api, context, id, want_objects=True) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) found = False try: @@ -185,7 +185,7 @@ class ExtendedVolumesController(wsgi.Controller): except exception.VolumeNotFound as e: raise exc.HTTPNotFound(explanation=e.format_message()) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) if not bdms: msg = _("Volume %(volume_id)s is not attached to the " diff --git a/nova/api/openstack/compute/plugins/v3/servers.py b/nova/api/openstack/compute/plugins/v3/servers.py index b324a4c1f76c..b194c681fc35 100644 --- a/nova/api/openstack/compute/plugins/v3/servers.py +++ b/nova/api/openstack/compute/plugins/v3/servers.py @@ -32,7 +32,7 @@ from nova import compute from nova.compute import flavors from nova import exception from nova.image import glance -from nova.objects import block_device as block_device_obj +from nova import objects from nova.objects import instance as instance_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging @@ -894,7 +894,7 @@ class ServersController(wsgi.Controller): instance = self._get_server(context, req, id) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) try: diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index 831eb9ff9b80..e74969542f5b 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -33,7 +33,7 @@ from nova import block_device from nova import compute from nova.compute import flavors from nova import exception -from nova.objects import block_device as block_device_obj +from nova import objects from nova.objects import instance as instance_obj from nova.openstack.common.gettextutils import _ from nova.openstack.common import log as logging @@ -1434,7 +1434,7 @@ class Controller(wsgi.Controller): instance = self._get_server(context, req, id) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) try: diff --git a/nova/compute/api.py b/nova/compute/api.py index afd800ce3ead..d8f5e8ee87bc 100644 --- a/nova/compute/api.py +++ b/nova/compute/api.py @@ -51,7 +51,6 @@ from nova.network.security_group import security_group_base from nova import notifications from nova import objects from nova.objects import base as obj_base -from nova.objects import block_device as block_device_obj from nova.objects import flavor as flavor_obj from nova.objects import instance_action from nova.objects import instance_group as instance_group_obj @@ -1402,7 +1401,7 @@ class API(base.Base): return host = instance['host'] - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) reservations = None @@ -2025,7 +2024,7 @@ class API(base.Base): properties['root_device_name'] = instance['root_device_name'] properties.update(extra_properties or {}) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance['uuid']) mapping = [] @@ -2180,7 +2179,7 @@ class API(base.Base): # system metadata... and copy in the properties for the new image. orig_sys_metadata = _reset_image_metadata() - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) self._record_action_start(context, instance, instance_actions.REBUILD) @@ -2573,7 +2572,7 @@ class API(base.Base): rescue_image_ref=None): """Rescue the given instance.""" - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) for bdm in bdms: if bdm.volume_id: @@ -2754,7 +2753,7 @@ class API(base.Base): device = self.compute_rpcapi.reserve_block_device_name( context, device=device, instance=instance, volume_id=volume_id, disk_bus=disk_bus, device_type=device_type) - volume_bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + volume_bdm = objects.BlockDeviceMapping.get_by_volume_id( context, volume_id) try: volume = self.volume_api.get(context, volume_id) @@ -2988,8 +2987,8 @@ class API(base.Base): return True if bdms is None: - bdms = block_device_obj.BlockDeviceMappingList.\ - get_by_instance_uuid(context, instance['uuid']) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance['uuid']) root_bdm = bdms.root_bdm() if not root_bdm: @@ -3056,7 +3055,7 @@ class API(base.Base): @wrap_check_policy def volume_snapshot_create(self, context, volume_id, create_info): - bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + bdm = objects.BlockDeviceMapping.get_by_volume_id( context, volume_id, expected_attrs=['instance']) self.compute_rpcapi.volume_snapshot_create(context, bdm.instance, volume_id, create_info) @@ -3071,7 +3070,7 @@ class API(base.Base): @wrap_check_policy def volume_snapshot_delete(self, context, volume_id, snapshot_id, delete_info): - bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + bdm = objects.BlockDeviceMapping.get_by_volume_id( context, volume_id, expected_attrs=['instance']) self.compute_rpcapi.volume_snapshot_delete(context, bdm.instance, volume_id, snapshot_id, delete_info) diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 58f620f5fdfd..bdc6ecbd3d8d 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -64,7 +64,6 @@ from nova.network import model as network_model from nova.network.security_group import openstack_driver from nova import objects from nova.objects import base as obj_base -from nova.objects import block_device as block_device_obj from nova.objects import compute_node as compute_node_obj from nova.objects import external_event as external_event_obj from nova.objects import flavor as flavor_obj @@ -739,7 +738,7 @@ class ComputeManager(manager.Manager): deleted in the DB """ instance.destroy() - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) quotas = quotas_obj.Quotas() project_id, user_id = quotas_obj.ids_from_instance(context, instance) @@ -831,8 +830,8 @@ class ComputeManager(manager.Manager): 'the deletion now.'), instance=instance) instance.obj_load_attr('metadata') instance.obj_load_attr('system_metadata') - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid)) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) # FIXME(comstud): This needs fixed. We should be creating # reservations and updating quotas, because quotas # wouldn't have been updated for this instance since it is @@ -1289,7 +1288,7 @@ class ComputeManager(manager.Manager): LOG.debug("No node specified, defaulting to %s", node) network_info = None - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance['uuid']) # b64 decode the files to inject: @@ -1412,8 +1411,8 @@ class ComputeManager(manager.Manager): LOG.debug("Clean up resource before rescheduling.", instance=instance) if bdms is None: - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid)) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) self._shutdown_instance(context, instance, bdms, requested_networks) @@ -1809,8 +1808,8 @@ class ComputeManager(manager.Manager): """Transform block devices to the driver block_device format.""" if not bdms: - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance['uuid'])) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance['uuid']) swap = driver_block_device.convert_swap(bdms) ephemerals = driver_block_device.convert_ephemerals(bdms) block_device_mapping = ( @@ -2267,10 +2266,10 @@ class ComputeManager(manager.Manager): # to avoid converting them back when we can just get them. # Remove this when we bump the RPC major version to 4.0 if (bdms and - any(not isinstance(bdm, block_device_obj.BlockDeviceMapping) + any(not isinstance(bdm, obj_base.NovaObject) for bdm in bdms)): - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid)) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) quotas = quotas_obj.Quotas.from_reservations(context, reservations, @@ -2454,7 +2453,7 @@ class ComputeManager(manager.Manager): # to avoid converting them back when we can just get them. # Remove this on the next major RPC version bump if (bdms and - any(not isinstance(bdm, block_device_obj.BlockDeviceMapping) + any(not isinstance(bdm, obj_base.NovaObject) for bdm in bdms)): bdms = None @@ -2530,8 +2529,8 @@ class ComputeManager(manager.Manager): network_info = compute_utils.get_nw_info_for_instance(instance) if bdms is None: - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid)) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) block_device_info = \ self._get_instance_block_device_info( @@ -3214,8 +3213,8 @@ class ComputeManager(manager.Manager): migration_p) network_info = self._get_instance_nw_info(context, instance) - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid)) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) block_device_info = self._get_instance_block_device_info( context, instance, bdms=bdms) @@ -3468,8 +3467,8 @@ class ComputeManager(manager.Manager): self._notify_about_instance_usage( context, instance, "resize.start", network_info=network_info) - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid)) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) block_device_info = self._get_instance_block_device_info( context, instance, bdms=bdms) @@ -3908,7 +3907,7 @@ class ComputeManager(manager.Manager): instance.save() network_info = self._get_instance_nw_info(context, instance) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid) block_device_info = self._prep_block_device(context, instance, bdms) scrubbed_keys = self._unshelve_instance_key_scrub(instance) @@ -4138,14 +4137,14 @@ class ComputeManager(manager.Manager): @utils.synchronized(instance['uuid']) def do_reserve(): bdms = ( - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( context, instance.uuid)) device_name = compute_utils.get_device_name_for_instance( context, instance, bdms, device) # NOTE(vish): create bdm here to avoid race condition - bdm = block_device_obj.BlockDeviceMapping( + bdm = objects.BlockDeviceMapping( source_type='volume', destination_type='volume', instance_uuid=instance.uuid, volume_id=volume_id or 'reserved', @@ -4165,7 +4164,7 @@ class ComputeManager(manager.Manager): instance, bdm=None): """Attach a volume to an instance.""" if not bdm: - bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + bdm = objects.BlockDeviceMapping.get_by_volume_id( context, volume_id) driver_bdm = driver_block_device.DriverVolumeBlockDevice(bdm) try: @@ -4236,7 +4235,7 @@ class ComputeManager(manager.Manager): @wrap_instance_fault def detach_volume(self, context, volume_id, instance): """Detach a volume from an instance.""" - bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + bdm = objects.BlockDeviceMapping.get_by_volume_id( context, volume_id) if CONF.volume_usage_poll_interval > 0: vol_stats = [] @@ -4335,7 +4334,7 @@ class ComputeManager(manager.Manager): """Swap volume for an instance.""" context = context.elevated() - bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + bdm = objects.BlockDeviceMapping.get_by_volume_id( context, old_volume_id, instance_uuid=instance.uuid) connector = self.driver.get_volume_connector(instance) comp_ret, new_cinfo = self._swap_volume(context, instance, @@ -4373,7 +4372,7 @@ class ComputeManager(manager.Manager): # detached, or delete the bdm, just remove the # connection from this host. try: - bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + bdm = objects.BlockDeviceMapping.get_by_volume_id( context, volume_id) inst_obj = objects.Instance._from_db_object(context, objects.Instance(), @@ -4610,7 +4609,7 @@ class ComputeManager(manager.Manager): LOG.info(_('_post_live_migration() is started..'), instance=instance) - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( ctxt, instance['uuid']) # Cleanup source host post live-migration @@ -4777,11 +4776,12 @@ class ComputeManager(manager.Manager): # NOTE(tr3buchet): setup networks on source host (really it's re-setup) self.network_api.setup_networks_on_host(context, instance, self.host) - for bdm in (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance['uuid'])): + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance['uuid']) + for bdm in bdms: if bdm.is_volume: - self.compute_rpcapi.remove_volume_connection(context, instance, - bdm.volume_id, dest) + self.compute_rpcapi.remove_volume_connection( + context, instance, bdm.volume_id, dest) self._notify_about_instance_usage(context, instance, "live_migration._rollback.start") @@ -5198,10 +5198,9 @@ class ComputeManager(manager.Manager): compute_host_bdms = [] instances = objects.InstanceList.get_by_host(context, self.host) for instance in instances: - instance_bdms = [bdm for bdm in - (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid)) - if bdm.is_volume] + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) + instance_bdms = [bdm for bdm in bdms if bdm.is_volume] compute_host_bdms.append(dict(instance=instance, instance_bdms=instance_bdms)) @@ -5454,8 +5453,8 @@ class ComputeManager(manager.Manager): use_slave=True) for instance in instances: if self._deleted_old_enough(instance, interval): - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid)) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) LOG.info(_('Reclaiming deleted instance'), instance=instance) try: self._delete_instance(context, instance, bdms, quotas) @@ -5530,9 +5529,8 @@ class ComputeManager(manager.Manager): # NOTE(sirp): admin contexts don't ordinarily return deleted records with utils.temporary_mutation(context, read_deleted="yes"): for instance in self._running_deleted_instances(context): - bdms = (block_device_obj.BlockDeviceMappingList. - get_by_instance_uuid(context, instance.uuid, - use_slave=True)) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid, use_slave=True) if action == "log": LOG.warning(_("Detected instance with name label " diff --git a/nova/conductor/manager.py b/nova/conductor/manager.py index b06b4b18c1c1..e23e35561e5f 100644 --- a/nova/conductor/manager.py +++ b/nova/conductor/manager.py @@ -36,8 +36,8 @@ from nova import manager from nova import network from nova.network.security_group import openstack_driver from nova import notifications +from nova import objects from nova.objects import base as nova_object -from nova.objects import block_device as block_device_object from nova.objects import instance as instance_obj from nova.objects import migration as migration_obj from nova.objects import quotas as quotas_obj @@ -817,9 +817,8 @@ class ComputeTaskManager(base.Base): host) # The block_device_mapping passed from the api doesn't contain # instance specific information - bdo = block_device_object - bdms = bdo.BlockDeviceMappingList.get_by_instance_uuid(context, - instance.uuid) + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( + context, instance.uuid) self.compute_rpcapi.build_and_run_instance(context, instance=instance, host=host['host'], image=image, diff --git a/nova/tests/api/openstack/compute/contrib/test_volumes.py b/nova/tests/api/openstack/compute/contrib/test_volumes.py index 5513c41801c3..44abbb1da645 100644 --- a/nova/tests/api/openstack/compute/contrib/test_volumes.py +++ b/nova/tests/api/openstack/compute/contrib/test_volumes.py @@ -31,7 +31,7 @@ from nova.compute import flavors from nova import context from nova import db from nova import exception -from nova.objects import block_device as block_device_obj +from nova import objects from nova.openstack.common import jsonutils from nova.openstack.common import timeutils from nova import test @@ -360,7 +360,7 @@ class VolumeAttachTests(test.TestCase): FAKE_UUID, FAKE_UUID_A) - @mock.patch.object(block_device_obj.BlockDeviceMappingList, + @mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid', return_value=None) def test_show_no_bdms(self, mock_mr): req = webob.Request.blank('/v2/servers/id/os-volume_attachments/uuid') @@ -417,7 +417,7 @@ class VolumeAttachTests(test.TestCase): FAKE_UUID, FAKE_UUID_C) - @mock.patch('nova.objects.block_device.BlockDeviceMapping.is_root', + @mock.patch('nova.objects.BlockDeviceMapping.is_root', new_callable=mock.PropertyMock) def test_detach_vol_root(self, mock_isroot): req = webob.Request.blank('/v2/servers/id/os-volume_attachments/uuid') diff --git a/nova/tests/api/openstack/compute/plugins/v3/test_extended_volumes.py b/nova/tests/api/openstack/compute/plugins/v3/test_extended_volumes.py index 538a552ad933..c8a64d790a00 100644 --- a/nova/tests/api/openstack/compute/plugins/v3/test_extended_volumes.py +++ b/nova/tests/api/openstack/compute/plugins/v3/test_extended_volumes.py @@ -230,7 +230,7 @@ class ExtendedVolumesTest(test.TestCase): res = self._make_request(url, {"detach": None}) self.assertEqual(res.status_int, 400) - @mock.patch('nova.objects.block_device.BlockDeviceMapping.is_root', + @mock.patch('nova.objects.BlockDeviceMapping.is_root', new_callable=mock.PropertyMock) def test_detach_volume_root(self, mock_isroot): url = "/v3/servers/%s/action" % UUID1 diff --git a/nova/tests/compute/test_compute.py b/nova/tests/compute/test_compute.py index 74fc2b3a7dcc..ca44df8e1fb3 100644 --- a/nova/tests/compute/test_compute.py +++ b/nova/tests/compute/test_compute.py @@ -400,7 +400,7 @@ class ComputeVolumeTestCase(BaseTestCase): self.stubs.Set(db, 'block_device_mapping_update', store_cinfo) def test_attach_volume_serial(self): - fake_bdm = block_device_obj.BlockDeviceMapping(**self.fake_volume) + fake_bdm = objects.BlockDeviceMapping(**self.fake_volume) with (mock.patch.object(cinder.API, 'get_volume_encryption_metadata', return_value={})): instance = self._create_fake_instance() @@ -409,7 +409,7 @@ class ComputeVolumeTestCase(BaseTestCase): self.assertEqual(self.cinfo.get('serial'), self.volume_id) def test_attach_volume_raises(self): - fake_bdm = block_device_obj.BlockDeviceMapping(**self.fake_volume) + fake_bdm = objects.BlockDeviceMapping(**self.fake_volume) instance = self._create_fake_instance() def fake_attach(*args, **kwargs): @@ -419,7 +419,7 @@ class ComputeVolumeTestCase(BaseTestCase): mock.patch.object(driver_block_device.DriverVolumeBlockDevice, 'attach'), mock.patch.object(cinder.API, 'unreserve_volume'), - mock.patch.object(block_device_obj.BlockDeviceMapping, + mock.patch.object(objects.BlockDeviceMapping, 'destroy') ) as (mock_attach, mock_unreserve, mock_destroy): mock_attach.side_effect = fake_attach @@ -431,13 +431,13 @@ class ComputeVolumeTestCase(BaseTestCase): self.assertTrue(mock_destroy.called) def test_detach_volume_api_raises(self): - fake_bdm = block_device_obj.BlockDeviceMapping(**self.fake_volume) + fake_bdm = objects.BlockDeviceMapping(**self.fake_volume) instance = self._create_fake_instance() with contextlib.nested( mock.patch.object(self.compute, '_detach_volume'), mock.patch.object(self.compute.volume_api, 'detach'), - mock.patch.object(block_device_obj.BlockDeviceMapping, + mock.patch.object(objects.BlockDeviceMapping, 'get_by_volume_id'), mock.patch.object(fake_bdm, 'destroy') ) as (mock_internal_detach, mock_detach, mock_get, mock_destroy): @@ -452,11 +452,11 @@ class ComputeVolumeTestCase(BaseTestCase): self.assertTrue(mock_destroy.called) def test_attach_volume_no_bdm(self): - fake_bdm = block_device_obj.BlockDeviceMapping(**self.fake_volume) + fake_bdm = objects.BlockDeviceMapping(**self.fake_volume) instance = self._create_fake_instance() with contextlib.nested( - mock.patch.object(block_device_obj.BlockDeviceMapping, + mock.patch.object(objects.BlockDeviceMapping, 'get_by_volume_id', return_value=fake_bdm), mock.patch.object(self.compute, '_attach_volume') ) as (mock_get_by_id, mock_attach): @@ -501,7 +501,7 @@ class ComputeVolumeTestCase(BaseTestCase): def test_boot_volume_serial(self): with ( - mock.patch.object(block_device_obj.BlockDeviceMapping, 'save') + mock.patch.object(objects.BlockDeviceMapping, 'save') ) as mock_save: block_device_mapping = [ block_device.BlockDeviceDict({ @@ -635,7 +635,7 @@ class ComputeVolumeTestCase(BaseTestCase): self.mox.UnsetStubs() @mock.patch.object(objects.InstanceList, 'get_by_host') - @mock.patch.object(block_device_obj.BlockDeviceMappingList, + @mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid') def test_get_host_volume_bdms(self, mock_get_by_inst, mock_get_by_host): fake_instance = mock.Mock(uuid='fake-instance-uuid') @@ -1707,7 +1707,7 @@ class ComputeTestCase(BaseTestCase): bdms = [] def fake_rpc_reserve_block_device_name(self, context, **kwargs): - bdm = block_device_obj.BlockDeviceMapping( + bdm = objects.BlockDeviceMapping( **{'source_type': 'volume', 'destination_type': 'volume', 'volume_id': 1, @@ -2570,7 +2570,7 @@ class ComputeTestCase(BaseTestCase): })]) with (mock.patch.object( - block_device_obj.BlockDeviceMappingList, + objects.BlockDeviceMappingList, 'get_by_instance_uuid', return_value=bdms) ) as mock_get_by_instance: @@ -2603,7 +2603,7 @@ class ComputeTestCase(BaseTestCase): 'destination_type': 'volume'}) ]) with (mock.patch.object( - block_device_obj.BlockDeviceMappingList, + objects.BlockDeviceMappingList, 'get_by_instance_uuid')) as mock_get_by_instance: block_device_info = ( self.compute._get_instance_block_device_info( @@ -2667,7 +2667,7 @@ class ComputeTestCase(BaseTestCase): [swap, ephemeral0, ephemeral1]) with ( - mock.patch.object(block_device_obj.BlockDeviceMappingList, + mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid', return_value=bdms) ) as mock_get_by_instance_uuid: expected_block_device_info = { @@ -4259,7 +4259,7 @@ class ComputeTestCase(BaseTestCase): volume = {'instance_uuid': None, 'device_name': None, 'id': volume_id} - bdm = block_device_obj.BlockDeviceMapping( + bdm = objects.BlockDeviceMapping( **{'source_type': 'volume', 'destination_type': 'volume', 'volume_id': volume_id, @@ -4793,7 +4793,7 @@ class ComputeTestCase(BaseTestCase): instance.uuid, 'pre-migrating') with contextlib.nested( - mock.patch.object(block_device_obj.BlockDeviceMappingList, + mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid', return_value='fake_bdms'), mock.patch.object( self.compute, '_get_instance_block_device_info', @@ -5218,11 +5218,11 @@ class ComputeTestCase(BaseTestCase): {'host': 'fake-dest-host'}) dest_host = updated_instance['host'] fake_bdms = [ - block_device_obj.BlockDeviceMapping( + objects.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( {'volume_id': 'vol1-id', 'source_type': 'volume', 'destination_type': 'volume'})), - block_device_obj.BlockDeviceMapping( + objects.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( {'volume_id': 'vol2-id', 'source_type': 'volume', 'destination_type': 'volume'})) @@ -5233,7 +5233,7 @@ class ComputeTestCase(BaseTestCase): 'get_instance_disk_info') self.mox.StubOutWithMock(self.compute.compute_rpcapi, 'pre_live_migration') - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, + self.mox.StubOutWithMock(objects.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute.network_api, 'setup_networks_on_host') @@ -5250,7 +5250,7 @@ class ComputeTestCase(BaseTestCase): self.compute.network_api.setup_networks_on_host(c, instance, self.compute.host) - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid(c, + objects.BlockDeviceMappingList.get_by_instance_uuid(c, instance.uuid).AndReturn(fake_bdms) self.compute.compute_rpcapi.remove_volume_connection( c, instance, 'vol1-id', dest_host) @@ -5458,7 +5458,7 @@ class ComputeTestCase(BaseTestCase): 'clear_events_for_instance'), mock.patch.object(self.compute, '_get_instance_block_device_info'), - mock.patch.object(block_device_obj.BlockDeviceMappingList, + mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid'), mock.patch.object(self.compute.driver, 'get_volume_connector'), mock.patch.object(cinder.API, 'terminate_connection') @@ -5797,14 +5797,14 @@ class ComputeTestCase(BaseTestCase): bdms = block_device_obj.block_device_make_list(ctxt, []) self.mox.StubOutWithMock(self.compute, "_shutdown_instance") - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, + self.mox.StubOutWithMock(objects.BlockDeviceMappingList, "get_by_instance_uuid") # Simulate an error and make sure cleanup proceeds with next instance. self.compute._shutdown_instance(ctxt, inst1, bdms, notify=False).\ AndRaise(test.TestingException) - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid(ctxt, + objects.BlockDeviceMappingList.get_by_instance_uuid(ctxt, inst1.uuid, use_slave=True).AndReturn(bdms) - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid(ctxt, + objects.BlockDeviceMappingList.get_by_instance_uuid(ctxt, inst2.uuid, use_slave=True).AndReturn(bdms) self.compute._shutdown_instance(ctxt, inst2, bdms, notify=False).\ AndReturn(None) @@ -6549,7 +6549,7 @@ class ComputeTestCase(BaseTestCase): self.mox.StubOutWithMock(objects.InstanceList, 'get_by_filters') self.mox.StubOutWithMock(self.compute, '_deleted_old_enough') - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, + self.mox.StubOutWithMock(objects.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute, '_delete_instance') @@ -6561,7 +6561,7 @@ class ComputeTestCase(BaseTestCase): # The first instance delete fails. self.compute._deleted_old_enough(instance1, 3600).AndReturn(True) - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( ctxt, instance1.uuid).AndReturn([]) self.compute._delete_instance(ctxt, instance1, [], self.none_quotas).AndRaise( @@ -6569,7 +6569,7 @@ class ComputeTestCase(BaseTestCase): # The second instance delete that follows. self.compute._deleted_old_enough(instance2, 3600).AndReturn(True) - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( ctxt, instance2.uuid).AndReturn([]) self.compute._delete_instance(ctxt, instance2, [], self.none_quotas) @@ -6719,7 +6719,7 @@ class ComputeTestCase(BaseTestCase): self.mox.StubOutWithMock(self.compute, '_instance_update') self.mox.StubOutWithMock(self.compute, '_default_device_names_for_instance') - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'save') + self.mox.StubOutWithMock(objects.BlockDeviceMapping, 'save') bdms[0].save().AndReturn(None) self.compute._default_device_names_for_instance(instance, '/dev/vda', [], [], @@ -6734,7 +6734,7 @@ class ComputeTestCase(BaseTestCase): instance['root_device_name'] = None bdms[0]['device_name'] = None self.mox.StubOutWithMock(self.compute, '_instance_update') - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, 'save') + self.mox.StubOutWithMock(objects.BlockDeviceMapping, 'save') self.mox.StubOutWithMock(self.compute, '_default_root_device_name') self.mox.StubOutWithMock(self.compute, @@ -6756,7 +6756,7 @@ class ComputeTestCase(BaseTestCase): def test_reserve_block_device_name(self): instance = self._create_fake_instance_obj( params={'root_device_name': '/dev/vda'}) - bdm = block_device_obj.BlockDeviceMapping( + bdm = objects.BlockDeviceMapping( **{'source_type': 'image', 'destination_type': 'local', 'image_id': 'fake-image-id', 'device_name': '/dev/vda', 'instance_uuid': instance.uuid}) @@ -6766,7 +6766,7 @@ class ComputeTestCase(BaseTestCase): '/dev/vdb', 'fake-volume-id', 'virtio', 'disk') - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( self.context, instance.uuid) bdms = list(bdms) self.assertEqual(len(bdms), 2) @@ -7439,7 +7439,7 @@ class ComputeAPITestCase(BaseTestCase): return fake_bdms, volume - @mock.patch.object(block_device_obj.BlockDeviceMappingList, + @mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(cinder.API, 'get') def test_rescue_volume_backed_no_image(self, mock_get_vol, mock_get_bdms): @@ -7463,7 +7463,7 @@ class ComputeAPITestCase(BaseTestCase): self.compute.terminate_instance(self.context, volume_backed_inst_1, [], []) - @mock.patch.object(block_device_obj.BlockDeviceMappingList, + @mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(cinder.API, 'get') def test_rescue_volume_backed_placeholder_image(self, @@ -8339,9 +8339,9 @@ class ComputeAPITestCase(BaseTestCase): ctxt = self.context instance = self._create_fake_instance() - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, + self.mox.StubOutWithMock(objects.BlockDeviceMappingList, 'get_by_instance_uuid') - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( ctxt, instance['uuid']).AndReturn( block_device_obj.block_device_make_list(ctxt, [])) self.mox.ReplayAll() @@ -8510,7 +8510,7 @@ class ComputeAPITestCase(BaseTestCase): self.compute_api.detach_volume, self.context, instance, volume) - @mock.patch.object(block_device_obj.BlockDeviceMappingList, + @mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(cinder.API, 'get') def test_no_rescue_in_volume_state_attaching(self, @@ -8786,9 +8786,9 @@ class ComputeAPITestCase(BaseTestCase): self.stubs.Set(compute_rpcapi.ComputeAPI, 'attach_volume', fake_rpc_attach_volume) - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, + self.mox.StubOutWithMock(objects.BlockDeviceMapping, 'get_by_volume_id') - block_device_obj.BlockDeviceMapping.get_by_volume_id( + objects.BlockDeviceMapping.get_by_volume_id( self.context, mox.IgnoreArg()).AndReturn('fake-bdm') self.mox.ReplayAll() @@ -8896,10 +8896,10 @@ class ComputeAPITestCase(BaseTestCase): self.stubs.Set(self.compute.driver, "detach_volume", fake_libvirt_driver_detach_volume_fails) - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, + self.mox.StubOutWithMock(objects.BlockDeviceMapping, 'get_by_volume_id') - block_device_obj.BlockDeviceMapping.get_by_volume_id( - self.context, 1).AndReturn(block_device_obj.BlockDeviceMapping( + objects.BlockDeviceMapping.get_by_volume_id( + self.context, 1).AndReturn(objects.BlockDeviceMapping( **fake_bdm)) self.mox.ReplayAll() @@ -8964,7 +8964,7 @@ class ComputeAPITestCase(BaseTestCase): 'volume_id': 'fake_vol'} bdms = [] for bdm in img_bdm, vol_bdm: - bdm_obj = block_device_obj.BlockDeviceMapping(**bdm) + bdm_obj = objects.BlockDeviceMapping(**bdm) bdm_obj.create(admin) bdms.append(bdm_obj) @@ -10209,14 +10209,14 @@ class ComputeRescheduleOrErrorTestCase(BaseTestCase): """Basic sanity check to make sure _reschedule_or_error is called when a build fails. """ - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, + self.mox.StubOutWithMock(objects.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute, '_spawn') self.mox.StubOutWithMock(self.compute, '_reschedule_or_error') bdms = block_device_obj.block_device_make_list(self.context, []) - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( mox.IgnoreArg(), self.instance.uuid).AndReturn(bdms) self.compute._spawn(mox.IgnoreArg(), self.instance, mox.IgnoreArg(), [], mox.IgnoreArg(), [], None, set_access_ip=False).AndRaise( diff --git a/nova/tests/compute/test_compute_api.py b/nova/tests/compute/test_compute_api.py index 67eb1bf316d8..c620ccb51cc6 100644 --- a/nova/tests/compute/test_compute_api.py +++ b/nova/tests/compute/test_compute_api.py @@ -33,7 +33,6 @@ from nova import db from nova import exception from nova import objects from nova.objects import base as obj_base -from nova.objects import block_device as block_device_obj from nova.objects import external_event as external_event_obj from nova.objects import instance_info_cache from nova.objects import migration as migration_obj @@ -517,7 +516,7 @@ class _ComputeAPIUnitTestMixIn(object): if delete_type == 'soft_delete': updates['deleted_at'] = delete_time self.mox.StubOutWithMock(inst, 'save') - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, + self.mox.StubOutWithMock(objects.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(quota.QUOTAS, 'reserve') self.mox.StubOutWithMock(self.context, 'elevated') @@ -548,7 +547,7 @@ class _ComputeAPIUnitTestMixIn(object): self.mox.StubOutWithMock(rpcapi, 'terminate_instance') self.mox.StubOutWithMock(rpcapi, 'soft_delete_instance') - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( self.context, inst.uuid).AndReturn([]) inst.save() if inst.task_state == task_states.RESIZE_FINISH: @@ -707,7 +706,7 @@ class _ComputeAPIUnitTestMixIn(object): if self.cell_type == 'api': rpcapi.terminate_instance( self.context, inst, - mox.IsA(block_device_obj.BlockDeviceMappingList), + mox.IsA(objects.BlockDeviceMappingList), reservations=None) else: compute_utils.notify_about_instance_usage( @@ -733,7 +732,7 @@ class _ComputeAPIUnitTestMixIn(object): self.assertEqual(inst[k], v) def test_local_delete_with_deleted_volume(self): - bdms = [block_device_obj.BlockDeviceMapping( + bdms = [objects.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( {'id': 42, 'volume_id': 'volume_id', 'source_type': 'volume', 'destination_type': 'volume', @@ -756,8 +755,7 @@ class _ComputeAPIUnitTestMixIn(object): 'notify_about_instance_usage') self.mox.StubOutWithMock(self.compute_api.volume_api, 'terminate_connection') - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, - 'destroy') + self.mox.StubOutWithMock(objects.BlockDeviceMapping, 'destroy') inst.info_cache.delete() compute_utils.notify_about_instance_usage( @@ -1633,16 +1631,16 @@ class _ComputeAPIUnitTestMixIn(object): 'boot_index': -1}) fake_bdm['instance'] = fake_instance.fake_db_instance() fake_bdm['instance_uuid'] = fake_bdm['instance']['uuid'] - fake_bdm = block_device_obj.BlockDeviceMapping._from_db_object( - self.context, block_device_obj.BlockDeviceMapping(), + fake_bdm = objects.BlockDeviceMapping._from_db_object( + self.context, objects.BlockDeviceMapping(), fake_bdm, expected_attrs=['instance']) - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, + self.mox.StubOutWithMock(objects.BlockDeviceMapping, 'get_by_volume_id') self.mox.StubOutWithMock(self.compute_api.compute_rpcapi, 'volume_snapshot_create') - block_device_obj.BlockDeviceMapping.get_by_volume_id( + objects.BlockDeviceMapping.get_by_volume_id( self.context, volume_id, expected_attrs=['instance']).AndReturn(fake_bdm) self.compute_api.compute_rpcapi.volume_snapshot_create(self.context, @@ -1674,16 +1672,16 @@ class _ComputeAPIUnitTestMixIn(object): 'boot_index': -1}) fake_bdm['instance'] = fake_instance.fake_db_instance() fake_bdm['instance_uuid'] = fake_bdm['instance']['uuid'] - fake_bdm = block_device_obj.BlockDeviceMapping._from_db_object( - self.context, block_device_obj.BlockDeviceMapping(), + fake_bdm = objects.BlockDeviceMapping._from_db_object( + self.context, objects.BlockDeviceMapping(), fake_bdm, expected_attrs=['instance']) - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMapping, + self.mox.StubOutWithMock(objects.BlockDeviceMapping, 'get_by_volume_id') self.mox.StubOutWithMock(self.compute_api.compute_rpcapi, 'volume_snapshot_delete') - block_device_obj.BlockDeviceMapping.get_by_volume_id( + objects.BlockDeviceMapping.get_by_volume_id( self.context, volume_id, expected_attrs=['instance']).AndReturn(fake_bdm) self.compute_api.compute_rpcapi.volume_snapshot_delete(self.context, @@ -1745,8 +1743,7 @@ class _ComputeAPIUnitTestMixIn(object): @mock.patch.object(objects.Instance, 'save') @mock.patch.object(objects.Instance, 'get_flavor') - @mock.patch.object(block_device_obj.BlockDeviceMappingList, - 'get_by_instance_uuid') + @mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(compute_api.API, '_get_image') @mock.patch.object(compute_api.API, '_check_auto_disk_config') @mock.patch.object(compute_api.API, '_checks_for_create_and_rebuild') @@ -1791,8 +1788,7 @@ class _ComputeAPIUnitTestMixIn(object): @mock.patch.object(objects.Instance, 'save') @mock.patch.object(objects.Instance, 'get_flavor') - @mock.patch.object(block_device_obj.BlockDeviceMappingList, - 'get_by_instance_uuid') + @mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid') @mock.patch.object(compute_api.API, '_get_image') @mock.patch.object(compute_api.API, '_check_auto_disk_config') @mock.patch.object(compute_api.API, '_checks_for_create_and_rebuild') @@ -1906,7 +1902,7 @@ class _ComputeAPIUnitTestMixIn(object): @mock.patch.object(cinder.API, 'get', side_effect=exception.CinderConnectionFailed(reason='error')) def test_get_bdm_image_metadata_with_cinder_down(self, mock_get): - bdms = [block_device_obj.BlockDeviceMapping( + bdms = [objects.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( { 'id': 1, @@ -1927,7 +1923,7 @@ class _ComputeAPIUnitTestMixIn(object): def test_validate_bdm_with_cinder_down(self, mock_get, mock_get_snapshot): instance = self._create_instance_obj() instance_type = self._create_flavor() - bdm = [block_device_obj.BlockDeviceMapping( + bdm = [objects.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( { 'id': 1, @@ -1937,7 +1933,7 @@ class _ComputeAPIUnitTestMixIn(object): 'device_name': 'vda', 'boot_index': 0, }))] - bdms = [block_device_obj.BlockDeviceMapping( + bdms = [objects.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( { 'id': 1, @@ -1982,7 +1978,7 @@ class _ComputeAPIUnitTestMixIn(object): fake_security_group = None fake_num_instances = 1 fake_index = 1 - bdm = [block_device_obj.BlockDeviceMapping( + bdm = [objects.BlockDeviceMapping( **fake_block_device.FakeDbBlockDeviceDict( { 'id': 1, @@ -2009,7 +2005,7 @@ class _ComputeAPIUnitTestMixIn(object): instance = self._create_instance_obj(params={'vm_state': vm_state}) bdms = [] with contextlib.nested( - mock.patch.object(block_device_obj.BlockDeviceMappingList, + mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid', return_value=bdms), mock.patch.object(self.compute_api, 'is_volume_backed_instance', return_value=False), diff --git a/nova/tests/compute/test_compute_mgr.py b/nova/tests/compute/test_compute_mgr.py index e81a83c0cc78..b86576e51331 100644 --- a/nova/tests/compute/test_compute_mgr.py +++ b/nova/tests/compute/test_compute_mgr.py @@ -30,7 +30,6 @@ from nova import db from nova import exception from nova.network import model as network_model from nova import objects -from nova.objects import block_device as block_device_obj from nova.objects import external_event as external_event_obj from nova.objects import instance_action as instance_action_obj from nova.objects import migration as migration_obj @@ -315,7 +314,7 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase): vm_state=vm_states.ACTIVE, task_state=task_states.DELETING) - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, + self.mox.StubOutWithMock(objects.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute, '_delete_instance') self.mox.StubOutWithMock(instance, 'obj_load_attr') @@ -323,7 +322,7 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase): bdms = [] instance.obj_load_attr('metadata') instance.obj_load_attr('system_metadata') - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( self.context, instance.uuid).AndReturn(bdms) self.compute._delete_instance(self.context, instance, bdms) @@ -488,7 +487,7 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase): uuid='fake', vm_state=vm_states.ERROR, task_state=task_states.DELETING) - self.mox.StubOutWithMock(block_device_obj.BlockDeviceMappingList, + self.mox.StubOutWithMock(objects.BlockDeviceMappingList, 'get_by_instance_uuid') self.mox.StubOutWithMock(self.compute, '_delete_instance') self.mox.StubOutWithMock(instance, 'obj_load_attr') @@ -496,7 +495,7 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase): bdms = [] instance.obj_load_attr('metadata') instance.obj_load_attr('system_metadata') - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( self.context, instance.uuid).AndReturn(bdms) self.compute._delete_instance(self.context, instance, bdms) self.mox.ReplayAll() @@ -1194,8 +1193,7 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase): self.assertFalse(allow_reboot) self.assertEqual(reboot_type, 'HARD') - @mock.patch('nova.objects.block_device.BlockDeviceMapping.' - 'get_by_volume_id') + @mock.patch('nova.objects.BlockDeviceMapping.get_by_volume_id') @mock.patch('nova.compute.manager.ComputeManager._detach_volume') @mock.patch('nova.objects.instance.Instance._from_db_object') def test_remove_volume_connection(self, inst_from_db, detach, bdm_get): @@ -1993,7 +1991,7 @@ class ComputeManagerMigrationTestCase(test.NoDBTestCase): mock.patch.object(self.compute, '_get_instance_block_device_info', return_value=None), - mock.patch.object(block_device_obj.BlockDeviceMappingList, + mock.patch.object(objects.BlockDeviceMappingList, 'get_by_instance_uuid', return_value=None) ) as (meth, event_start, event_finish, fault_create, instance_update, diff --git a/nova/tests/compute/test_compute_utils.py b/nova/tests/compute/test_compute_utils.py index 42bf8d1b1c1a..0da9d6ad5569 100644 --- a/nova/tests/compute/test_compute_utils.py +++ b/nova/tests/compute/test_compute_utils.py @@ -97,7 +97,7 @@ class ComputeValidateDeviceTestCase(test.TestCase): self.flavor.items()] def _validate_device(self, device=None): - bdms = block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( self.context, self.instance['uuid']) return compute_utils.get_device_name_for_instance( self.context, self.instance, bdms, device) @@ -295,7 +295,7 @@ class DefaultDeviceNamesForInstanceTestCase(test.NoDBTestCase): self.patchers = [] self.patchers.append( - mock.patch.object(block_device_obj.BlockDeviceMapping, 'save')) + mock.patch.object(objects.BlockDeviceMapping, 'save')) self.patchers.append( mock.patch.object( flavors, 'extract_flavor', diff --git a/nova/tests/integrated/test_api_samples.py b/nova/tests/integrated/test_api_samples.py index 73fab36c988f..9e213c3c2e16 100644 --- a/nova/tests/integrated/test_api_samples.py +++ b/nova/tests/integrated/test_api_samples.py @@ -43,7 +43,7 @@ from nova import db from nova.db.sqlalchemy import models from nova import exception from nova.network import api as network_api -from nova.objects import block_device as block_device_obj +from nova import objects from nova.openstack.common import importutils from nova.openstack.common import jsonutils from nova.openstack.common import log as logging @@ -3889,7 +3889,7 @@ class VolumeAttachmentsSampleJsonTest(VolumeAttachmentsSampleBase): self.stubs.Set(compute_manager.ComputeManager, 'attach_volume', lambda *a, **k: None) - self.stubs.Set(block_device_obj.BlockDeviceMapping, 'get_by_volume_id', + self.stubs.Set(objects.BlockDeviceMapping, 'get_by_volume_id', classmethod(lambda *a, **k: None)) volume = fakes.stub_volume_get(None, context.get_admin_context(), diff --git a/nova/tests/integrated/v3/test_extended_volumes.py b/nova/tests/integrated/v3/test_extended_volumes.py index 5ef179984fbc..60b35d7e782a 100644 --- a/nova/tests/integrated/v3/test_extended_volumes.py +++ b/nova/tests/integrated/v3/test_extended_volumes.py @@ -17,7 +17,7 @@ from nova.compute import api as compute_api from nova.compute import manager as compute_manager from nova import context from nova import db -from nova.objects import block_device as block_device_obj +from nova import objects from nova.tests.api.openstack import fakes from nova.tests import fake_block_device from nova.tests import fake_instance @@ -88,7 +88,7 @@ class ExtendedVolumesSampleJsonTests(test_servers.ServersSampleBase): self.stubs.Set(compute_manager.ComputeManager, 'attach_volume', lambda *a, **k: None) - self.stubs.Set(block_device_obj.BlockDeviceMapping, 'get_by_volume_id', + self.stubs.Set(objects.BlockDeviceMapping, 'get_by_volume_id', classmethod(lambda *a, **k: None)) volume = fakes.stub_volume_get(None, context.get_admin_context(), diff --git a/nova/tests/objects/test_block_device.py b/nova/tests/objects/test_block_device.py index 82b2fb788336..d938ff697608 100644 --- a/nova/tests/objects/test_block_device.py +++ b/nova/tests/objects/test_block_device.py @@ -19,6 +19,7 @@ import mock from nova.cells import rpcapi as cells_rpcapi from nova import db from nova import exception +from nova import objects from nova.objects import block_device as block_device_obj from nova.objects import instance as instance_obj from nova.tests import fake_block_device @@ -51,7 +52,7 @@ class _TestBlockDeviceMappingObject(object): mock.patch.object( cells_rpcapi.CellsAPI, 'bdm_update_or_create_at_top') ) as (bdm_update_mock, cells_update_mock): - bdm_object = block_device_obj.BlockDeviceMapping() + bdm_object = objects.BlockDeviceMapping() bdm_object.id = 123 bdm_object.volume_id = 'fake_volume_id' bdm_object.save(self.context) @@ -62,7 +63,7 @@ class _TestBlockDeviceMappingObject(object): cells_update_mock.assert_called_once_with(self.context, fake_bdm) def test_save_instance_changed(self): - bdm_object = block_device_obj.BlockDeviceMapping() + bdm_object = objects.BlockDeviceMapping() bdm_object.instance = instance_obj.Instance() self.assertRaises(exception.ObjectActionError, bdm_object.save, self.context) @@ -71,7 +72,7 @@ class _TestBlockDeviceMappingObject(object): def test_get_by_volume_id(self, get_by_vol_id): get_by_vol_id.return_value = self.fake_bdm() - vol_bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + vol_bdm = objects.BlockDeviceMapping.get_by_volume_id( self.context, 'fake-volume-id') for attr in block_device_obj.BLOCK_DEVICE_OPTIONAL_ATTRS: self.assertFalse(vol_bdm.obj_attr_is_set(attr)) @@ -82,7 +83,7 @@ class _TestBlockDeviceMappingObject(object): get_by_vol_id.return_value = None self.assertRaises(exception.VolumeBDMNotFound, - block_device_obj.BlockDeviceMapping.get_by_volume_id, + objects.BlockDeviceMapping.get_by_volume_id, self.context, 'fake-volume-id') @mock.patch.object(db, 'block_device_mapping_get_by_volume_id') @@ -91,7 +92,7 @@ class _TestBlockDeviceMappingObject(object): get_by_vol_id.return_value = fake_bdm_vol self.assertRaises(exception.InvalidVolume, - block_device_obj.BlockDeviceMapping.get_by_volume_id, + objects.BlockDeviceMapping.get_by_volume_id, self.context, 'fake-volume-id', instance_uuid='fake-instance') @@ -100,7 +101,7 @@ class _TestBlockDeviceMappingObject(object): get_by_vol_id.return_value = self.fake_bdm( fake_instance.fake_db_instance()) - vol_bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id( + vol_bdm = objects.BlockDeviceMapping.get_by_volume_id( self.context, 'fake-volume-id', expected_attrs=['instance']) for attr in block_device_obj.BLOCK_DEVICE_OPTIONAL_ATTRS: self.assertTrue(vol_bdm.obj_attr_is_set(attr)) @@ -120,7 +121,7 @@ class _TestBlockDeviceMappingObject(object): mock.patch.object(cells_rpcapi.CellsAPI, 'bdm_update_or_create_at_top') ) as (bdm_create_mock, cells_update_mock): - bdm = block_device_obj.BlockDeviceMapping(**values) + bdm = objects.BlockDeviceMapping(**values) bdm.create(self.context) bdm_create_mock.assert_called_once_with( self.context, values, legacy=False) @@ -131,7 +132,7 @@ class _TestBlockDeviceMappingObject(object): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', 'instance_uuid': 'fake-instance'} - bdm = block_device_obj.BlockDeviceMapping(**values) + bdm = objects.BlockDeviceMapping(**values) with mock.patch.object(cells_rpcapi.CellsAPI, 'bdm_update_or_create_at_top'): bdm.create(self.context) @@ -143,7 +144,7 @@ class _TestBlockDeviceMappingObject(object): values = {'source_type': 'volume', 'volume_id': 'fake-vol-id', 'destination_type': 'volume', 'instance_uuid': 'fake-instance'} - bdm = block_device_obj.BlockDeviceMapping(**values) + bdm = objects.BlockDeviceMapping(**values) bdm.create(self.context) self.assertRaises(exception.ObjectActionError, @@ -154,7 +155,7 @@ class _TestBlockDeviceMappingObject(object): 'destination_type': 'volume', 'instance_uuid': 'fake-instance', 'instance': instance_obj.Instance()} - bdm = block_device_obj.BlockDeviceMapping(**values) + bdm = objects.BlockDeviceMapping(**values) self.assertRaises(exception.ObjectActionError, bdm.create, self.context) @@ -166,7 +167,7 @@ class _TestBlockDeviceMappingObject(object): mock.patch.object(db, 'block_device_mapping_destroy'), mock.patch.object(cells_rpcapi.CellsAPI, 'bdm_destroy_at_top') ) as (bdm_del, cells_destroy): - bdm = block_device_obj.BlockDeviceMapping(**values) + bdm = objects.BlockDeviceMapping(**values) bdm.destroy(self.context) bdm_del.assert_called_once_with(self.context, values['id']) cells_destroy.assert_called_once_with( @@ -203,17 +204,17 @@ class _TestBlockDeviceMappingListObject(object): fakes = [self.fake_bdm(123), self.fake_bdm(456)] get_all_by_inst.return_value = fakes bdm_list = ( - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( self.context, 'fake_instance_uuid')) for faked, got in zip(fakes, bdm_list): - self.assertIsInstance(got, block_device_obj.BlockDeviceMapping) + self.assertIsInstance(got, objects.BlockDeviceMapping) self.assertEqual(faked['id'], got.id) @mock.patch.object(db, 'block_device_mapping_get_all_by_instance') def test_get_by_instance_uuid_no_result(self, get_all_by_inst): get_all_by_inst.return_value = None bdm_list = ( - block_device_obj.BlockDeviceMappingList.get_by_instance_uuid( + objects.BlockDeviceMappingList.get_by_instance_uuid( self.context, 'fake_instance_uuid')) self.assertEqual(0, len(bdm_list)) diff --git a/nova/tests/test_block_device.py b/nova/tests/test_block_device.py index c1b5f1192696..79c642b23636 100644 --- a/nova/tests/test_block_device.py +++ b/nova/tests/test_block_device.py @@ -19,7 +19,7 @@ Tests for Block Device utility functions. from nova import block_device from nova import exception -from nova.objects import block_device as block_device_obj +from nova import objects from nova import test from nova.tests import fake_block_device from nova.tests import matchers @@ -424,15 +424,15 @@ class TestBlockDeviceDict(test.NoDBTestCase): self.assertThat(expected, matchers.IsSubDictOf(legacy)) def test_legacy_mapping_from_object_list(self): - bdm1 = block_device_obj.BlockDeviceMapping() - bdm1 = block_device_obj.BlockDeviceMapping._from_db_object( + bdm1 = objects.BlockDeviceMapping() + bdm1 = objects.BlockDeviceMapping._from_db_object( None, bdm1, fake_block_device.FakeDbBlockDeviceDict( self.new_mapping[0])) - bdm2 = block_device_obj.BlockDeviceMapping() - bdm2 = block_device_obj.BlockDeviceMapping._from_db_object( + bdm2 = objects.BlockDeviceMapping() + bdm2 = objects.BlockDeviceMapping._from_db_object( None, bdm2, fake_block_device.FakeDbBlockDeviceDict( self.new_mapping[1])) - bdmlist = block_device_obj.BlockDeviceMappingList() + bdmlist = objects.BlockDeviceMappingList() bdmlist.objects = [bdm1, bdm2] block_device.legacy_mapping(bdmlist) @@ -460,8 +460,8 @@ class TestBlockDeviceDict(test.NoDBTestCase): def test_snapshot_from_object(self): for bdm in self.new_mapping[:-1]: - obj = block_device_obj.BlockDeviceMapping() - obj = block_device_obj.BlockDeviceMapping._from_db_object( + obj = objects.BlockDeviceMapping() + obj = objects.BlockDeviceMapping._from_db_object( None, obj, fake_block_device.FakeDbBlockDeviceDict( bdm)) self._test_snapshot_from_bdm(obj) diff --git a/nova/tests/virt/libvirt/test_blockinfo.py b/nova/tests/virt/libvirt/test_blockinfo.py index 8d8258fc1819..62f8589362bc 100644 --- a/nova/tests/virt/libvirt/test_blockinfo.py +++ b/nova/tests/virt/libvirt/test_blockinfo.py @@ -22,7 +22,7 @@ from nova.compute import flavors from nova import context from nova import db from nova import exception -from nova.objects import block_device as block_device_obj +from nova import objects from nova import test from nova.tests import fake_block_device import nova.tests.image.fake @@ -685,7 +685,7 @@ class LibvirtBlockInfoTest(test.TestCase): self.assertEqual(expected, got) def test_get_device_name(self): - bdm_obj = block_device_obj.BlockDeviceMapping(self.context, + bdm_obj = objects.BlockDeviceMapping(self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vda', @@ -822,7 +822,7 @@ class DefaultDeviceNamesTestCase(test.TestCase): for patcher in self.patchers: patcher.start() - self.ephemerals = [block_device_obj.BlockDeviceMapping( + self.ephemerals = [objects.BlockDeviceMapping( self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 1, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdb', @@ -835,7 +835,7 @@ class DefaultDeviceNamesTestCase(test.TestCase): 'volume_size': 1, 'boot_index': -1}))] - self.swap = [block_device_obj.BlockDeviceMapping( + self.swap = [objects.BlockDeviceMapping( self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 2, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdc', @@ -849,7 +849,7 @@ class DefaultDeviceNamesTestCase(test.TestCase): 'boot_index': -1}))] self.block_device_mapping = [ - block_device_obj.BlockDeviceMapping(self.context, + objects.BlockDeviceMapping(self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 3, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vda', @@ -859,7 +859,7 @@ class DefaultDeviceNamesTestCase(test.TestCase): 'disk_bus': 'virtio', 'volume_id': 'fake-volume-id-1', 'boot_index': 0})), - block_device_obj.BlockDeviceMapping(self.context, + objects.BlockDeviceMapping(self.context, **fake_block_device.FakeDbBlockDeviceDict( {'id': 4, 'instance_uuid': 'fake-instance', 'device_name': '/dev/vdd', diff --git a/nova/virt/block_device.py b/nova/virt/block_device.py index 14db3a2c1d83..67b306402132 100644 --- a/nova/virt/block_device.py +++ b/nova/virt/block_device.py @@ -16,7 +16,8 @@ import functools import operator from nova import block_device -from nova.objects import block_device as block_device_obj +from nova import objects +from nova.objects import base as obj_base from nova.openstack.common import excutils from nova.openstack.common.gettextutils import _ from nova.openstack.common import jsonutils @@ -82,10 +83,10 @@ class DriverBlockDevice(dict): def __init__(self, bdm): # TODO(ndipanov): Remove this check when we have all the rpc methods # use objects for block devices. - if isinstance(bdm, block_device_obj.BlockDeviceMapping): + if isinstance(bdm, obj_base.NovaObject): self.__dict__['_bdm_obj'] = bdm else: - self.__dict__['_bdm_obj'] = block_device_obj.BlockDeviceMapping() + self.__dict__['_bdm_obj'] = objects.BlockDeviceMapping() self._bdm_obj.update(block_device.BlockDeviceDict(bdm)) self._bdm_obj.obj_reset_changes() diff --git a/nova/virt/libvirt/blockinfo.py b/nova/virt/libvirt/blockinfo.py index 720849c3a027..1d2d95e668f4 100644 --- a/nova/virt/libvirt/blockinfo.py +++ b/nova/virt/libvirt/blockinfo.py @@ -77,7 +77,7 @@ from oslo.config import cfg from nova import block_device from nova.compute import flavors from nova import exception -from nova.objects import block_device as block_device_obj +from nova.objects import base as obj_base from nova.openstack.common.gettextutils import _ from nova.virt import block_device as driver_block_device from nova.virt import configdrive @@ -390,7 +390,7 @@ def get_info_from_bdm(virt_type, bdm, mapping={}, disk_bus=None, def get_device_name(bdm): """Get the device name if present regardless of the bdm format.""" - if isinstance(bdm, block_device_obj.BlockDeviceMapping): + if isinstance(bdm, obj_base.NovaObject): return bdm.device_name else: return bdm.get('device_name') or bdm.get('mount_device') diff --git a/nova/virt/libvirt/driver.py b/nova/virt/libvirt/driver.py index 6385a4d19407..c4934665391b 100644 --- a/nova/virt/libvirt/driver.py +++ b/nova/virt/libvirt/driver.py @@ -70,7 +70,7 @@ from nova.compute import vm_mode from nova import context as nova_context from nova import exception from nova import image -from nova.objects import block_device as block_device_obj +from nova import objects from nova.objects import flavor as flavor_obj from nova.objects import instance as instance_obj from nova.objects import service as service_obj @@ -1795,8 +1795,8 @@ class LibvirtDriver(driver.ComputeDriver): raise def _volume_refresh_connection_info(self, context, instance, volume_id): - bdm = block_device_obj.BlockDeviceMapping.get_by_volume_id(context, - volume_id) + bdm = objects.BlockDeviceMapping.get_by_volume_id(context, + volume_id) driver_bdm = driver_block_device.DriverVolumeBlockDevice(bdm) driver_bdm.refresh_connection_info(context, instance, self._volume_api, self)