From 8019cc5ac0850e00ff8d52a82a627aa4a97ab11c Mon Sep 17 00:00:00 2001 From: denver-baraka Date: Thu, 23 Oct 2025 20:26:59 +0300 Subject: [PATCH] fix respect region name in client initialization when initializing manila python client, the region name was being ignored. As a result, the client could connect to the wrong region endpoint. This change ensures that region name is passed to session.get_endpoint() so the correct endpoint is used. Test, -Updated unit tests to verify that the region name is respected during client initialization. Closes-Bug: #2057951 Change-Id: I2d971f2c4771d62a1776c995ef8a16594fd04c99 Signed-off-by: denver-baraka Assisted-By: Copilot --- manilaclient/tests/unit/v2/test_client.py | 19 +++++++++++++++++++ manilaclient/v2/client.py | 2 +- ...x-client-region-name-67fed93b76429b63.yaml | 9 +++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 releasenotes/notes/bug-2057951-fix-client-region-name-67fed93b76429b63.yaml 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 +