diff --git a/manilaclient/tests/unit/v2/test_client.py b/manilaclient/tests/unit/v2/test_client.py index 04f13b4b3..79c12e7cf 100644 --- a/manilaclient/tests/unit/v2/test_client.py +++ b/manilaclient/tests/unit/v2/test_client.py @@ -137,6 +137,25 @@ class ClientTest(utils.TestCase): api_version=manilaclient.API_MIN_VERSION) self.assertIsNotNone(c.client) + def test_client_respects_region_name(self): + mock_session = mock.Mock() + mock_auth = mock.Mock() + region = 'region1' + mock_session.get_endpoint.return_value = 'http://fake-endpoint/' + client.Client( + session=mock_session, + auth=mock_auth, + service_type='sharev2', + endpoint_type='public', + region_name=region, + ) + mock_session.get_endpoint.assert_called_once_with( + mock_auth, + service_type='sharev2', + interface='public', + region_name=region, + ) + def _get_client_args(self, **kwargs): client_args = { 'auth_url': 'http://identity.example.com', diff --git a/manilaclient/v2/client.py b/manilaclient/v2/client.py index c0ff0a975..af5345299 100644 --- a/manilaclient/v2/client.py +++ b/manilaclient/v2/client.py @@ -159,7 +159,7 @@ class Client(object): if session and not service_catalog_url: service_catalog_url = self.keystone_client.session.get_endpoint( auth, interface=endpoint_type, - service_type=service_type) + service_type=service_type, region_name=region_name) elif not service_catalog_url: catalog = self.keystone_client.service_catalog.get_endpoints( service_type) diff --git a/releasenotes/notes/bug-2057951-fix-client-region-name-67fed93b76429b63.yaml b/releasenotes/notes/bug-2057951-fix-client-region-name-67fed93b76429b63.yaml new file mode 100644 index 000000000..e4955f1be --- /dev/null +++ b/releasenotes/notes/bug-2057951-fix-client-region-name-67fed93b76429b63.yaml @@ -0,0 +1,9 @@ +fixes: + - | + Fixed Bug #2057951: The manila python client previously + ignored the "region_name" parameter when initializing a + client session. This caused the client to use wrong API + endpoint in multi-region deployments. The client now + correctly respects the "region_name" value ensuring + requests are routed to the intended region +