202e2594a2
1. Added new config options for vnf packages. 2. This will generate a new sample config each time build sphinx is run. This is then used on a new docs page where you can either view the file in its entirety, or download the file. Partial-Implements: blueprint tosca-csar-mgmt-driver Co-Author: Bhagyashri Shewale <bhagyashri.shewale@nttdata.com> Co-Author: Neha Alhat <neha.alhat@nttdata.com> Change-Id: I900af00af7f939e6069411104caa714f396dc509
84 lines
2.8 KiB
Python
84 lines
2.8 KiB
Python
# Copyright 2015 OpenStack Foundation
|
|
# 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.
|
|
|
|
# TODO(nirajsingh): Most of the config options are scattered all through
|
|
# out the code. In future, move all these config options in new modules
|
|
# under conf/ folder.
|
|
|
|
"""
|
|
This is the single point of entry to generate the sample configuration
|
|
file for tacker. It collects all the necessary info from the other modules
|
|
in this package. It is assumed that:
|
|
|
|
* every other module in this package has a 'list_opts' function which
|
|
return a dict where
|
|
* the keys are strings which are the group names
|
|
* the value of each key is a list of config options for that group
|
|
* the tacker.conf package doesn't have further packages with config options
|
|
* this module is only used in the context of sample file generation
|
|
"""
|
|
|
|
import collections
|
|
import os
|
|
from oslo_utils import importutils
|
|
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 = importutils.import_module("tacker.conf." + modname)
|
|
if not hasattr(mod, LIST_OPTS_FUNC_NAME):
|
|
msg = "The module 'tacker.conf.%s' should have a '%s' "\
|
|
"function which returns the config options." % \
|
|
(modname, LIST_OPTS_FUNC_NAME)
|
|
raise Exception(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)
|