get_info: request object backport only if desired version is different

Partially-Implements: blueprint quantum-qos-api
Change-Id: I93fde3c472e4ecd7af8a7ce50be832b7216e40f6
This commit is contained in:
Ihar Hrachyshka 2015-07-27 15:13:43 +02:00
parent b9996c08a2
commit a798840a40
2 changed files with 29 additions and 0 deletions

View File

@ -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)

View File

@ -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')