From 717c9755805aa06340130b6bc4e7de8f81ea8e57 Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Wed, 3 Oct 2012 11:21:24 -0700 Subject: Make compute manager use nova-conductor for instance_update Several tests require changes to ensure that the conductor service is started (or set to local mode) before they ask the compute manager to do instance updates. Changes were required to some of the tests that check the value of the timestamps by converting to strings. After passing the instances through jsonutils.to_primitive(), the strings are a bit different. Change-Id: I660e471178f3e5b36c4be27d47047fb4e4e1f851 --- nova/compute/manager.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'nova/compute') diff --git a/nova/compute/manager.py b/nova/compute/manager.py index 2b621d5f6..5e77cb504 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -51,6 +51,7 @@ from nova.compute import rpcapi as compute_rpcapi from nova.compute import task_states from nova.compute import utils as compute_utils from nova.compute import vm_states +from nova import conductor import nova.context from nova import exception from nova.image import glance @@ -258,9 +259,9 @@ class ComputeVirtAPI(virtapi.VirtAPI): self._compute = compute def instance_update(self, context, instance_uuid, updates): - return self._compute.db.instance_update_and_get_original(context, - instance_uuid, - updates) + return self._compute._instance_update(context, + instance_uuid, + **updates) def instance_get_by_uuid(self, context, instance_uuid): return self._compute.db.instance_get_by_uuid(context, instance_uuid) @@ -322,6 +323,7 @@ class ComputeManager(manager.SchedulerDependentManager): self.compute_api = compute.API() self.compute_rpcapi = compute_rpcapi.ComputeAPI() self.scheduler_rpcapi = scheduler_rpcapi.SchedulerAPI() + self.conductor_api = conductor.API() super(ComputeManager, self).__init__(service_name="compute", *args, **kwargs) @@ -340,11 +342,11 @@ class ComputeManager(manager.SchedulerDependentManager): def _instance_update(self, context, instance_uuid, **kwargs): """Update an instance in the database using kwargs as value.""" - (old_ref, instance_ref) = self.db.instance_update_and_get_original( - context, instance_uuid, kwargs) + instance_ref = self.conductor_api.instance_update(context, + instance_uuid, + **kwargs) rt = self._get_resource_tracker(instance_ref.get('node')) rt.update_usage(context, instance_ref) - notifications.send_update(context, old_ref, instance_ref) return instance_ref @@ -741,8 +743,7 @@ class ComputeManager(manager.SchedulerDependentManager): if ip['version'] == 6: update_info['access_ip_v6'] = ip['address'] if update_info: - self.db.instance_update(context, instance['uuid'], update_info) - notifications.send_update(context, instance, instance) + self._instance_update(context, instance['uuid'], **update_info) def _check_instance_not_already_created(self, context, instance): """Ensure an instance with the same name is not already present.""" -- cgit