diff --git a/nova/api/openstack/compute/legacy_v2/servers.py b/nova/api/openstack/compute/legacy_v2/servers.py index 751c744a83..93a1c42116 100644 --- a/nova/api/openstack/compute/legacy_v2/servers.py +++ b/nova/api/openstack/compute/legacy_v2/servers.py @@ -233,6 +233,7 @@ class Controller(wsgi.Controller): instance_list = objects.InstanceList() if is_detail: + instance_list._context = context instance_list.fill_faults() response = self._view_builder.detail(req, instance_list) else: diff --git a/nova/api/openstack/compute/servers.py b/nova/api/openstack/compute/servers.py index f08970b2f5..577ca4c7fb 100644 --- a/nova/api/openstack/compute/servers.py +++ b/nova/api/openstack/compute/servers.py @@ -404,6 +404,7 @@ class ServersController(wsgi.Controller): instance_list = objects.InstanceList() if is_detail: + instance_list._context = context instance_list.fill_faults() response = self._view_builder.detail(req, instance_list) else: diff --git a/nova/db/sqlalchemy/api.py b/nova/db/sqlalchemy/api.py index 06c5560408..3c7219b968 100644 --- a/nova/db/sqlalchemy/api.py +++ b/nova/db/sqlalchemy/api.py @@ -5756,14 +5756,16 @@ def aggregate_host_add(context, aggregate_id, host): ################ +@main_context_manager.writer def instance_fault_create(context, values): """Create a new InstanceFault.""" fault_ref = models.InstanceFault() fault_ref.update(values) - fault_ref.save() + fault_ref.save(context.session) return dict(fault_ref) +@main_context_manager.reader def instance_fault_get_by_instance_uuids(context, instance_uuids): """Get all instance faults for the provided instance_uuids.""" if not instance_uuids: @@ -5934,6 +5936,7 @@ def action_event_get_by_id(context, action_id, event_id): @require_context +@main_context_manager.writer def ec2_instance_create(context, instance_uuid, id=None): """Create ec2 compatible instance by provided uuid.""" ec2_instance_ref = models.InstanceIdMapping() @@ -5941,12 +5944,13 @@ def ec2_instance_create(context, instance_uuid, id=None): if id is not None: ec2_instance_ref.update({'id': id}) - ec2_instance_ref.save() + ec2_instance_ref.save(context.session) return ec2_instance_ref @require_context +@main_context_manager.reader def ec2_instance_get_by_uuid(context, instance_uuid): result = _ec2_instance_get_query(context).\ filter_by(uuid=instance_uuid).\ @@ -5959,6 +5963,7 @@ def ec2_instance_get_by_uuid(context, instance_uuid): @require_context +@main_context_manager.reader def ec2_instance_get_by_id(context, instance_id): result = _ec2_instance_get_query(context).\ filter_by(id=instance_id).\ @@ -5971,16 +5976,14 @@ def ec2_instance_get_by_id(context, instance_id): @require_context +@main_context_manager.reader def get_instance_uuid_by_ec2_id(context, ec2_id): result = ec2_instance_get_by_id(context, ec2_id) return result['uuid'] -def _ec2_instance_get_query(context, session=None): - return model_query(context, - models.InstanceIdMapping, - session=session, - read_deleted='yes') +def _ec2_instance_get_query(context): + return model_query(context, models.InstanceIdMapping, read_deleted='yes') ################## diff --git a/nova/tests/unit/compute/test_compute.py b/nova/tests/unit/compute/test_compute.py index 625c68a178..7fcdcfa9e9 100644 --- a/nova/tests/unit/compute/test_compute.py +++ b/nova/tests/unit/compute/test_compute.py @@ -11323,8 +11323,6 @@ class EvacuateHostTestCase(BaseTestCase): send_node=False): network_api = self.compute.network_api ctxt = context.get_admin_context() - mock_context = mock.Mock() - mock_context.elevated.return_value = ctxt node = limits = None if send_node: @@ -11333,7 +11331,8 @@ class EvacuateHostTestCase(BaseTestCase): @mock.patch.object(network_api, 'setup_networks_on_host') @mock.patch.object(network_api, 'setup_instance_network_on_host') - def _test_rebuild(mock_setup_instance_network_on_host, + @mock.patch('nova.context.RequestContext.elevated', return_value=ctxt) + def _test_rebuild(mock_context, mock_setup_instance_network_on_host, mock_setup_networks_on_host): orig_image_ref = None image_ref = None @@ -11341,7 +11340,7 @@ class EvacuateHostTestCase(BaseTestCase): bdms = objects.BlockDeviceMappingList.get_by_instance_uuid( self.context, self.inst.uuid) self.compute.rebuild_instance( - mock_context, self.inst, orig_image_ref, + ctxt, self.inst, orig_image_ref, image_ref, injected_files, 'newpass', {}, bdms, recreate=True, on_shared_storage=on_shared_storage, migration=migration, scheduled_node=node, limits=limits)