From 2a51cbb87118b3cbb30b3b411079dfa801933f2f Mon Sep 17 00:00:00 2001 From: Maksim Malchuk Date: Mon, 22 Jul 2019 22:52:43 +0300 Subject: [PATCH] Filter placement API endpoint by type too This is backport of If65b1da79dfa73c73d91af457b2a5f93c6b2eedc fixes silent ignore of the endpoint_type option in the placement section. Change-Id: I18819722b3c7835df60f04d6e3d8182a93f7a1ca Related-Bug: #1818943 Signed-off-by: Maksim Malchuk (cherry picked from commit 12861e3940e4b73a6d9de81385e4ef4b02ebd09d) --- neutron/services/segments/placement_client.py | 1 + neutron/tests/unit/extensions/test_segment.py | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/neutron/services/segments/placement_client.py b/neutron/services/segments/placement_client.py index c4175fcd871..7fff750ef77 100644 --- a/neutron/services/segments/placement_client.py +++ b/neutron/services/segments/placement_client.py @@ -39,6 +39,7 @@ class PlacementAPIClient(object): """Client class for placement ReST API.""" ks_filter = {'service_type': 'placement', + 'interface': cfg.CONF.placement.endpoint_type, 'region_name': cfg.CONF.placement.region_name} def __init__(self): diff --git a/neutron/tests/unit/extensions/test_segment.py b/neutron/tests/unit/extensions/test_segment.py index 193ceac2453..55e8378c411 100644 --- a/neutron/tests/unit/extensions/test_segment.py +++ b/neutron/tests/unit/extensions/test_segment.py @@ -2167,6 +2167,7 @@ class PlacementAPIClientTestCase(base.DietTestCase): self.mock_request.assert_called_once_with( expected_url, 'POST', endpoint_filter={'region_name': mock.ANY, + 'interface': 'public', 'service_type': 'placement'}, json=expected_payload) @@ -2177,6 +2178,7 @@ class PlacementAPIClientTestCase(base.DietTestCase): self.mock_request.assert_called_once_with( expected_url, 'DELETE', endpoint_filter={'region_name': mock.ANY, + 'interface': 'public', 'service_type': 'placement'}) def test_create_inventory(self): @@ -2187,6 +2189,7 @@ class PlacementAPIClientTestCase(base.DietTestCase): self.mock_request.assert_called_once_with( expected_url, 'POST', endpoint_filter={'region_name': mock.ANY, + 'interface': 'public', 'service_type': 'placement'}, json=expected_payload) @@ -2199,6 +2202,7 @@ class PlacementAPIClientTestCase(base.DietTestCase): self.mock_request.assert_called_once_with( expected_url, 'GET', endpoint_filter={'region_name': mock.ANY, + 'interface': 'public', 'service_type': 'placement'}) def _test_get_inventory_not_found(self, details, expected_exception): @@ -2230,6 +2234,7 @@ class PlacementAPIClientTestCase(base.DietTestCase): self.mock_request.assert_called_once_with( expected_url, 'PUT', endpoint_filter={'region_name': mock.ANY, + 'interface': 'public', 'service_type': 'placement'}, json=expected_payload) @@ -2250,6 +2255,7 @@ class PlacementAPIClientTestCase(base.DietTestCase): self.mock_request.assert_called_once_with( expected_url, 'PUT', endpoint_filter={'region_name': mock.ANY, + 'interface': 'public', 'service_type': 'placement'}, json=expected_payload, headers={'openstack-api-version': 'placement 1.1'}) @@ -2261,6 +2267,7 @@ class PlacementAPIClientTestCase(base.DietTestCase): self.mock_request.assert_called_once_with( expected_url, 'GET', endpoint_filter={'region_name': mock.ANY, + 'interface': 'public', 'service_type': 'placement'}, headers={'openstack-api-version': 'placement 1.1'})