diff options
Diffstat (limited to 'moonv4/moon_utilities/moon_utilities/options.py')
-rw-r--r-- | moonv4/moon_utilities/moon_utilities/options.py | 300 |
1 files changed, 300 insertions, 0 deletions
diff --git a/moonv4/moon_utilities/moon_utilities/options.py b/moonv4/moon_utilities/moon_utilities/options.py new file mode 100644 index 00000000..8b8ccca4 --- /dev/null +++ b/moonv4/moon_utilities/moon_utilities/options.py @@ -0,0 +1,300 @@ +# Copyright 2015 Open Platform for NFV Project, Inc. and its contributors +# This software is distributed under the terms and conditions of the 'Apache-2.0' +# license which can be found in the file 'LICENSE' in this package distribution +# or at 'http://www.apache.org/licenses/LICENSE-2.0'. + +import os +import sys +from oslo_config import cfg +from oslo_log import log as logging +from moon_utilities import __version__ + +LOG = logging.getLogger(__name__) +CONF = cfg.CONF + +__CWD__ = os.path.dirname(os.path.abspath(__file__)) + + +def configure(domain="moon", version=__version__, usage=""): + # FIXME (dthom): put DEBUG as default log level doesn't work + extra_log_level_defaults = [ + '{}=DEBUG'.format(__name__), + ] + # LOG.setLevel(logging.DEBUG) + logging.set_defaults( + default_log_levels=logging.get_default_log_levels() + extra_log_level_defaults) + + logging.register_options(CONF) + logging.setup(CONF, domain) + + CONF.register_opts(get_opts()) + + # rabbit_group = cfg.OptGroup(name='messenger', + # title='Messenger options') + # CONF.register_group(rabbit_group) + # CONF.register_opts(get_messenger_opts(), group="messenger") + + slave_group = cfg.OptGroup(name='slave', + title='Messenger options') + CONF.register_group(slave_group) + CONF.register_opts(get_slave_opts(), group="slave") + + database_group = cfg.OptGroup(name='database', + title='Database options') + CONF.register_group(database_group) + CONF.register_opts(get_database_opts(), group="database") + + database_configuration_group = cfg.OptGroup(name='database_configuration', + title='Database configuration options') + CONF.register_group(database_configuration_group) + CONF.register_opts(get_database_configuration_opts(), group="database_configuration") + + orchestrator_group = cfg.OptGroup(name='orchestrator', + title='Orchestrator options') + CONF.register_group(orchestrator_group) + CONF.register_opts(get_orchestrator_opts(), group="orchestrator") + + secrouter_group = cfg.OptGroup(name='security_router', + title='Security Router options') + CONF.register_group(secrouter_group) + CONF.register_opts(get_security_router_opts(), group="security_router") + + manager_group = cfg.OptGroup(name='security_manager', + title='Manager options') + CONF.register_group(manager_group) + CONF.register_opts(get_manager_opts(), group="security_manager") + + secpolicy_group = cfg.OptGroup(name='security_policy', + title='Security policy options') + CONF.register_group(secpolicy_group) + CONF.register_opts(get_security_policy_opts(), group="security_policy") + + secfunction_group = cfg.OptGroup(name='security_function', + title='Security function options') + CONF.register_group(secfunction_group) + CONF.register_opts(get_security_function_opts(), group="security_function") + + interface_group = cfg.OptGroup(name='interface', + title='Interface options') + CONF.register_group(interface_group) + CONF.register_opts(get_interface_opts(), group="interface") + + keystone_group = cfg.OptGroup(name='keystone', + title='Keystone options') + CONF.register_group(keystone_group) + CONF.register_opts(get_keystone_opts(), group="keystone") + + filename = "moon.conf" + for _filename in ( + "/etc/moon/{}", + "conf/{}", + "../conf/{}", + ): + try: + default_config_files = (_filename.format(filename), ) + CONF(args=sys.argv[1:], + project=domain, + # version=pbr.version.VersionInfo('keystone').version_string(), + version=version, + usage=usage, + default_config_files=default_config_files) + except cfg.ConfigFilesNotFoundError: + continue + else: + LOG.info("Using {} configuration file".format(_filename.format(filename))) + return _filename.format(filename) + + +def get_opts(): + return [ + cfg.StrOpt('proxy', + default="", + help='Proxy server to use'), + cfg.StrOpt('dist_dir', + default="", + help='Directory where the python packages can be found'), + cfg.StrOpt('plugin_dir', + default="", + help='Directory where the python plugins can be found'), + cfg.StrOpt('docker_url', + default="unix://var/run/docker.sock", + help='Docker URL to connect to.'), + cfg.StrOpt('policy_directory', + default="/etc/moon/policies", + help='Directory containing all the intra-extension templates'), + cfg.StrOpt('root_policy_directory', + default="/etc/moon/policies/policy_root", + help='Directory containing the Root intra-extension template'), + cfg.StrOpt('master', + default="", + help='URL of the Moon Master'), + cfg.StrOpt('master_login', + default="", + help='Login to log into the Moon Master'), + cfg.StrOpt('master_password', + default="", + help='Password for the Moon Master'), + ] + + +# def get_messenger_opts(): +# return [ +# cfg.StrOpt('host', +# default="0.0.0.0", +# help='RabbitMQ server name or IP.'), +# cfg.IntOpt('port', +# default=8800, +# help='RabbitMQ server port.'), +# ] + + +def get_orchestrator_opts(): + return [ + cfg.StrOpt('host', + default="127.0.0.1", + help='Host binding'), + cfg.IntOpt('port', + default=38000, + help='Port number of the server'), + ] + + +def get_slave_opts(): + return [ + cfg.StrOpt('slave_name', + default="", + help='name of the slave'), + cfg.StrOpt('master_url', + default="", + help='URL of the RabbitMQ bus of the Master, ' + 'example: master_url=rabbit://moon:p4sswOrd1@messenger:5672/moon'), + cfg.StrOpt('master_login', + default="", + help='login name of the master administrator, example: master_login=admin'), + cfg.StrOpt('master_password', + default="", + help='password of the master administrator, example: master_password=XXXXXXX'), + ] + + +def get_security_router_opts(): + return [ + cfg.StrOpt('container', + default="", + help='Name of the container to download (if empty build from scratch)'), + cfg.StrOpt('host', + default="127.0.0.1", + help='Host binding'), + cfg.IntOpt('port', + default=38001, + help='Port number of the server'), + ] + + +def get_manager_opts(): + return [ + cfg.StrOpt('container', + default="", + help='Name of the container to download (if empty build from scratch)'), + cfg.StrOpt('host', + default="127.0.0.1", + help='Host binding'), + cfg.IntOpt('port', + default=38001, + help='Port number of the server'), + ] + + +def get_security_policy_opts(): + return [ + cfg.StrOpt('container', + default="", + help='Name of the container to download (if empty build from scratch)'), + ] + + +def get_security_function_opts(): + return [ + cfg.StrOpt('container', + default="", + help='Name of the container to download (if empty build from scratch)'), + ] + + +def get_interface_opts(): + return [ + cfg.StrOpt('container', + default="", + help='Name of the container to download (if empty build from scratch)'), + cfg.StrOpt('host', + default="127.0.0.1", + help='Host binding'), + cfg.IntOpt('port', + default=38002, + help='Port number of the server'), + ] + + +def get_database_opts(): + return [ + cfg.StrOpt('url', + default="mysql+pymysql://moonuser:password@localhost/moon", + help='URL of the database'), + cfg.StrOpt('driver', + default="sql", + help='Driver binding'), + ] + + +def get_database_configuration_opts(): + return [ + cfg.StrOpt('url', + default="", + help='URL of the database'), + cfg.StrOpt('driver', + default="memory", + help='Driver binding'), + ] + + +def get_keystone_opts(): + return [ + cfg.StrOpt('url', + default="http://localhost:35357", + help='URL of the Keystone manager.'), + cfg.StrOpt('user', + default="admin", + help='Username of the Keystone manager.'), + cfg.StrOpt('password', + default="nomoresecrete", + help='Password of the Keystone manager.'), + cfg.StrOpt('project', + default="admin", + help='Project used to connect to the Keystone manager.'), + cfg.StrOpt('domain', + default="Default", + help='Default domain for the Keystone manager.'), + cfg.StrOpt('check_token', + default="true", + help='If true, yes or strict, always check Keystone tokens against the server'), + cfg.StrOpt('server_crt', + default="", + help='If using Keystone in HTTPS mode, give a certificate filename here'), + ] + +filename = configure() + + +def get_docker_template_dir(templatename="template.dockerfile"): + path = os.path.dirname(os.path.abspath(filename)) + PATHS = ( + path, + os.path.join(path, "dockers"), + "/etc/moon/" + "~/.moon/" + ) + for _path in PATHS: + if os.path.isfile(os.path.join(_path, templatename)): + return _path + raise Exception("Configuration error, cannot find docker template in {}".format(PATHS)) + |