Update obj_reset_changes signatures to match
The base object obj_reset_changes method has a recursive parameter that
dives into objects within an object to reset changes. The Flavor and
Instance objects override that method but are missing that parameter.
The recursive parameter was not added to those objects when it was
changed on the base object.
NOTE(alaski): The test here differs from the test on master. Object
registration changed so the method for grabbing a list of objects to
check is different.
Closes-bug: #1487522
Change-Id: I7be4cfa59187fffd88413a5ba97b13ff3f93eefc
(cherry picked from commit 3043a5646f)
This commit is contained in:
@@ -89,8 +89,9 @@ class Flavor(base.NovaPersistentObject, base.NovaObject,
|
||||
|
||||
self._load_projects()
|
||||
|
||||
def obj_reset_changes(self, fields=None):
|
||||
super(Flavor, self).obj_reset_changes(fields=fields)
|
||||
def obj_reset_changes(self, fields=None, recursive=False):
|
||||
super(Flavor, self).obj_reset_changes(fields=fields,
|
||||
recursive=recursive)
|
||||
if fields is None or 'extra_specs' in fields:
|
||||
self._orig_extra_specs = (dict(self.extra_specs)
|
||||
if self.obj_attr_is_set('extra_specs')
|
||||
|
||||
@@ -284,8 +284,8 @@ class Instance(base.NovaPersistentObject, base.NovaObject,
|
||||
self._orig_metadata = (dict(self.metadata) if
|
||||
'metadata' in self else {})
|
||||
|
||||
def obj_reset_changes(self, fields=None):
|
||||
super(Instance, self).obj_reset_changes(fields)
|
||||
def obj_reset_changes(self, fields=None, recursive=False):
|
||||
super(Instance, self).obj_reset_changes(fields, recursive=recursive)
|
||||
self._reset_metadata_tracking(fields=fields)
|
||||
|
||||
def obj_what_changed(self):
|
||||
|
||||
@@ -1480,3 +1480,12 @@ class TestObjectVersions(test.NoDBTestCase):
|
||||
field))
|
||||
last_my_version = _my_version
|
||||
last_child_version = _ch_version
|
||||
|
||||
|
||||
class TestObjMethodOverrides(test.NoDBTestCase):
|
||||
def test_obj_reset_changes(self):
|
||||
args = inspect.getargspec(base.NovaObject.obj_reset_changes)
|
||||
for obj_classes in base.NovaObject._obj_classes.values():
|
||||
for obj_class in obj_classes:
|
||||
self.assertEqual(args,
|
||||
inspect.getargspec(obj_class.obj_reset_changes))
|
||||
|
||||
Reference in New Issue
Block a user