From: Ihar Hrachyshka Date: Mon, 27 Jul 2015 13:13:43 +0000 (+0200) Subject: get_info: request object backport only if desired version is different X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=a798840a40c3ec00d2b27edb772328403d1376c9;p=openstack-build%2Fneutron-build.git get_info: request object backport only if desired version is different Partially-Implements: blueprint quantum-qos-api Change-Id: I93fde3c472e4ecd7af8a7ce50be832b7216e40f6 --- diff --git a/neutron/api/rpc/handlers/resources_rpc.py b/neutron/api/rpc/handlers/resources_rpc.py index d2869fe86..6c801e5dc 100755 --- a/neutron/api/rpc/handlers/resources_rpc.py +++ b/neutron/api/rpc/handlers/resources_rpc.py @@ -105,4 +105,7 @@ class ResourcesServerRpcCallback(object): context=context) if obj: + # don't request a backport for the latest known version + if version == obj.VERSION: + version = None return obj.obj_to_primitive(target_version=version) diff --git a/neutron/tests/unit/api/rpc/handlers/test_resources_rpc.py b/neutron/tests/unit/api/rpc/handlers/test_resources_rpc.py index 347c2a3d0..3d1104c40 100755 --- a/neutron/tests/unit/api/rpc/handlers/test_resources_rpc.py +++ b/neutron/tests/unit/api/rpc/handlers/test_resources_rpc.py @@ -99,3 +99,29 @@ class ResourcesServerRpcCallbackTestCase(ResourcesRpcBaseTestCase): qos_policy_id, context=self.context) self.assertEqual(policy_dict, primitive['versioned_object.data']) self.assertEqual(policy_obj.obj_to_primitive(), primitive) + + @mock.patch.object(policy.QosPolicy, 'obj_to_primitive') + def test_get_info_no_backport_for_latest_version(self, to_prim_mock): + policy_dict = self._create_test_policy_dict() + policy_obj = self._create_test_policy(policy_dict) + qos_policy_id = policy_dict['id'] + with mock.patch.object(resources_rpc.registry, 'get_info', + return_value=policy_obj): + self.callbacks.get_info( + self.context, resource_type=resources.QOS_POLICY, + version=policy.QosPolicy.VERSION, + resource_id=qos_policy_id) + to_prim_mock.assert_called_with(target_version=None) + + @mock.patch.object(policy.QosPolicy, 'obj_to_primitive') + def test_get_info_backports_to_older_version(self, to_prim_mock): + policy_dict = self._create_test_policy_dict() + policy_obj = self._create_test_policy(policy_dict) + qos_policy_id = policy_dict['id'] + with mock.patch.object(resources_rpc.registry, 'get_info', + return_value=policy_obj): + self.callbacks.get_info( + self.context, resource_type=resources.QOS_POLICY, + version='0.9', # less than initial version 1.0 + resource_id=qos_policy_id) + to_prim_mock.assert_called_with(target_version='0.9')