Merge "Optimize Instance.create() for optional extra fields"

This commit is contained in:
Jenkins
2016-02-06 03:54:32 +00:00
committed by Gerrit Code Review
2 changed files with 28 additions and 7 deletions

View File

@@ -427,14 +427,18 @@ class Instance(base.NovaPersistentObject, base.NovaObject,
}
updates['extra'] = {}
numa_topology = updates.pop('numa_topology', None)
expected_attrs.append('numa_topology')
if numa_topology:
expected_attrs.append('numa_topology')
updates['extra']['numa_topology'] = numa_topology._to_json()
else:
updates['extra']['numa_topology'] = None
pci_requests = updates.pop('pci_requests', None)
expected_attrs.append('pci_requests')
if pci_requests:
expected_attrs.append('pci_requests')
updates['extra']['pci_requests'] = (
pci_requests.to_json())
else:
updates['extra']['pci_requests'] = None
flavor = updates.pop('flavor', None)
if flavor:
expected_attrs.append('flavor')
@@ -451,10 +455,12 @@ class Instance(base.NovaPersistentObject, base.NovaObject,
}
updates['extra']['flavor'] = jsonutils.dumps(flavor_info)
vcpu_model = updates.pop('vcpu_model', None)
expected_attrs.append('vcpu_model')
if vcpu_model:
expected_attrs.append('vcpu_model')
updates['extra']['vcpu_model'] = (
jsonutils.dumps(vcpu_model.obj_to_primitive()))
else:
updates['extra']['vcpu_model'] = None
db_inst = db.instance_create(self._context, updates)
self._from_db_object(self._context, self, db_inst, expected_attrs)

View File

@@ -863,7 +863,11 @@ class _TestInstanceObject(object):
vals = {'host': 'foo-host',
'memory_mb': 128,
'system_metadata': {'foo': 'bar'},
'extra': {}}
'extra': {
'vcpu_model': None,
'numa_topology': None,
'pci_requests': None,
}}
fake_inst = fake_instance.fake_db_instance(**vals)
db.instance_create(self.context, vals).AndReturn(fake_inst)
self.mox.ReplayAll()
@@ -885,7 +889,11 @@ class _TestInstanceObject(object):
vals = {'host': 'foo-host',
'memory_mb': 128,
'system_metadata': {'foo': 'bar'},
'extra': {}}
'extra': {
'vcpu_model': None,
'numa_topology': None,
'pci_requests': None,
}}
fake_inst = fake_instance.fake_db_instance(**vals)
db.instance_create(self.context, vals).AndReturn(fake_inst)
self.mox.ReplayAll()
@@ -896,7 +904,10 @@ class _TestInstanceObject(object):
def test_create(self):
self.mox.StubOutWithMock(db, 'instance_create')
db.instance_create(self.context, {'extra': {}}).AndReturn(
extras = {'vcpu_model': None,
'numa_topology': None,
'pci_requests': None}
db.instance_create(self.context, {'extra': extras}).AndReturn(
self.fake_instance)
self.mox.ReplayAll()
inst = objects.Instance(context=self.context)
@@ -954,7 +965,11 @@ class _TestInstanceObject(object):
{'host': 'foo-host',
'security_groups': ['foo', 'bar'],
'info_cache': {'network_info': '[]'},
'extra': {},
'extra': {
'vcpu_model': None,
'numa_topology': None,
'pci_requests': None,
},
}
).AndReturn(fake_inst)
self.mox.ReplayAll()