Fix list_resource_providers filters
list_resource_providers failed filtering as the filter parameters like name, or in_tree must be added to the url as query strings: /resource_providers?name=foo&in_tree=<uuid> Related-Bug: #1578989 Change-Id: I794972e93dbcf7310154cc1cceef25b9df618450
This commit is contained in:
parent
d6cb64165c
commit
2b5d1fdd1f
|
@ -20,6 +20,7 @@ from keystoneauth1 import exceptions as ks_exc
|
|||
from keystoneauth1 import loading as keystone
|
||||
from oslo_log import log as logging
|
||||
from oslo_utils import versionutils
|
||||
from six.moves.urllib.parse import urlencode
|
||||
|
||||
from neutron_lib._i18n import _
|
||||
from neutron_lib.exceptions import placement as n_exc
|
||||
|
@ -203,7 +204,8 @@ class PlacementAPIClient(object):
|
|||
filters['in_tree'] = in_tree
|
||||
if uuid:
|
||||
filters['uuid'] = uuid
|
||||
return self._get(url, **filters).json()
|
||||
url = '%s?%s' % (url, urlencode(filters))
|
||||
return self._get(url).json()
|
||||
|
||||
@_check_placement_api_available
|
||||
def update_resource_provider_inventories(
|
||||
|
|
|
@ -75,21 +75,28 @@ class TestPlacementAPIClient(base.BaseTestCase):
|
|||
def test_list_resource_providers(self):
|
||||
filter_1 = {'name': 'name1', 'in_tree': 'tree1_uuid'}
|
||||
self.placement_api_client.list_resource_providers(**filter_1)
|
||||
self.placement_fixture.mock_get.assert_called_once_with(
|
||||
'/resource_providers', **filter_1)
|
||||
args = str(self.placement_fixture.mock_get.call_args)
|
||||
self.placement_fixture.mock_get.assert_called_once()
|
||||
self.assertIn('name=name1', args)
|
||||
self.assertIn('in_tree=tree1_uuid', args)
|
||||
|
||||
filter_2 = {'member_of': ['aggregate_uuid'], 'uuid': 'uuid_1',
|
||||
'resources': {'r_class1': 'value1'}}
|
||||
self.placement_fixture.mock_get.reset_mock()
|
||||
self.placement_api_client.list_resource_providers(**filter_2)
|
||||
self.placement_fixture.mock_get.assert_called_once_with(
|
||||
'/resource_providers', **filter_2)
|
||||
args = str(self.placement_fixture.mock_get.call_args)
|
||||
self.placement_fixture.mock_get.assert_called_once()
|
||||
self.assertIn('member_of', args)
|
||||
self.assertIn('uuid', args)
|
||||
self.assertIn('resources', args)
|
||||
|
||||
filter_1.update(filter_2)
|
||||
self.placement_fixture.mock_get.reset_mock()
|
||||
self.placement_api_client.list_resource_providers(**filter_1)
|
||||
self.placement_fixture.mock_get.assert_called_once_with(
|
||||
'/resource_providers', **filter_1)
|
||||
args = str(self.placement_fixture.mock_get.call_args)
|
||||
self.placement_fixture.mock_get.assert_called_once()
|
||||
for key in filter_1:
|
||||
self.assertIn(key, args)
|
||||
|
||||
def test_list_resource_providers_placement_api_version_too_low(self):
|
||||
self.placement_api_client._target_version = (1, 1)
|
||||
|
|
Loading…
Reference in New Issue