Pass region_name to session client

A recent change[1] for the clients to use session has broken
heat multi region support. This change fixes it.

[1] https://review.openstack.org/#/c/325752/

Change-Id: I19633292614850a696e958963025d3ac00f26c3c
Closes-Bug: #1630590
This commit is contained in:
rabi 2016-10-05 19:18:51 +05:30
parent 68cb41431a
commit df71486c2c
14 changed files with 31 additions and 13 deletions

View File

@ -92,6 +92,9 @@ class ClientPlugin(object):
"""Return a newly created client."""
pass
def _get_region_name(self):
return self.context.region_name or cfg.CONF.region_name_for_services
def url_for(self, **kwargs):
keystone_session = self.context.keystone_session
@ -106,8 +109,8 @@ class ClientPlugin(object):
except KeyError:
pass
reg = self.context.region_name or cfg.CONF.region_name_for_services
kwargs.setdefault('region_name', reg)
kwargs.setdefault('region_name', self._get_region_name())
url = None
try:
url = get_endpoint()

View File

@ -36,7 +36,8 @@ class AodhClientPlugin(client_plugin.ClientPlugin):
version,
session=self.context.keystone_session,
interface=interface,
service_type=self.ALARMING)
service_type=self.ALARMING,
region_name=self._get_region_name())
def is_not_found(self, ex):
return isinstance(ex, exceptions.NotFound)

View File

@ -30,7 +30,8 @@ class BarbicanClientPlugin(client_plugin.ClientPlugin):
client = barbican_client.Client(
session=self.context.keystone_session,
service_type=self.KEY_MANAGER,
interface=interface)
interface=interface,
region_name=self._get_region_name())
return client
def is_not_found(self, ex):

View File

@ -36,7 +36,8 @@ class CeilometerClientPlugin(client_plugin.ClientPlugin):
'session': con.keystone_session,
'interface': interface,
'service_type': self.METERING,
'aodh_endpoint': aodh_endpoint
'aodh_endpoint': aodh_endpoint,
'region_name': self._get_region_name()
}
return cc.get_client('2', **args)

View File

@ -62,6 +62,7 @@ class CinderClientPlugin(client_plugin.ClientPlugin):
'extensions': extensions,
'interface': self.interface,
'service_type': self.service_type,
'region_name': self._get_region_name(),
'http_log_debug': self._get_client_option(CLIENT_NAME,
'http_log_debug')
}

View File

@ -33,7 +33,8 @@ class DesignateClientPlugin(client_plugin.ClientPlugin):
endpoint_type = self._get_client_option(CLIENT_NAME, 'endpoint_type')
return client.Client(session=self.context.keystone_session,
endpoint_type=endpoint_type,
service_type=self.DNS)
service_type=self.DNS,
region_name=self._get_region_name())
def is_not_found(self, ex):
return isinstance(ex, exceptions.NotFound)

View File

@ -39,7 +39,8 @@ class GlanceClientPlugin(client_plugin.ClientPlugin):
return gc.Client(version, session=con.keystone_session,
interface=interface,
service_type=self.IMAGE)
service_type=self.IMAGE,
region_name=self._get_region_name())
def _find_with_attr(self, entity, **kwargs):
"""Find a item for entity with attributes matching ``**kwargs``."""

View File

@ -30,7 +30,8 @@ class MagnumClientPlugin(client_plugin.ClientPlugin):
args = {
'interface': interface,
'service_type': self.CONTAINER,
'session': self.context.keystone_session
'session': self.context.keystone_session,
'region_name': self._get_region_name()
}
client = magnum_client.Client(**args)
return client

View File

@ -32,7 +32,8 @@ class ManilaClientPlugin(client_plugin.ClientPlugin):
args = {
'endpoint_type': endpoint_type,
'service_type': self.SHARE,
'session': self.context.keystone_session
'session': self.context.keystone_session,
'region_name': self._get_region_name()
}
client = manila_client.Client(MANILACLIENT_VERSION, **args)
return client

View File

@ -35,7 +35,8 @@ class NeutronClientPlugin(client_plugin.ClientPlugin):
args = {
'session': con.keystone_session,
'service_type': self.NETWORK,
'interface': interface
'interface': interface,
'region_name': self._get_region_name()
}
return nc.Client(**args)

View File

@ -70,6 +70,7 @@ class NovaClientPlugin(client_plugin.ClientPlugin):
'extensions': extensions,
'interface': endpoint_type,
'service_type': self.COMPUTE,
'region_name': self._get_region_name(),
'http_log_debug': self._get_client_option(CLIENT_NAME,
'http_log_debug')
}

View File

@ -38,7 +38,8 @@ class SaharaClientPlugin(client_plugin.ClientPlugin):
args = {
'endpoint_type': endpoint_type,
'service_type': self.DATA_PROCESSING,
'session': con.keystone_session
'session': con.keystone_session,
'region_name': self._get_region_name()
}
client = sahara_client.Client('1.1', **args)
return client

View File

@ -35,7 +35,8 @@ class TroveClientPlugin(client_plugin.ClientPlugin):
args = {
'endpoint_type': endpoint_type,
'service_type': self.DATABASE,
'session': con.keystone_session
'session': con.keystone_session,
'region_name': self._get_region_name()
}
client = tc.Client('1.0', **args)

View File

@ -49,11 +49,14 @@ class DesignateClientPluginTest(common.HeatTestCase):
session = mock.Mock()
context.keystone_session = session
client_plugin = client.DesignateClientPlugin(context)
self.patchobject(client_plugin, '_get_region_name',
return_value='region1')
client_plugin.client()
# Make sure proper client is created with expected args
client_designate.assert_called_once_with(
endpoint_type='publicURL', service_type='dns', session=session
endpoint_type='publicURL', service_type='dns',
session=session, region_name='region1'
)