summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2015-04-22 18:56:03 +0000
committerGerrit Code Review <review@openstack.org>2015-04-22 18:56:04 +0000
commit43311b0f2482ff4c3c82fa2850ee1715c02811d7 (patch)
tree24c351b1ded08fe4a56e3fa907debe5b1a20e95e
parent7eb477ed25e41538a260179da966063c94931f4e (diff)
parentc2d7060b480608d9773340f51d6496fadf97b667 (diff)
downloadnova-43311b0f2482ff4c3c82fa2850ee1715c02811d7.tar.gz
Merge "Use list of requests in InstancePCIRequests.obj_from_db." into stable/kilo
-rw-r--r--nova/objects/instance_pci_requests.py8
-rw-r--r--nova/tests/unit/objects/test_instance.py1
-rw-r--r--nova/tests/unit/objects/test_instance_pci_requests.py10
3 files changed, 16 insertions, 3 deletions
diff --git a/nova/objects/instance_pci_requests.py b/nova/objects/instance_pci_requests.py
index 8e74e0a195..8e4dee10f3 100644
--- a/nova/objects/instance_pci_requests.py
+++ b/nova/objects/instance_pci_requests.py
@@ -79,9 +79,9 @@ class InstancePCIRequests(base.NovaObject,
def obj_from_db(cls, context, instance_uuid, db_requests):
self = cls(context=context, requests=[],
instance_uuid=instance_uuid)
- try:
- requests = jsonutils.loads(db_requests['pci_requests'])
- except TypeError:
+ if db_requests is not None:
+ requests = jsonutils.loads(db_requests)
+ else:
requests = []
for request in requests:
request_obj = InstancePCIRequest(
@@ -97,6 +97,8 @@ class InstancePCIRequests(base.NovaObject,
def get_by_instance_uuid(cls, context, instance_uuid):
db_pci_requests = db.instance_extra_get_by_instance_uuid(
context, instance_uuid, columns=['pci_requests'])
+ if db_pci_requests is not None:
+ db_pci_requests = db_pci_requests['pci_requests']
return cls.obj_from_db(context, instance_uuid, db_pci_requests)
@classmethod
diff --git a/nova/tests/unit/objects/test_instance.py b/nova/tests/unit/objects/test_instance.py
index 1fbfda0af7..72b84298fc 100644
--- a/nova/tests/unit/objects/test_instance.py
+++ b/nova/tests/unit/objects/test_instance.py
@@ -773,6 +773,7 @@ class _TestInstanceObject(object):
inst.create()
self.assertIsNotNone(inst.numa_topology)
self.assertIsNotNone(inst.pci_requests)
+ self.assertEqual(1, len(inst.pci_requests.requests))
self.assertIsNotNone(inst.vcpu_model)
got_numa_topo = objects.InstanceNUMATopology.get_by_instance_uuid(
self.context, inst.uuid)
diff --git a/nova/tests/unit/objects/test_instance_pci_requests.py b/nova/tests/unit/objects/test_instance_pci_requests.py
index cb53b4641a..fbccb93563 100644
--- a/nova/tests/unit/objects/test_instance_pci_requests.py
+++ b/nova/tests/unit/objects/test_instance_pci_requests.py
@@ -180,6 +180,16 @@ class _TestInstancePCIRequests(object):
self.assertFalse(backported.requests[0].obj_attr_is_set('request_id'))
self.assertFalse(backported.requests[1].obj_attr_is_set('request_id'))
+ def test_obj_from_db(self):
+ req = objects.InstancePCIRequests.obj_from_db(None, FAKE_UUID, None)
+ self.assertEqual(FAKE_UUID, req.instance_uuid)
+ self.assertEqual(0, len(req.requests))
+ db_req = jsonutils.dumps(fake_pci_requests)
+ req = objects.InstancePCIRequests.obj_from_db(None, FAKE_UUID, db_req)
+ self.assertEqual(FAKE_UUID, req.instance_uuid)
+ self.assertEqual(2, len(req.requests))
+ self.assertEqual('alias_1', req.requests[0].alias_name)
+
class TestInstancePCIRequests(test_objects._LocalTest,
_TestInstancePCIRequests):