diff options
author | Jenkins <jenkins@review.openstack.org> | 2015-04-22 18:56:03 +0000 |
---|---|---|
committer | Gerrit Code Review <review@openstack.org> | 2015-04-22 18:56:04 +0000 |
commit | 43311b0f2482ff4c3c82fa2850ee1715c02811d7 (patch) | |
tree | 24c351b1ded08fe4a56e3fa907debe5b1a20e95e | |
parent | 7eb477ed25e41538a260179da966063c94931f4e (diff) | |
parent | c2d7060b480608d9773340f51d6496fadf97b667 (diff) | |
download | nova-43311b0f2482ff4c3c82fa2850ee1715c02811d7.tar.gz |
Merge "Use list of requests in InstancePCIRequests.obj_from_db." into stable/kilo
-rw-r--r-- | nova/objects/instance_pci_requests.py | 8 | ||||
-rw-r--r-- | nova/tests/unit/objects/test_instance.py | 1 | ||||
-rw-r--r-- | nova/tests/unit/objects/test_instance_pci_requests.py | 10 |
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): |