From 9480d1ee93c26f02d1f81e6d869f27b74e7e6d7e Mon Sep 17 00:00:00 2001 From: Dan Smith Date: Thu, 20 Jun 2013 11:29:57 -0700 Subject: Make NovaObject support the 'in' operator This is needed for dict emulation. Related to unified-object-model Change-Id: I6e024dc284a353181d3ffc84329f234e16b79118 --- nova/objects/base.py | 7 +++++++ nova/tests/objects/test_objects.py | 7 +++++++ 2 files changed, 14 insertions(+) (limited to 'nova') 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 -- cgit