summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/objects/base.py12
-rw-r--r--nova/tests/objects/test_instance.py1
2 files changed, 9 insertions, 4 deletions
diff --git a/nova/objects/base.py b/nova/objects/base.py
index e84b0a4b1..f5fc37e03 100644
--- a/nova/objects/base.py
+++ b/nova/objects/base.py
@@ -236,7 +236,7 @@ class NovaObject(object):
return value
@classmethod
- def obj_from_primitive(cls, primitive):
+ def obj_from_primitive(cls, primitive, context=None):
"""Simple base-case hydration.
This calls self._attr_from_primitive() for each item in fields.
@@ -252,6 +252,7 @@ class NovaObject(object):
objdata = primitive['nova_object.data']
objclass = cls.obj_class_from_name(objname, objver)
self = objclass()
+ self._context = context
for name in self.fields:
if name in objdata:
setattr(self, name,
@@ -409,7 +410,11 @@ class ObjectListBase(object):
def _attr_objects_from_primitive(self, value):
"""Deserialization of object list."""
- return [NovaObject.obj_from_primitive(x) for x in value]
+ objects = []
+ for entity in value:
+ obj = NovaObject.obj_from_primitive(entity, context=self._context)
+ objects.append(obj)
+ return objects
class NovaObjectSerializer(nova.openstack.common.rpc.serializer.Serializer):
@@ -428,6 +433,5 @@ class NovaObjectSerializer(nova.openstack.common.rpc.serializer.Serializer):
def deserialize_entity(self, context, entity):
if isinstance(entity, dict) and 'nova_object.name' in entity:
- entity = NovaObject.obj_from_primitive(entity)
- entity._context = context
+ entity = NovaObject.obj_from_primitive(entity, context=context)
return entity
diff --git a/nova/tests/objects/test_instance.py b/nova/tests/objects/test_instance.py
index fa0a536fd..a55c5d502 100644
--- a/nova/tests/objects/test_instance.py
+++ b/nova/tests/objects/test_instance.py
@@ -284,6 +284,7 @@ class _TestInstanceListObject(object):
self.assertTrue(isinstance(inst_list.objects[i],
instance.Instance))
self.assertEqual(inst_list.objects[i].uuid, fakes[i]['uuid'])
+ self.assertEqual(inst_list.objects[i]._context, ctxt)
self.assertEqual(inst_list.obj_what_changed(), set())
self.assertRemotes()