diff options
| author | Dan Smith <danms@us.ibm.com> | 2013-06-20 11:29:57 -0700 |
|---|---|---|
| committer | Dan Smith <danms@us.ibm.com> | 2013-06-26 08:03:14 -0700 |
| commit | 9480d1ee93c26f02d1f81e6d869f27b74e7e6d7e (patch) | |
| tree | 91ded1d57ccd47c32a069172fc9acdedd318764f /nova | |
| parent | 9c99ba9ac7195627b8eaf679e80c92a80fbbc5e2 (diff) | |
| download | nova-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.py | 7 | ||||
| -rw-r--r-- | nova/tests/objects/test_objects.py | 7 |
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 |
