diff --git a/magnum/conductor/api.py b/magnum/conductor/api.py index 556a30f0c..b1560ca5a 100644 --- a/magnum/conductor/api.py +++ b/magnum/conductor/api.py @@ -148,10 +148,11 @@ def object_action(self, context, objinst, objmethod, args, kwargs): return self._client.call(context, 'object_action', objinst=objinst, objmethod=objmethod, args=args, kwargs=kwargs) - def object_backport(self, context, objinst, target_version): + def object_backport_versions(self, context, objinst, object_versions): """Indirection API callback.""" - return self._client.call(context, 'object_backport', objinst=objinst, - target_version=target_version) + return self._client.call(context, 'object_backport_versions', + objinst=objinst, + object_versions=object_versions) # NodeGroup Operations diff --git a/magnum/conductor/handlers/indirection_api.py b/magnum/conductor/handlers/indirection_api.py index c100a3db9..9d505331f 100644 --- a/magnum/conductor/handlers/indirection_api.py +++ b/magnum/conductor/handlers/indirection_api.py @@ -68,5 +68,7 @@ def object_action(self, context, objinst, objmethod, args, kwargs): updates['obj_what_changed'] = objinst.obj_what_changed() return updates, result - def object_backport(self, context, objinst, target_version): - return objinst.obj_to_primitive(target_version=target_version) + def object_backport_versions(self, context, objinst, object_versions): + target = object_versions[objinst.obj_name()] + return objinst.obj_to_primitive(target_version=target, + version_manifest=object_versions) diff --git a/magnum/objects/base.py b/magnum/objects/base.py index fb62ecedd..3571dfb7a 100644 --- a/magnum/objects/base.py +++ b/magnum/objects/base.py @@ -77,9 +77,9 @@ def object_action(self, context, objinst, objmethod, args, kwargs): return self._conductor.object_action(context, objinst, objmethod, args, kwargs) - def object_backport(self, context, objinst, target_version): - return self._conductor.object_backport(context, objinst, - target_version) + def object_backport_versions(self, context, objinst, object_versions): + return self._conductor.object_backport_versions(context, objinst, + object_versions) class MagnumObjectSerializer(ovoo_base.VersionedObjectSerializer): diff --git a/magnum/tests/unit/objects/test_objects.py b/magnum/tests/unit/objects/test_objects.py index dd29ccb5d..58e5dc79a 100644 --- a/magnum/tests/unit/objects/test_objects.py +++ b/magnum/tests/unit/objects/test_objects.py @@ -410,9 +410,8 @@ def _test_deserialize_entity_newer(self, obj_version, backported_to, mock_indirection_api, my_version='1.6'): ser = base.MagnumObjectSerializer() - mock_indirection_api.object_backport_versions.side_effect \ - = NotImplementedError() - mock_indirection_api.object_backport.return_value = 'backported' + mock_indirection_api.object_backport_versions.return_value = \ + 'backported' @base.MagnumObjectRegistry.register class MyTestObj(MyObj): @@ -423,13 +422,11 @@ class MyTestObj(MyObj): primitive = obj.obj_to_primitive() result = ser.deserialize_entity(self.context, primitive) if backported_to is None: - self.assertEqual( - False, - mock_indirection_api.object_backport.called) + mock_indirection_api.object_backport_versions.assert_not_called() else: self.assertEqual('backported', result) - mock_indirection_api.object_backport.assert_called_with( - self.context, primitive, backported_to) + mock_indirection_api.object_backport_versions.assert_called_with( + self.context, primitive, {'MyTestObj': my_version}) def test_deserialize_entity_newer_version_backports_level1(self): "Test object with unsupported (newer) version"