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:
parent
68cb41431a
commit
df71486c2c
|
@ -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()
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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):
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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``."""
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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')
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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'
|
||||
)
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue