aboutsummaryrefslogtreecommitdiffstats
path: root/moonv4/moon_utilities/moon_utilities/options.py
diff options
context:
space:
mode:
Diffstat (limited to 'moonv4/moon_utilities/moon_utilities/options.py')
-rw-r--r--moonv4/moon_utilities/moon_utilities/options.py300
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))
+