Merge "Split oslo_config and list all opts"

This commit is contained in:
Jenkins
2016-02-15 16:49:19 +00:00
committed by Gerrit Code Review
4 changed files with 122 additions and 8 deletions

View File

@@ -0,0 +1,55 @@
# 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.
import copy
from keystoneauth1 import loading
import keystonemiddleware.auth_token
from keystonemiddleware.auth_token import _base
auth_token_opts = [
(_base.AUTHTOKEN_GROUP,
keystonemiddleware.auth_token._OPTS +
loading.get_auth_common_conf_options())
]
__all__ = (
'list_opts',
)
def list_opts():
"""Return a list of oslo_config options available in auth_token middleware.
The returned list includes the non-deprecated oslo_config options which may
be registered at runtime by the project. The purpose of this is to allow
tools like the Oslo sample config file generator to discover the options
exposed to users by this middleware.
Deprecated Options should not show up here so as to not be included in
sample configuration.
Each element of the list is a tuple. The first element is the name of the
group under which the list of elements in the second element will be
registered. A group name of None corresponds to the [DEFAULT] group in
config files.
This function is discoverable via the entry point
'keystonemiddleware.auth_token' under the 'oslo.config.opts' namespace.
:returns: a list of (group_name, opts) tuples
"""
auth_token_opts = (keystonemiddleware.auth_token._OPTS +
loading.get_auth_common_conf_options())
return [(_base.AUTHTOKEN_GROUP, copy.deepcopy(auth_token_opts))]

View File

@@ -21,11 +21,13 @@ import copy
from keystoneauth1 import loading
import keystonemiddleware.auth_token
from keystonemiddleware.auth_token import _auth
from keystonemiddleware.auth_token import _base
auth_token_opts = [
(_base.AUTHTOKEN_GROUP,
keystonemiddleware.auth_token._OPTS +
_auth.OPTS +
loading.get_auth_common_conf_options())
]
@@ -41,12 +43,13 @@ def list_auth_token_opts():
registered. A group name of None corresponds to the [DEFAULT] group in
config files.
This function is also discoverable via the entry point
'keystonemiddleware.auth_token' under the 'oslo.config.opts'
namespace.
NOTE: This function is no longer used for oslo_config sample generation.
Some services rely on this function for listing ALL (including deprecated)
options and registering them into their own config objects which we do not
want for sample config files.
The purpose of this is to allow tools like the Oslo sample config file
generator to discover the options exposed to users by this middleware.
See: :py:func:`keystonemiddleware.auth_token._opts.list_opts` for sample
config files.
:returns: a list of (group_name, opts) tuples
"""

View File

@@ -15,18 +15,74 @@
import stevedore
from testtools import matchers
from keystonemiddleware import opts
from keystonemiddleware.auth_token import _opts as new_opts
from keystonemiddleware import opts as old_opts
from keystonemiddleware.tests.unit import utils
class OptsTestCase(utils.TestCase):
def test_original_list_all_options(self):
result_of_old_opts = old_opts.list_auth_token_opts()
self.assertThat(result_of_old_opts, matchers.HasLength(1))
for group in (g for (g, _l) in result_of_old_opts):
self.assertEqual('keystone_authtoken', group)
# This is the original list that includes deprecated options
expected_opt_names = [
'auth_admin_prefix',
'auth_host',
'auth_port',
'auth_protocol',
'auth_uri',
'identity_uri',
'auth_version',
'delay_auth_decision',
'http_connect_timeout',
'http_request_max_retries',
'admin_token',
'admin_user',
'admin_password',
'admin_tenant_name',
'cache',
'certfile',
'keyfile',
'cafile',
'region_name',
'insecure',
'signing_dir',
'memcached_servers',
'token_cache_time',
'revocation_cache_time',
'memcache_security_strategy',
'memcache_secret_key',
'memcache_use_advanced_pool',
'memcache_pool_dead_retry',
'memcache_pool_maxsize',
'memcache_pool_unused_timeout',
'memcache_pool_conn_get_timeout',
'memcache_pool_socket_timeout',
'include_service_catalog',
'enforce_token_bind',
'check_revocations_for_cached',
'hash_algorithms',
'auth_type',
'auth_section',
]
opt_names = [o.name for (g, l) in result_of_old_opts for o in l]
self.assertThat(opt_names, matchers.HasLength(len(expected_opt_names)))
for opt in opt_names:
self.assertIn(opt, expected_opt_names)
def _test_list_auth_token_opts(self, result):
self.assertThat(result, matchers.HasLength(1))
for group in (g for (g, _l) in result):
self.assertEqual('keystone_authtoken', group)
# This is the sample config generator list WITHOUT deprecations
expected_opt_names = [
'auth_uri',
'auth_version',
@@ -65,7 +121,7 @@ class OptsTestCase(utils.TestCase):
self.assertIn(opt, expected_opt_names)
def test_list_auth_token_opts(self):
self._test_list_auth_token_opts(opts.list_auth_token_opts())
self._test_list_auth_token_opts(new_opts.list_opts())
def test_entry_point(self):
em = stevedore.ExtensionManager('oslo.config.opts',

View File

@@ -28,7 +28,7 @@ setup-hooks =
[entry_points]
oslo.config.opts =
keystonemiddleware.auth_token = keystonemiddleware.opts:list_auth_token_opts
keystonemiddleware.auth_token = keystonemiddleware.auth_token._opts:list_opts
paste.filter_factory =
auth_token = keystonemiddleware.auth_token:filter_factory