From ae87683acd51eb7f0d8336a0af18a66b3dcab1b7 Mon Sep 17 00:00:00 2001 From: wangzh21 Date: Sun, 10 Jun 2018 15:58:51 +0800 Subject: [PATCH] Fix tox -egenconfig 1.Imply the namespace cyborg 2.Remoeve unused namespace oslo.reports Change-Id: I61de79aa3b8a97c4a4dd6d92ef7bce951f6efd55 Story: #2002200 Task: #21685 --- cyborg/conf/api.py | 9 +++ cyborg/conf/database.py | 9 +++ cyborg/conf/default.py | 10 ++++ cyborg/conf/opts.py | 67 +++++++++++++++++++++++ setup.cfg | 3 + tools/config/cyborg-config-generator.conf | 1 - 6 files changed, 98 insertions(+), 1 deletion(-) create mode 100644 cyborg/conf/opts.py diff --git a/cyborg/conf/api.py b/cyborg/conf/api.py index 96cf69d2..356b9615 100644 --- a/cyborg/conf/api.py +++ b/cyborg/conf/api.py @@ -54,6 +54,15 @@ opt_group = cfg.OptGroup(name='api', title='Options for the cyborg-api service') +API_OPTS = (opts) + + def register_opts(conf): conf.register_group(opt_group) conf.register_opts(opts, group=opt_group) + + +def list_opts(): + return { + opt_group: API_OPTS + } diff --git a/cyborg/conf/database.py b/cyborg/conf/database.py index be653552..49ddecf3 100644 --- a/cyborg/conf/database.py +++ b/cyborg/conf/database.py @@ -30,3 +30,12 @@ opt_group = cfg.OptGroup(name='database', def register_opts(conf): conf.register_opts(opts, group=opt_group) + + +DB_OPTS = (opts) + + +def list_opts(): + return { + opt_group: DB_OPTS + } diff --git a/cyborg/conf/default.py b/cyborg/conf/default.py index 520e6daf..21b29579 100644 --- a/cyborg/conf/default.py +++ b/cyborg/conf/default.py @@ -121,3 +121,13 @@ def register_opts(conf): def register_placement_opts(cfg=cfg.CONF): cfg.register_opts(placement_opts, group=PLACEMENT_CONF_SECTION) + + +DEFAULT_OPTS = (exc_log_opts + service_opts + path_opts) +PLACEMENT_OPTS = (placement_opts) + + +def list_opts(): + return { + PLACEMENT_CONF_SECTION: PLACEMENT_OPTS, 'DEFAULT': DEFAULT_OPTS + } diff --git a/cyborg/conf/opts.py b/cyborg/conf/opts.py new file mode 100644 index 00000000..c1eb3d6d --- /dev/null +++ b/cyborg/conf/opts.py @@ -0,0 +1,67 @@ +# Copyright 2018 Beijing Lenovo Software Ltd. +# All Rights Reserved. +# +# 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 collections +import importlib +import os +import pkgutil + +LIST_OPTS_FUNC_NAME = "list_opts" + + +def _tupleize(dct): + """Take the dict of options and convert to the 2-tuple format.""" + return [(key, val) for key, val in dct.items()] + + +def list_opts(): + opts = collections.defaultdict(list) + module_names = _list_module_names() + imported_modules = _import_modules(module_names) + _append_config_options(imported_modules, opts) + return _tupleize(opts) + + +def _list_module_names(): + module_names = [] + package_path = os.path.dirname(os.path.abspath(__file__)) + for _, modname, ispkg in pkgutil.iter_modules(path=[package_path]): + if modname == "opts" or ispkg: + continue + else: + module_names.append(modname) + return module_names + + +def _import_modules(module_names): + imported_modules = [] + for modname in module_names: + mod = importlib.import_module("cyborg.conf." + modname) + if not hasattr(mod, LIST_OPTS_FUNC_NAME): + msg = "The module 'zun.conf.%s' should have a '%s' "\ + "function which returns the config options." % \ + (modname, LIST_OPTS_FUNC_NAME) + raise AttributeError(msg) + else: + imported_modules.append(mod) + return imported_modules + + +def _append_config_options(imported_modules, config_options): + for mod in imported_modules: + configs = mod.list_opts() + for key, val in configs.items(): + config_options[key].extend(val) diff --git a/setup.cfg b/setup.cfg index c8569b83..f78a1f59 100644 --- a/setup.cfg +++ b/setup.cfg @@ -43,6 +43,9 @@ console_scripts = cyborg.database.migration_backend = sqlalchemy = cyborg.db.sqlalchemy.migration +oslo.config.opts = + cyborg = cyborg.conf.opts:list_opts + [build_sphinx] source-dir = doc/source build-dir = doc/build diff --git a/tools/config/cyborg-config-generator.conf b/tools/config/cyborg-config-generator.conf index 46ac15d7..35461ef1 100644 --- a/tools/config/cyborg-config-generator.conf +++ b/tools/config/cyborg-config-generator.conf @@ -6,7 +6,6 @@ namespace = oslo.db namespace = oslo.messaging namespace = oslo.policy namespace = oslo.log -namespace = oslo.reports namespace = oslo.service.service namespace = oslo.service.periodic_task namespace = oslo.service.sslutils