
To generate the sample config file, do what other OpenStack projects do and use the oslo.config provided mechanism. Story: 2001009 Task: 4201 Change-Id: I490de4110843f7dfd618a6a8cc8d6a4e35db65ce
75 lines
2.1 KiB
Python
75 lines
2.1 KiB
Python
# Copyright 2017 FUJITSU LIMITED
|
|
#
|
|
# 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 os
|
|
import pkgutil
|
|
|
|
from oslo_config import cfg
|
|
from oslo_utils import importutils
|
|
|
|
CONF = cfg.CONF
|
|
|
|
|
|
def load_conf_modules():
|
|
"""Load all modules that contain configuration.
|
|
|
|
Method iterates over modules of :py:module:`monasca_persister.conf`
|
|
and imports only those that contain following methods:
|
|
|
|
- list_opts (required by oslo_config.genconfig)
|
|
- register_opts (required by :py:currentmodule:)
|
|
|
|
"""
|
|
for modname in _list_module_names():
|
|
mod = importutils.import_module('monasca_persister.conf.' + modname)
|
|
required_funcs = ['register_opts', 'list_opts']
|
|
for func in required_funcs:
|
|
if hasattr(mod, func):
|
|
yield mod
|
|
|
|
|
|
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 not (modname == "opts" and ispkg):
|
|
module_names.append(modname)
|
|
return module_names
|
|
|
|
|
|
def register_opts():
|
|
"""Register all conf modules opts.
|
|
|
|
This method allows different modules to register
|
|
opts according to their needs.
|
|
|
|
"""
|
|
for mod in load_conf_modules():
|
|
mod.register_opts(cfg.CONF)
|
|
|
|
|
|
def list_opts():
|
|
"""List all conf modules opts.
|
|
|
|
Goes through all conf modules and yields their opts.
|
|
|
|
"""
|
|
for mod in load_conf_modules():
|
|
mod_opts = mod.list_opts()
|
|
if type(mod_opts) is list:
|
|
for single_mod_opts in mod_opts:
|
|
yield single_mod_opts[0], single_mod_opts[1]
|
|
else:
|
|
yield mod_opts[0], mod_opts[1]
|