Merge "Fix various cells issues due to object changes"

This commit is contained in:
Jenkins 2013-08-26 22:17:55 +00:00 committed by Gerrit Code Review
commit b7c16d696c
4 changed files with 17 additions and 9 deletions

View File

@ -31,8 +31,8 @@ from nova.compute import vm_states
from nova import conductor from nova import conductor
from nova.db import base from nova.db import base
from nova import exception from nova import exception
from nova.objects import base as obj_base
from nova.objects import instance as instance_obj from nova.objects import instance as instance_obj
from nova.objects import security_group
from nova.openstack.common.gettextutils import _ from nova.openstack.common.gettextutils import _
from nova.openstack.common import log as logging from nova.openstack.common import log as logging
from nova.scheduler import rpcapi as scheduler_rpcapi from nova.scheduler import rpcapi as scheduler_rpcapi
@ -93,10 +93,12 @@ class CellsScheduler(base.Base):
# down. # down.
sys_metadata = flavors.save_flavor_info(sys_metadata, instance_type) sys_metadata = flavors.save_flavor_info(sys_metadata, instance_type)
instance_values['system_metadata'] = sys_metadata instance_values['system_metadata'] = sys_metadata
# Pop out things that will get set properly when re-creating the
# instance record.
instance_values.pop('id')
instance_values.pop('name') instance_values.pop('name')
if 'security_groups' in instance_values: instance_values.pop('info_cache')
instance_values = security_group.make_secgroup_list( instance_values.pop('security_groups')
instance_values['security_groups'])
num_instances = len(instance_uuids) num_instances = len(instance_uuids)
for i, instance_uuid in enumerate(instance_uuids): for i, instance_uuid in enumerate(instance_uuids):
@ -112,6 +114,7 @@ class CellsScheduler(base.Base):
block_device_mapping, block_device_mapping,
num_instances, i) num_instances, i)
instance = obj_base.obj_to_primitive(instance)
self.msg_runner.instance_update_at_top(ctxt, instance) self.msg_runner.instance_update_at_top(ctxt, instance)
def _create_action_here(self, ctxt, instance_uuids): def _create_action_here(self, ctxt, instance_uuids):

View File

@ -1386,8 +1386,9 @@ class API(base.Base):
context, instance, "%s.start" % delete_type) context, instance, "%s.start" % delete_type)
elevated = context.elevated() elevated = context.elevated()
self.network_api.deallocate_for_instance(elevated, if self.cell_type != 'api':
instance) self.network_api.deallocate_for_instance(elevated,
instance)
system_meta = self.db.instance_system_metadata_get(context, system_meta = self.db.instance_system_metadata_get(context,
instance_uuid) instance_uuid)

View File

@ -96,7 +96,10 @@ class CellsSchedulerTestCase(test.TestCase):
inst_type = db.flavor_get(self.ctxt, 1) inst_type = db.flavor_get(self.ctxt, 1)
image = {'properties': {}} image = {'properties': {}}
instance_uuids = self.instance_uuids instance_uuids = self.instance_uuids
instance_props = {'name': 'instance-00000001', instance_props = {'id': 'removed',
'security_groups': 'removed',
'info_cache': 'removed',
'name': 'instance-00000001',
'hostname': 'meow', 'hostname': 'meow',
'display_name': 'moo', 'display_name': 'moo',
'image_ref': 'fake_image_ref', 'image_ref': 'fake_image_ref',

View File

@ -413,8 +413,9 @@ class _ComputeAPIUnitTestMixIn(object):
compute_utils.notify_about_instance_usage(self.context, compute_utils.notify_about_instance_usage(self.context,
inst, inst,
'%s.start' % delete_type) '%s.start' % delete_type)
self.compute_api.network_api.deallocate_for_instance( if not self.is_cells:
self.context, inst) self.compute_api.network_api.deallocate_for_instance(
self.context, inst)
db.instance_system_metadata_get(self.context, inst.uuid db.instance_system_metadata_get(self.context, inst.uuid
).AndReturn('sys-meta') ).AndReturn('sys-meta')
state = ('soft' in delete_type and vm_states.SOFT_DELETED or state = ('soft' in delete_type and vm_states.SOFT_DELETED or