diff --git a/novaclient/base.py b/novaclient/base.py index 2d08cf277..6bcb527c4 100644 --- a/novaclient/base.py +++ b/novaclient/base.py @@ -210,7 +210,9 @@ class Resource(RequestIdMixin): return self._info == other._info def __ne__(self, other): - return not self.__eq__(other) + # Using not of '==' implementation because the not of + # __eq__, when it returns NotImplemented, is returning False. + return not self == other def is_loaded(self): return self._loaded diff --git a/novaclient/tests/unit/test_base.py b/novaclient/tests/unit/test_base.py index 74ceca397..eb70dff99 100644 --- a/novaclient/tests/unit/test_base.py +++ b/novaclient/tests/unit/test_base.py @@ -71,6 +71,12 @@ class BaseTest(utils.TestCase): r2 = base.Resource(None, {'name': 'joe', 'age': 12}) self.assertEqual(r1, r2) + def test_ne(self): + # Two resources of different types: never equal + r1 = base.Resource(None, {'id': 1, 'name': 'test'}) + r2 = object() + self.assertNotEqual(r1, r2) + def test_findall_invalid_attribute(self): cs = fakes.FakeClient(api_versions.APIVersion("2.0")) # Make sure findall with an invalid attribute doesn't cause errors.