From 732c977da98070be8ec0294faac5f5490a5aac59 Mon Sep 17 00:00:00 2001 From: Drago Rosson Date: Wed, 4 Feb 2015 09:51:59 -0600 Subject: [PATCH] Fix Keystoneclient V2 wrapper for multi-region Change-Id: I75b6c2f61f66f6a2867bfb3cecbc5a3bd58a5058 --- .../heat_keystoneclient_v2/client.py | 4 ++++ .../tests/test_client.py | 23 +++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py b/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py index 783231b1d..1c1bd9a74 100644 --- a/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py +++ b/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/client.py @@ -67,6 +67,10 @@ class KeystoneClientV2(object): 'auth_url': self.context.auth_url, 'region_name': cfg.CONF.region_name_for_services } + + if self.context.region_name is not None: + kwargs['region_name'] = self.context.region_name + auth_kwargs = {} # Note try trust_id first, as we can't reuse auth_token in that case if self.context.trust_id is not None: diff --git a/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/tests/test_client.py b/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/tests/test_client.py index e9be34489..0de9c2ec4 100644 --- a/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/tests/test_client.py +++ b/contrib/heat_keystoneclient_v2/heat_keystoneclient_v2/tests/test_client.py @@ -46,7 +46,7 @@ class KeystoneClientTest(common.HeatTestCase): self.addCleanup(self.m.VerifyAll) def _stubs_v2(self, method='token', auth_ok=True, trust_scoped=True, - user_id='trustor_user_id'): + user_id='trustor_user_id', region=None): self.mock_ks_client = self.m.CreateMock(heat_keystoneclient.kc.Client) self.m.StubOutWithMock(heat_keystoneclient.kc, "Client") if method == 'token': @@ -57,7 +57,7 @@ class KeystoneClientTest(common.HeatTestCase): cacert=None, cert=None, insecure=False, - region_name=None, + region_name=region, key=None).AndReturn(self.mock_ks_client) self.mock_ks_client.authenticate().AndReturn(auth_ok) elif method == 'password': @@ -70,7 +70,7 @@ class KeystoneClientTest(common.HeatTestCase): cacert=None, cert=None, insecure=False, - region_name=None, + region_name=region, key=None).AndReturn(self.mock_ks_client) self.mock_ks_client.authenticate().AndReturn(auth_ok) if method == 'trust': @@ -82,7 +82,7 @@ class KeystoneClientTest(common.HeatTestCase): cacert=None, cert=None, insecure=False, - region_name=None, + region_name=region, key=None).AndReturn(self.mock_ks_client) self.mock_ks_client.authenticate(trust_id='atrust123', tenant_id='test_tenant_id' @@ -212,6 +212,21 @@ class KeystoneClientTest(common.HeatTestCase): heat_ks_client = heat_keystoneclient.KeystoneClientV2(self.ctx) self.assertIsNotNone(heat_ks_client._client) + def test_region_name(self): + """Test region_name is used when specified.""" + + self._stubs_v2(method='trust', region='region123') + self.m.ReplayAll() + + self.ctx.username = None + self.ctx.password = None + self.ctx.auth_token = None + self.ctx.trust_id = 'atrust123' + self.ctx.trustor_user_id = 'trustor_user_id' + self.ctx.region_name = 'region123' + heat_keystoneclient.KeystoneClientV2(self.ctx) + self.m.VerifyAll() + # ##################### # # V3 Compatible Methods # # ##################### #