From 185bb29db4b80477405512aad673a24e443a1897 Mon Sep 17 00:00:00 2001 From: yanyanhu Date: Wed, 3 Jun 2015 04:35:40 -0400 Subject: [PATCH] Add path_args when invoking Resource.list() from proxy layer Currently, path_args parameter is not given when invoking list method of resource module from proxy layer. However, without this arguments, url can't be generated correctly if path_args is defined in resource's base_url. This patch tried to fix this issue. Change-Id: Id381867a83362f4e2a5e44004023a4d749398476 --- openstack/proxy.py | 3 ++- openstack/tests/unit/message/v1/test_message.py | 1 + openstack/tests/unit/test_proxy.py | 12 ++++++++---- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/openstack/proxy.py b/openstack/proxy.py index 1e6731200..9e6e1d860 100644 --- a/openstack/proxy.py +++ b/openstack/proxy.py @@ -183,7 +183,8 @@ class BaseProxy(object): res = self._get_resource(resource_type, value, path_args) query = res._convert_ids(query) - return res.list(self.session, paginated=paginated, **query) + return res.list(self.session, path_args=path_args, paginated=paginated, + **query) def _head(self, resource_type, value=None, path_args=None): """Retrieve a resource's header diff --git a/openstack/tests/unit/message/v1/test_message.py b/openstack/tests/unit/message/v1/test_message.py index 7bc19e917..d8f1969d7 100644 --- a/openstack/tests/unit/message/v1/test_message.py +++ b/openstack/tests/unit/message/v1/test_message.py @@ -11,6 +11,7 @@ # under the License. import json + import mock import testtools diff --git a/openstack/tests/unit/test_proxy.py b/openstack/tests/unit/test_proxy.py index 33c47edea..36142441c 100644 --- a/openstack/tests/unit/test_proxy.py +++ b/openstack/tests/unit/test_proxy.py @@ -248,28 +248,32 @@ class TestProxyList(testtools.TestCase): self.fake_a = 1 self.fake_b = 2 + self.fake_c = 3 self.fake_resource = resource.Resource.new(id=self.fake_a) self.fake_response = [resource.Resource()] self.fake_query = {"a": self.fake_resource, "b": self.fake_b} + self.fake_path_args = {"c": self.fake_c} self.sot = proxy.BaseProxy(self.session) ListableResource.list = mock.Mock() ListableResource.list.return_value = self.fake_response - def _test_list(self, paginated, **query): - rv = self.sot._list(ListableResource, paginated=paginated, **query) + def _test_list(self, path_args, paginated, **query): + rv = self.sot._list(ListableResource, path_args=path_args, + paginated=paginated, **query) self.assertEqual(self.fake_response, rv) ListableResource.list.assert_called_once_with(self.session, + path_args=path_args, paginated=paginated, a=self.fake_a, b=self.fake_b) def test_list_paginated(self): - self._test_list(True, **self.fake_query) + self._test_list(self.fake_path_args, True, **self.fake_query) def test_list_non_paginated(self): - self._test_list(False, **self.fake_query) + self._test_list(self.fake_path_args, False, **self.fake_query) class TestProxyHead(testtools.TestCase):