summaryrefslogtreecommitdiffstats
path: root/nova
diff options
context:
space:
mode:
authorDan Smith <danms@us.ibm.com>2013-06-20 11:29:57 -0700
committerDan Smith <danms@us.ibm.com>2013-06-26 08:03:14 -0700
commit9480d1ee93c26f02d1f81e6d869f27b74e7e6d7e (patch)
tree91ded1d57ccd47c32a069172fc9acdedd318764f /nova
parent9c99ba9ac7195627b8eaf679e80c92a80fbbc5e2 (diff)
downloadnova-9480d1ee93c26f02d1f81e6d869f27b74e7e6d7e.tar.gz
nova-9480d1ee93c26f02d1f81e6d869f27b74e7e6d7e.tar.xz
nova-9480d1ee93c26f02d1f81e6d869f27b74e7e6d7e.zip
Make NovaObject support the 'in' operator
This is needed for dict emulation. Related to unified-object-model Change-Id: I6e024dc284a353181d3ffc84329f234e16b79118
Diffstat (limited to 'nova')
-rw-r--r--nova/objects/base.py7
-rw-r--r--nova/tests/objects/test_objects.py7
2 files changed, 14 insertions, 0 deletions
diff --git a/nova/objects/base.py b/nova/objects/base.py
index 6f2b6c81f..147d55c23 100644
--- a/nova/objects/base.py
+++ b/nova/objects/base.py
@@ -353,6 +353,13 @@ class NovaObject(object):
"""
setattr(self, name, value)
+ def __contains__(self, name):
+ """For backwards-compatibility with dict-based objects.
+
+ NOTE(danms): May be removed in the future.
+ """
+ return hasattr(self, get_attrname(name))
+
def get(self, key, value=None):
"""For backwards-compatibility with dict-based objects.
diff --git a/nova/tests/objects/test_objects.py b/nova/tests/objects/test_objects.py
index 00aaf1781..40ad8bb81 100644
--- a/nova/tests/objects/test_objects.py
+++ b/nova/tests/objects/test_objects.py
@@ -441,6 +441,13 @@ class _TestObject(object):
}
self.assertEqual(obj.obj_to_primitive(), expected)
+ def test_contains(self):
+ obj = MyObj()
+ self.assertFalse('foo' in obj)
+ obj.foo = 1
+ self.assertTrue('foo' in obj)
+ self.assertFalse('does_not_exist' in obj)
+
class TestObject(_LocalTest, _TestObject):
pass