diff options
-rw-r--r-- | nova/compute/manager.py | 2 | ||||
-rw-r--r-- | nova/conductor/api.py | 6 | ||||
-rw-r--r-- | nova/conductor/manager.py | 5 | ||||
-rw-r--r-- | nova/conductor/rpcapi.py | 6 | ||||
-rw-r--r-- | nova/tests/conductor/test_conductor.py | 6 |
5 files changed, 23 insertions, 2 deletions
diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 498ec9829..ecfb53085 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -1059,7 +1059,7 @@ class ComputeManager(manager.SchedulerDependentManager): terminated_at=timeutils.utcnow()) system_meta = compute_utils.metadata_to_dict( instance['system_metadata']) - self.db.instance_destroy(context, instance_uuid) + self.conductor_api.instance_destroy(context, instance) # ensure block device mappings are not leaked self.conductor_api.block_device_mapping_destroy(context, bdms) diff --git a/nova/conductor/api.py b/nova/conductor/api.py index 64e574b12..838b4c050 100644 --- a/nova/conductor/api.py +++ b/nova/conductor/api.py @@ -75,6 +75,9 @@ class LocalAPI(object): def instance_get_by_uuid(self, context, instance_uuid): return self._manager.instance_get_by_uuid(context, instance_uuid) + def instance_destroy(self, context, instance): + return self._manager.instance_destroy(context, instance) + def instance_get_all(self, context): return self.instance_get_all_by_filters(context, {}) @@ -201,6 +204,9 @@ class API(object): return self.conductor_rpcapi.instance_update(context, instance_uuid, updates) + def instance_destroy(self, context, instance): + return self.conductor_rpcapi.instance_destroy(context, instance) + def instance_get_by_uuid(self, context, instance_uuid): return self.conductor_rpcapi.instance_get_by_uuid(context, instance_uuid) diff --git a/nova/conductor/manager.py b/nova/conductor/manager.py index f5971b8d7..997e23c60 100644 --- a/nova/conductor/manager.py +++ b/nova/conductor/manager.py @@ -43,7 +43,7 @@ datetime_fields = ['launched_at', 'terminated_at'] class ConductorManager(manager.SchedulerDependentManager): """Mission: TBD""" - RPC_API_VERSION = '1.15' + RPC_API_VERSION = '1.16' def __init__(self, *args, **kwargs): super(ConductorManager, self).__init__(service_name='conductor', @@ -205,3 +205,6 @@ class ConductorManager(manager.SchedulerDependentManager): project_id, host) return jsonutils.to_primitive(result) + + def instance_destroy(self, context, instance): + self.db.instance_destroy(context, instance['uuid']) diff --git a/nova/conductor/rpcapi.py b/nova/conductor/rpcapi.py index 92f9f9de7..bbbdd7054 100644 --- a/nova/conductor/rpcapi.py +++ b/nova/conductor/rpcapi.py @@ -47,6 +47,7 @@ class ConductorAPI(nova.openstack.common.rpc.proxy.RpcProxy): instance_get_all_hung_in_rebooting and instance_get_active_by_window Deprecated instance_get_all_by_host + 1.16 - Added instance_destroy """ BASE_RPC_API_VERSION = '1.0' @@ -190,3 +191,8 @@ class ConductorAPI(nova.openstack.common.rpc.proxy.RpcProxy): begin=begin, end=end, project_id=project_id, host=host) return self.call(context, msg, version='1.15') + + def instance_destroy(self, context, instance): + instance_p = jsonutils.to_primitive(instance) + msg = self.make_msg('instance_destroy', instance=instance_p) + self.call(context, msg, version='1.16') diff --git a/nova/tests/conductor/test_conductor.py b/nova/tests/conductor/test_conductor.py index a7caa3ac9..18035c135 100644 --- a/nova/tests/conductor/test_conductor.py +++ b/nova/tests/conductor/test_conductor.py @@ -288,6 +288,12 @@ class _BaseTestCase(object): 'fake-begin', 'fake-end', 'fake-proj', 'fake-host') + def test_instance_destroy(self): + self.mox.StubOutWithMock(db, 'instance_destroy') + db.instance_destroy(self.context, 'fake-uuid') + self.mox.ReplayAll() + self.conductor.instance_destroy(self.context, {'uuid': 'fake-uuid'}) + class ConductorTestCase(_BaseTestCase, test.TestCase): """Conductor Manager Tests""" |