Merge "support-keystoneclient-option"

This commit is contained in:
Zuul 2019-05-25 07:01:10 +00:00 committed by Gerrit Code Review
commit ba92791117
5 changed files with 57 additions and 3 deletions

View File

@ -0,0 +1,5 @@
---
features:
- |
Add keystone_client Group for user to configure 'interface' and 'region_name'
by watcher.conf. The default value of 'interface' is 'admin'.

View File

@ -76,8 +76,16 @@ class OpenStackClients(object):
@exception.wrap_keystone_exception
def keystone(self):
if not self._keystone:
self._keystone = keyclient.Client(session=self.session)
if self._keystone:
return self._keystone
keystone_interface = self._get_client_option('keystone',
'interface')
keystone_region_name = self._get_client_option('keystone',
'region_name')
self._keystone = keyclient.Client(
interface=keystone_interface,
region_name=keystone_region_name,
session=self.session)
return self._keystone

View File

@ -32,6 +32,7 @@ from watcher.conf import exception
from watcher.conf import glance_client
from watcher.conf import gnocchi_client
from watcher.conf import ironic_client
from watcher.conf import keystone_client
from watcher.conf import monasca_client
from watcher.conf import neutron_client
from watcher.conf import nova_client
@ -54,6 +55,7 @@ monasca_client.register_opts(CONF)
nova_client.register_opts(CONF)
glance_client.register_opts(CONF)
gnocchi_client.register_opts(CONF)
keystone_client.register_opts(CONF)
cinder_client.register_opts(CONF)
ceilometer_client.register_opts(CONF)
neutron_client.register_opts(CONF)

View File

@ -0,0 +1,38 @@
# -*- encoding: utf-8 -*-
# Copyright (c) 2019 ZTE Corporation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
# implied.
# See the License for the specific language governing permissions and
# limitations under the License.
from oslo_config import cfg
keystone_client = cfg.OptGroup(name='keystone_client',
title='Configuration Options for Keystone')
KEYSTONE_CLIENT_OPTS = [
cfg.StrOpt('interface',
default='admin',
choices=['internal', 'public', 'admin'],
help='Type of endpoint to use in keystoneclient.'),
cfg.StrOpt('region_name',
help='Region in Identity service catalog to use for '
'communication with the OpenStack service.')]
def register_opts(conf):
conf.register_group(keystone_client)
conf.register_opts(KEYSTONE_CLIENT_OPTS, group=keystone_client)
def list_opts():
return [('keystone_client', KEYSTONE_CLIENT_OPTS)]

View File

@ -32,7 +32,8 @@ class TestListOpts(base.TestCase):
'watcher_applier', 'watcher_datasources', 'watcher_planner',
'nova_client', 'glance_client', 'gnocchi_client', 'cinder_client',
'ceilometer_client', 'monasca_client', 'ironic_client',
'neutron_client', 'watcher_clients_auth', 'collector']
'keystone_client', 'neutron_client', 'watcher_clients_auth',
'collector']
self.opt_sections = list(dict(opts.list_opts()).keys())
def test_run_list_opts(self):