summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZuul <zuul@review.opendev.org>2019-09-25 18:07:39 +0000
committerGerrit Code Review <review@openstack.org>2019-09-25 18:07:39 +0000
commit9fbdc779daf7dd23f1cb175197659418b1014f35 (patch)
treef858d2a1347148f76c3c60b20eea0ebaac918711
parent5814793806ead0f49abe6cabf69eacfdf17165bb (diff)
parent528f4e05efda40d89e14a543dfd3199eda8936c3 (diff)
downloaddesignate-9fbdc779daf7dd23f1cb175197659418b1014f35.tar.gz
Merge "fix call obj_reset_changes with recursive=True raise error"
-rw-r--r--designate/objects/base.py6
-rw-r--r--designate/tests/unit/objects/test_base.py15
2 files changed, 19 insertions, 2 deletions
diff --git a/designate/objects/base.py b/designate/objects/base.py
index de7fa822..2ed893c5 100644
--- a/designate/objects/base.py
+++ b/designate/objects/base.py
@@ -18,6 +18,8 @@ from oslo_versionedobjects import exception
from oslo_utils import excutils
from designate.i18n import _
from oslo_versionedobjects import base
+from oslo_versionedobjects import fields as ovoo_fields
+
from oslo_versionedobjects.base import VersionedObjectDictCompat as DictObjectMixin # noqa
from designate.objects import fields
@@ -226,10 +228,10 @@ class DesignateObject(base.VersionedObject):
continue
# Reset straight Object and ListOfObjects fields
- if isinstance(self.fields[field], self.obj_fields.ObjectField):
+ if isinstance(self.fields[field], ovoo_fields.ObjectField):
value.obj_reset_changes(recursive=True)
elif isinstance(self.fields[field],
- self.obj_fields.ListOfObjectsField):
+ ovoo_fields.ListOfObjectsField):
for thing in value:
thing.obj_reset_changes(recursive=True)
diff --git a/designate/tests/unit/objects/test_base.py b/designate/tests/unit/objects/test_base.py
index 15b913d9..3b3fa23e 100644
--- a/designate/tests/unit/objects/test_base.py
+++ b/designate/tests/unit/objects/test_base.py
@@ -405,6 +405,21 @@ class DesignateObjectTest(oslotest.base.BaseTestCase):
self.assertEqual(1, len(obj.obj_what_changed()))
self.assertEqual({'name': "My Name"}, obj.obj_get_changes())
+ def test_obj_reset_changes_recursive(self):
+ obj = TestObject()
+ obj.id = "My ID"
+ obj.name = "My Name"
+ obj.nested = TestObject()
+ obj.nested.id = "My ID"
+
+ self.assertEqual(3, len(obj.obj_what_changed()))
+
+ obj.obj_reset_changes()
+ self.assertEqual(1, len(obj.obj_what_changed()))
+
+ obj.obj_reset_changes(recursive=True)
+ self.assertEqual(0, len(obj.obj_what_changed()))
+
def test_obj_get_original_value(self):
# Create an object
obj = TestObject()