Add endpoint_type option for openstack clients.
Interface type internalURL' is used as a default value. Change-Id: Ia1acbfbfd2a1eecd85e5aa1d2e19665d411c4c58 Closes-Bug: #1671405
This commit is contained in:
parent
f106076d70
commit
cde60d2ead
|
@ -80,7 +80,9 @@ class OpenStackClients(object):
|
|||
return self._nova
|
||||
|
||||
novaclient_version = self._get_client_option('nova', 'api_version')
|
||||
nova_endpoint_type = self._get_client_option('nova', 'endpoint_type')
|
||||
self._nova = nvclient.Client(novaclient_version,
|
||||
endpoint_type=nova_endpoint_type,
|
||||
session=self.session)
|
||||
return self._nova
|
||||
|
||||
|
@ -90,7 +92,10 @@ class OpenStackClients(object):
|
|||
return self._glance
|
||||
|
||||
glanceclient_version = self._get_client_option('glance', 'api_version')
|
||||
glance_endpoint_type = self._get_client_option('glance',
|
||||
'endpoint_type')
|
||||
self._glance = glclient.Client(glanceclient_version,
|
||||
interface=glance_endpoint_type,
|
||||
session=self.session)
|
||||
return self._glance
|
||||
|
||||
|
@ -101,7 +106,10 @@ class OpenStackClients(object):
|
|||
|
||||
gnocchiclient_version = self._get_client_option('gnocchi',
|
||||
'api_version')
|
||||
gnocchiclient_interface = self._get_client_option('gnocchi',
|
||||
'endpoint_type')
|
||||
self._gnocchi = gnclient.Client(gnocchiclient_version,
|
||||
interface=gnocchiclient_interface,
|
||||
session=self.session)
|
||||
return self._gnocchi
|
||||
|
||||
|
@ -111,7 +119,10 @@ class OpenStackClients(object):
|
|||
return self._cinder
|
||||
|
||||
cinderclient_version = self._get_client_option('cinder', 'api_version')
|
||||
cinder_endpoint_type = self._get_client_option('cinder',
|
||||
'endpoint_type')
|
||||
self._cinder = ciclient.Client(cinderclient_version,
|
||||
endpoint_type=cinder_endpoint_type,
|
||||
session=self.session)
|
||||
return self._cinder
|
||||
|
||||
|
@ -122,8 +133,12 @@ class OpenStackClients(object):
|
|||
|
||||
ceilometerclient_version = self._get_client_option('ceilometer',
|
||||
'api_version')
|
||||
self._ceilometer = ceclient.get_client(ceilometerclient_version,
|
||||
session=self.session)
|
||||
ceilometer_endpoint_type = self._get_client_option('ceilometer',
|
||||
'endpoint_type')
|
||||
self._ceilometer = ceclient.get_client(
|
||||
ceilometerclient_version,
|
||||
endpoint_type=ceilometer_endpoint_type,
|
||||
session=self.session)
|
||||
return self._ceilometer
|
||||
|
||||
@exception.wrap_keystone_exception
|
||||
|
@ -133,6 +148,8 @@ class OpenStackClients(object):
|
|||
|
||||
monascaclient_version = self._get_client_option(
|
||||
'monasca', 'api_version')
|
||||
monascaclient_interface = self._get_client_option(
|
||||
'monasca', 'interface')
|
||||
token = self.session.get_token()
|
||||
watcher_clients_auth_config = CONF.get(_CLIENTS_AUTH_GROUP)
|
||||
service_type = 'monitoring'
|
||||
|
@ -148,7 +165,8 @@ class OpenStackClients(object):
|
|||
'username': watcher_clients_auth_config.username,
|
||||
'password': watcher_clients_auth_config.password,
|
||||
}
|
||||
endpoint = self.session.get_endpoint(service_type=service_type)
|
||||
endpoint = self.session.get_endpoint(service_type=service_type,
|
||||
interface=monascaclient_interface)
|
||||
|
||||
self._monasca = monclient.Client(
|
||||
monascaclient_version, endpoint, **monasca_kwargs)
|
||||
|
@ -162,7 +180,11 @@ class OpenStackClients(object):
|
|||
|
||||
neutronclient_version = self._get_client_option('neutron',
|
||||
'api_version')
|
||||
neutron_endpoint_type = self._get_client_option('neutron',
|
||||
'endpoint_type')
|
||||
|
||||
self._neutron = netclient.Client(neutronclient_version,
|
||||
endpoint_type=neutron_endpoint_type,
|
||||
session=self.session)
|
||||
self._neutron.format = 'json'
|
||||
return self._neutron
|
||||
|
|
|
@ -25,7 +25,12 @@ CEILOMETER_CLIENT_OPTS = [
|
|||
cfg.StrOpt('api_version',
|
||||
default='2',
|
||||
help='Version of Ceilometer API to use in '
|
||||
'ceilometerclient.')]
|
||||
'ceilometerclient.'),
|
||||
cfg.StrOpt('endpoint_type',
|
||||
default='internalURL',
|
||||
help='Type of endpoint to use in ceilometerclient.'
|
||||
'Supported values: internalURL, publicURL, adminURL'
|
||||
'The default is internalURL.')]
|
||||
|
||||
|
||||
def register_opts(conf):
|
||||
|
|
|
@ -24,7 +24,12 @@ cinder_client = cfg.OptGroup(name='cinder_client',
|
|||
CINDER_CLIENT_OPTS = [
|
||||
cfg.StrOpt('api_version',
|
||||
default='2',
|
||||
help='Version of Cinder API to use in cinderclient.')]
|
||||
help='Version of Cinder API to use in cinderclient.'),
|
||||
cfg.StrOpt('endpoint_type',
|
||||
default='internalURL',
|
||||
help='Type of endpoint to use in cinderclient.'
|
||||
'Supported values: internalURL, publicURL, adminURL'
|
||||
'The default is internalURL.')]
|
||||
|
||||
|
||||
def register_opts(conf):
|
||||
|
|
|
@ -24,7 +24,12 @@ glance_client = cfg.OptGroup(name='glance_client',
|
|||
GLANCE_CLIENT_OPTS = [
|
||||
cfg.StrOpt('api_version',
|
||||
default='2',
|
||||
help='Version of Glance API to use in glanceclient.')]
|
||||
help='Version of Glance API to use in glanceclient.'),
|
||||
cfg.StrOpt('endpoint_type',
|
||||
default='internalURL',
|
||||
help='Type of endpoint to use in glanceclient.'
|
||||
'Supported values: internalURL, publicURL, adminURL'
|
||||
'The default is internalURL.')]
|
||||
|
||||
|
||||
def register_opts(conf):
|
||||
|
|
|
@ -25,6 +25,11 @@ GNOCCHI_CLIENT_OPTS = [
|
|||
cfg.StrOpt('api_version',
|
||||
default='1',
|
||||
help='Version of Gnocchi API to use in gnocchiclient.'),
|
||||
cfg.StrOpt('endpoint_type',
|
||||
default='internalURL',
|
||||
help='Type of endpoint to use in gnocchi client.'
|
||||
'Supported values: internalURL, publicURL, adminURL'
|
||||
'The default is internalURL.'),
|
||||
cfg.IntOpt('query_max_retries',
|
||||
default=10,
|
||||
help='How many times Watcher is trying to query again'),
|
||||
|
|
|
@ -24,7 +24,12 @@ monasca_client = cfg.OptGroup(name='monasca_client',
|
|||
MONASCA_CLIENT_OPTS = [
|
||||
cfg.StrOpt('api_version',
|
||||
default='2_0',
|
||||
help='Version of Monasca API to use in monascaclient.')]
|
||||
help='Version of Monasca API to use in monascaclient.'),
|
||||
cfg.StrOpt('interface',
|
||||
default='internal',
|
||||
help='Type of interface used for monasca endpoint.'
|
||||
'Supported values: internal, public, admin'
|
||||
'The default is internal.')]
|
||||
|
||||
|
||||
def register_opts(conf):
|
||||
|
|
|
@ -24,7 +24,12 @@ neutron_client = cfg.OptGroup(name='neutron_client',
|
|||
NEUTRON_CLIENT_OPTS = [
|
||||
cfg.StrOpt('api_version',
|
||||
default='2.0',
|
||||
help='Version of Neutron API to use in neutronclient.')]
|
||||
help='Version of Neutron API to use in neutronclient.'),
|
||||
cfg.StrOpt('endpoint_type',
|
||||
default='internalURL',
|
||||
help='Type of endpoint to use in neutronclient.'
|
||||
'Supported values: internalURL, publicURL, adminURL'
|
||||
'The default is internalURL.')]
|
||||
|
||||
|
||||
def register_opts(conf):
|
||||
|
|
|
@ -24,7 +24,12 @@ nova_client = cfg.OptGroup(name='nova_client',
|
|||
NOVA_CLIENT_OPTS = [
|
||||
cfg.StrOpt('api_version',
|
||||
default='2',
|
||||
help='Version of Nova API to use in novaclient.')]
|
||||
help='Version of Nova API to use in novaclient.'),
|
||||
cfg.StrOpt('endpoint_type',
|
||||
default='internalURL',
|
||||
help='Type of endpoint to use in novaclient.'
|
||||
'Supported values: internalURL, publicURL, adminURL'
|
||||
'The default is internalURL.')]
|
||||
|
||||
|
||||
def register_opts(conf):
|
||||
|
|
|
@ -115,8 +115,10 @@ class TestClients(base.TestCase):
|
|||
osc = clients.OpenStackClients()
|
||||
osc._nova = None
|
||||
osc.nova()
|
||||
mock_call.assert_called_once_with(CONF.nova_client.api_version,
|
||||
session=mock_session)
|
||||
mock_call.assert_called_once_with(
|
||||
CONF.nova_client.api_version,
|
||||
endpoint_type=CONF.nova_client.endpoint_type,
|
||||
session=mock_session)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_nova_diff_vers(self, mock_session):
|
||||
|
@ -126,6 +128,14 @@ class TestClients(base.TestCase):
|
|||
osc.nova()
|
||||
self.assertEqual('2.3', osc.nova().api_version.get_string())
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_nova_diff_endpoint(self, mock_session):
|
||||
CONF.set_override('endpoint_type', 'publicURL', group='nova_client')
|
||||
osc = clients.OpenStackClients()
|
||||
osc._nova = None
|
||||
osc.nova()
|
||||
self.assertEqual('publicURL', osc.nova().client.interface)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_nova_cached(self, mock_session):
|
||||
osc = clients.OpenStackClients()
|
||||
|
@ -140,8 +150,10 @@ class TestClients(base.TestCase):
|
|||
osc = clients.OpenStackClients()
|
||||
osc._glance = None
|
||||
osc.glance()
|
||||
mock_call.assert_called_once_with(CONF.glance_client.api_version,
|
||||
session=mock_session)
|
||||
mock_call.assert_called_once_with(
|
||||
CONF.glance_client.api_version,
|
||||
interface=CONF.glance_client.endpoint_type,
|
||||
session=mock_session)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_glance_diff_vers(self, mock_session):
|
||||
|
@ -151,6 +163,14 @@ class TestClients(base.TestCase):
|
|||
osc.glance()
|
||||
self.assertEqual(1.0, osc.glance().version)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_glance_diff_endpoint(self, mock_session):
|
||||
CONF.set_override('endpoint_type', 'publicURL', group='glance_client')
|
||||
osc = clients.OpenStackClients()
|
||||
osc._glance = None
|
||||
osc.glance()
|
||||
self.assertEqual('publicURL', osc.glance().http_client.interface)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_glance_cached(self, mock_session):
|
||||
osc = clients.OpenStackClients()
|
||||
|
@ -165,8 +185,10 @@ class TestClients(base.TestCase):
|
|||
osc = clients.OpenStackClients()
|
||||
osc._gnocchi = None
|
||||
osc.gnocchi()
|
||||
mock_call.assert_called_once_with(CONF.gnocchi_client.api_version,
|
||||
session=mock_session)
|
||||
mock_call.assert_called_once_with(
|
||||
CONF.gnocchi_client.api_version,
|
||||
interface=CONF.gnocchi_client.endpoint_type,
|
||||
session=mock_session)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_gnocchi_diff_vers(self, mock_session):
|
||||
|
@ -177,6 +199,15 @@ class TestClients(base.TestCase):
|
|||
osc.gnocchi()
|
||||
self.assertEqual(gnclient_v1.Client, type(osc.gnocchi()))
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_gnocchi_diff_endpoint(self, mock_session):
|
||||
# gnocchiclient currently only has one version (v1)
|
||||
CONF.set_override('endpoint_type', 'publicURL', group='gnocchi_client')
|
||||
osc = clients.OpenStackClients()
|
||||
osc._gnocchi = None
|
||||
osc.gnocchi()
|
||||
self.assertEqual('publicURL', osc.gnocchi().api.interface)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_gnocchi_cached(self, mock_session):
|
||||
osc = clients.OpenStackClients()
|
||||
|
@ -191,8 +222,10 @@ class TestClients(base.TestCase):
|
|||
osc = clients.OpenStackClients()
|
||||
osc._cinder = None
|
||||
osc.cinder()
|
||||
mock_call.assert_called_once_with(CONF.cinder_client.api_version,
|
||||
session=mock_session)
|
||||
mock_call.assert_called_once_with(
|
||||
CONF.cinder_client.api_version,
|
||||
endpoint_type=CONF.cinder_client.endpoint_type,
|
||||
session=mock_session)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_cinder_diff_vers(self, mock_session):
|
||||
|
@ -202,6 +235,14 @@ class TestClients(base.TestCase):
|
|||
osc.cinder()
|
||||
self.assertEqual(ciclient_v1.Client, type(osc.cinder()))
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_cinder_diff_endpoint(self, mock_session):
|
||||
CONF.set_override('endpoint_type', 'publicURL', group='cinder_client')
|
||||
osc = clients.OpenStackClients()
|
||||
osc._cinder = None
|
||||
osc.cinder()
|
||||
self.assertEqual('publicURL', osc.cinder().client.interface)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_cinder_cached(self, mock_session):
|
||||
osc = clients.OpenStackClients()
|
||||
|
@ -219,6 +260,7 @@ class TestClients(base.TestCase):
|
|||
mock_call.assert_called_once_with(
|
||||
CONF.ceilometer_client.api_version,
|
||||
None,
|
||||
endpoint_type=CONF.ceilometer_client.endpoint_type,
|
||||
session=mock_session)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
|
@ -235,6 +277,18 @@ class TestClients(base.TestCase):
|
|||
self.assertEqual(ceclient_v2.Client,
|
||||
type(osc.ceilometer()))
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
@mock.patch.object(ceclient_v2.Client, '_get_redirect_client')
|
||||
def test_clients_ceilometer_diff_endpoint(self, mock_get_redirect_client,
|
||||
mock_session):
|
||||
mock_get_redirect_client.return_value = [mock.Mock(), mock.Mock()]
|
||||
CONF.set_override('endpoint_type', 'publicURL',
|
||||
group='ceilometer_client')
|
||||
osc = clients.OpenStackClients()
|
||||
osc._ceilometer = None
|
||||
osc.ceilometer()
|
||||
self.assertEqual('publicURL', osc.ceilometer().http_client.interface)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
@mock.patch.object(ceclient_v2.Client, '_get_redirect_client')
|
||||
def test_clients_ceilometer_cached(self, mock_get_redirect_client,
|
||||
|
@ -252,8 +306,10 @@ class TestClients(base.TestCase):
|
|||
osc = clients.OpenStackClients()
|
||||
osc._neutron = None
|
||||
osc.neutron()
|
||||
mock_call.assert_called_once_with(CONF.neutron_client.api_version,
|
||||
session=mock_session)
|
||||
mock_call.assert_called_once_with(
|
||||
CONF.neutron_client.api_version,
|
||||
endpoint_type=CONF.neutron_client.endpoint_type,
|
||||
session=mock_session)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_neutron_diff_vers(self, mock_session):
|
||||
|
@ -266,6 +322,16 @@ class TestClients(base.TestCase):
|
|||
self.assertEqual(netclient_v2.Client,
|
||||
type(osc.neutron()))
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_neutron_diff_endpoint(self, mock_session):
|
||||
'''neutronclient currently only has one version (v2)'''
|
||||
CONF.set_override('endpoint_type', 'publicURL',
|
||||
group='neutron_client')
|
||||
osc = clients.OpenStackClients()
|
||||
osc._neutron = None
|
||||
osc.neutron()
|
||||
self.assertEqual('publicURL', osc.neutron().httpclient.interface)
|
||||
|
||||
@mock.patch.object(clients.OpenStackClients, 'session')
|
||||
def test_clients_neutron_cached(self, mock_session):
|
||||
osc = clients.OpenStackClients()
|
||||
|
|
Loading…
Reference in New Issue