diff --git a/etc/mistral.conf.example b/etc/mistral.conf.example deleted file mode 100644 index fbabedcf7..000000000 --- a/etc/mistral.conf.example +++ /dev/null @@ -1,82 +0,0 @@ -[DEFAULT] -# Show more verbose log output (sets INFO log level output) -verbose = True - -# Show debugging output in logs (sets DEBUG log level output) -debug = False - -# Log to this file -log_file = /tmp/mistral.log - -# Log levels for specific modules -default_log_levels = mistral=INFO,mistral.cmd.api=INFO,mistral.api=DEBUG,wsme=DEBUG - -# Rabbit config for oslo.messaging -rabbit_host = localhost -rabbit_port = 5672 -rabbit_virtual_host = / -rabbit_task_queue = tasks -rabbit_user = guest -rabbit_password = guest - -# Uncomment this option to get more fine-grained control over logging configuration -#log_config_append = etc/logging.conf - -# Options for oslo.messaging -#rpc_backend=rabbit - -# Specifies which mistral server(s) to start by the launch script. (string value) -# Choices are all (default) or comma delimited list of api, engine, and/or executor. -# Example: server=api,engine -#server=all - -# List of python module namespaces to search for plug-ins. -# See: doc/source/writing_a_plugin_action.rst on how to write a plugin. -action_plugins = mistral.actions.std - -[api] -# Host and port to bind the API server to -host = 0.0.0.0 -port = 8989 - -[engine] -# Mistral engine plugin (string value) -#engine=default - -# Name of the engine node. This can be an opaque identifier. -# It is not necessarily a hostname, FQDN, or IP address. (string value) -#host=0.0.0.0 - -# The message topic that the engine listens on. (string value) -#topic=engine - -# The version of the engine. (string value) -#version=1.0 - -[pecan] -auth_enable = True - -[database] -#A valid SQLAlchemy connection string -#connection = mysql://root:password@localhost:3306/mistral -connection = sqlite:///mistral.sqlite - -[keystone_authtoken] -auth_uri=http://localhost:5000/v3 -auth_host=localhost -auth_port=5000 -admin_user=admin -admin_password=password -auth_protocol=http -admin_tenant_name=admin - -[executor] -# Name of the executor node. This can be an opaque identifier. -# It is not necessarily a hostname, FQDN, or IP address. (string value) -#host=0.0.0.0 - -# The message topic that the executor listens on. (string value) -#topic=executor - -# The version of the executor. (string value) -#version=1.0 diff --git a/etc/mistral.conf.sample b/etc/mistral.conf.sample new file mode 100644 index 000000000..e2a7f2306 --- /dev/null +++ b/etc/mistral.conf.sample @@ -0,0 +1,654 @@ +[DEFAULT] + +# +# Options defined in oslo.messaging +# + +# Use durable queues in amqp. (boolean value) +# Deprecated group/name - [DEFAULT]/rabbit_durable_queues +#amqp_durable_queues=false + +# Auto-delete queues in amqp. (boolean value) +#amqp_auto_delete=false + +# Size of RPC connection pool. (integer value) +#rpc_conn_pool_size=30 + +# Modules of exceptions that are permitted to be recreated +# upon receiving exception data from an rpc call. (list value) +#allowed_rpc_exception_modules=oslo.messaging.exceptions,nova.exception,cinder.exception,exceptions + +# Qpid broker hostname. (string value) +#qpid_hostname=localhost + +# Qpid broker port. (integer value) +#qpid_port=5672 + +# Qpid HA cluster host:port pairs. (list value) +#qpid_hosts=$qpid_hostname:$qpid_port + +# Username for Qpid connection. (string value) +#qpid_username= + +# Password for Qpid connection. (string value) +#qpid_password= + +# Space separated list of SASL mechanisms to use for auth. +# (string value) +#qpid_sasl_mechanisms= + +# Seconds between connection keepalive heartbeats. (integer +# value) +#qpid_heartbeat=60 + +# Transport to use, either 'tcp' or 'ssl'. (string value) +#qpid_protocol=tcp + +# Whether to disable the Nagle algorithm. (boolean value) +#qpid_tcp_nodelay=true + +# The qpid topology version to use. Version 1 is what was +# originally used by impl_qpid. Version 2 includes some +# backwards-incompatible changes that allow broker federation +# to work. Users should update to version 2 when they are +# able to take everything down, as it requires a clean break. +# (integer value) +#qpid_topology_version=1 + +# SSL version to use (valid only if SSL enabled). valid values +# are TLSv1, SSLv23 and SSLv3. SSLv2 may be available on some +# distributions. (string value) +#kombu_ssl_version= + +# SSL key file (valid only if SSL enabled). (string value) +#kombu_ssl_keyfile= + +# SSL cert file (valid only if SSL enabled). (string value) +#kombu_ssl_certfile= + +# SSL certification authority file (valid only if SSL +# enabled). (string value) +#kombu_ssl_ca_certs= + +# How long to wait before reconnecting in response to an AMQP +# consumer cancel notification. (floating point value) +#kombu_reconnect_delay=1.0 + +# The RabbitMQ broker address where a single node is used. +# (string value) +#rabbit_host=localhost + +# The RabbitMQ broker port where a single node is used. +# (integer value) +#rabbit_port=5672 + +# RabbitMQ HA cluster host:port pairs. (list value) +#rabbit_hosts=$rabbit_host:$rabbit_port + +# Connect over SSL for RabbitMQ. (boolean value) +#rabbit_use_ssl=false + +# The RabbitMQ userid. (string value) +#rabbit_userid=guest + +# The RabbitMQ password. (string value) +#rabbit_password=guest + +# the RabbitMQ login method (string value) +#rabbit_login_method=AMQPLAIN + +# The RabbitMQ virtual host. (string value) +#rabbit_virtual_host=/ + +# How frequently to retry connecting with RabbitMQ. (integer +# value) +#rabbit_retry_interval=1 + +# How long to backoff for between retries when connecting to +# RabbitMQ. (integer value) +#rabbit_retry_backoff=2 + +# Maximum number of RabbitMQ connection retries. Default is 0 +# (infinite retry count). (integer value) +#rabbit_max_retries=0 + +# Use HA queues in RabbitMQ (x-ha-policy: all). If you change +# this option, you must wipe the RabbitMQ database. (boolean +# value) +#rabbit_ha_queues=false + +# If passed, use a fake RabbitMQ provider. (boolean value) +#fake_rabbit=false + +# ZeroMQ bind address. Should be a wildcard (*), an ethernet +# interface, or IP. The "host" option should point or resolve +# to this address. (string value) +#rpc_zmq_bind_address=* + +# MatchMaker driver. (string value) +#rpc_zmq_matchmaker=oslo.messaging._drivers.matchmaker.MatchMakerLocalhost + +# ZeroMQ receiver listening port. (integer value) +#rpc_zmq_port=9501 + +# Number of ZeroMQ contexts, defaults to 1. (integer value) +#rpc_zmq_contexts=1 + +# Maximum number of ingress messages to locally buffer per +# topic. Default is unlimited. (integer value) +#rpc_zmq_topic_backlog= + +# Directory for holding IPC sockets. (string value) +#rpc_zmq_ipc_dir=/var/run/openstack + +# Name of this node. Must be a valid hostname, FQDN, or IP +# address. Must match "host" option, if running Nova. (string +# value) +#rpc_zmq_host=mistral + +# Seconds to wait before a cast expires (TTL). Only supported +# by impl_zmq. (integer value) +#rpc_cast_timeout=30 + +# Heartbeat frequency. (integer value) +#matchmaker_heartbeat_freq=300 + +# Heartbeat time-to-live. (integer value) +#matchmaker_heartbeat_ttl=600 + +# Host to locate redis. (string value) +#host=127.0.0.1 + +# Use this port to connect to redis host. (integer value) +#port=6379 + +# Password for Redis server (optional). (string value) +#password= + +# Size of RPC greenthread pool. (integer value) +#rpc_thread_pool_size=64 + +# Driver or drivers to handle sending notifications. (multi +# valued) +#notification_driver= + +# AMQP topic used for OpenStack notifications. (list value) +# Deprecated group/name - [rpc_notifier2]/topics +#notification_topics=notifications + +# Seconds to wait for a response from a call. (integer value) +#rpc_response_timeout=60 + +# A URL representing the messaging driver to use and its full +# configuration. If not set, we fall back to the rpc_backend +# option and driver specific configuration. (string value) +#transport_url= + +# The messaging driver to use, defaults to rabbit. Other +# drivers include qpid and zmq. (string value) +#rpc_backend=rabbit + +# The default exchange under which topics are scoped. May be +# overridden by an exchange name specified in the +# transport_url option. (string value) +#control_exchange=openstack + + +# +# Options defined in mistral.config +# + +# List of namespaces to search for plug-ins. (list value) +#action_plugins=mistral.actions.std + +# Specifies which mistral server to start by the launch +# script. Valid options are all or any combination of api, +# engine, and executor. (list value) +#server=all + +# Enables debugger. Note that using this option changes how +# the eventlet library is used to support async IO. This could +# result in failures that do not occur under normal operation. +# Use at your own risk. (boolean value) +#use_debugger=false + +# Logger name for pretty workflow trace output. (string value) +#workflow_trace_log_name=workflow_trace + + +# +# Options defined in mistral.openstack.common.lockutils +# + +# Enables or disables inter-process locks. (boolean value) +#disable_process_locking=false + +# Directory to use for lock files. (string value) +#lock_path= + + +# +# Options defined in mistral.openstack.common.log +# + +# Print debugging output (set logging level to DEBUG instead +# of default WARNING level). (boolean value) +#debug=false + +# Print more verbose output (set logging level to INFO instead +# of default WARNING level). (boolean value) +#verbose=false + +# Log output to standard error. (boolean value) +#use_stderr=true + +# Format string to use for log messages with context. (string +# value) +#logging_context_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [%(request_id)s %(user_identity)s] %(instance)s%(message)s + +# Format string to use for log messages without context. +# (string value) +#logging_default_format_string=%(asctime)s.%(msecs)03d %(process)d %(levelname)s %(name)s [-] %(instance)s%(message)s + +# Data to append to log format when level is DEBUG. (string +# value) +#logging_debug_format_suffix=%(funcName)s %(pathname)s:%(lineno)d + +# Prefix each line of exception output with this format. +# (string value) +#logging_exception_prefix=%(asctime)s.%(msecs)03d %(process)d TRACE %(name)s %(instance)s + +# List of logger=LEVEL pairs. (list value) +#default_log_levels=sqlalchemy=WARN,eventlet.wsgi.server=WARN + +# Enables or disables publication of error events. (boolean +# value) +#publish_errors=false + +# Enables or disables fatal status of deprecations. (boolean +# value) +#fatal_deprecations=false + +# The format for an instance that is passed with the log +# message. (string value) +#instance_format="[instance: %(uuid)s] " + +# The format for an instance UUID that is passed with the log +# message. (string value) +#instance_uuid_format="[instance: %(uuid)s] " + +# The name of a logging configuration file. This file is +# appended to any existing logging configuration files. For +# details about logging configuration files, see the Python +# logging module documentation. (string value) +# Deprecated group/name - [DEFAULT]/log_config +#log_config_append= + +# DEPRECATED. A logging.Formatter log message format string +# which may use any of the available logging.LogRecord +# attributes. This option is deprecated. Please use +# logging_context_format_string and +# logging_default_format_string instead. (string value) +#log_format= + +# Format string for %%(asctime)s in log records. Default: +# %(default)s . (string value) +#log_date_format=%Y-%m-%d %H:%M:%S + +# (Optional) Name of log file to output to. If no default is +# set, logging will go to stdout. (string value) +# Deprecated group/name - [DEFAULT]/logfile +#log_file= + +# (Optional) The base directory used for relative --log-file +# paths. (string value) +# Deprecated group/name - [DEFAULT]/logdir +#log_dir= + +# Use syslog for logging. Existing syslog format is DEPRECATED +# during I, and will change in J to honor RFC5424. (boolean +# value) +#use_syslog=false + +# (Optional) Enables or disables syslog rfc5424 format for +# logging. If enabled, prefixes the MSG part of the syslog +# message with APP-NAME (RFC5424). The format without the APP- +# NAME is deprecated in I, and will be removed in J. (boolean +# value) +#use_syslog_rfc_format=false + +# Syslog facility to receive log lines. (string value) +#syslog_log_facility=LOG_USER + + +# +# Options defined in mistral.openstack.common.periodic_task +# + +# Some periodic tasks can be run in a separate process. Should +# we run them here? (boolean value) +#run_external_periodic_tasks=true + + +[api] + +# +# Options defined in mistral.config +# + +# Mistral API server host (string value) +#host=0.0.0.0 + +# Mistral API server port (integer value) +#port=8989 + + +[database] + +# +# Options defined in mistral.openstack.common.db.options +# + +# The file name to use with SQLite (string value) +#sqlite_db=mistral.sqlite + +# If True, SQLite uses synchronous mode (boolean value) +#sqlite_synchronous=true + +# The backend to use for db (string value) +# Deprecated group/name - [DEFAULT]/db_backend +#backend=sqlalchemy + +# The SQLAlchemy connection string used to connect to the +# database (string value) +# Deprecated group/name - [DEFAULT]/sql_connection +# Deprecated group/name - [DATABASE]/sql_connection +# Deprecated group/name - [sql]/connection +#connection= + +# The SQL mode to be used for MySQL sessions. This option, +# including the default, overrides any server-set SQL mode. To +# use whatever SQL mode is set by the server configuration, +# set this to no value. Example: mysql_sql_mode= (string +# value) +#mysql_sql_mode=TRADITIONAL + +# Timeout before idle sql connections are reaped (integer +# value) +# Deprecated group/name - [DEFAULT]/sql_idle_timeout +# Deprecated group/name - [DATABASE]/sql_idle_timeout +# Deprecated group/name - [sql]/idle_timeout +#idle_timeout=3600 + +# Minimum number of SQL connections to keep open in a pool +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_min_pool_size +# Deprecated group/name - [DATABASE]/sql_min_pool_size +#min_pool_size=1 + +# Maximum number of SQL connections to keep open in a pool +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_pool_size +# Deprecated group/name - [DATABASE]/sql_max_pool_size +#max_pool_size= + +# Maximum db connection retries during startup. (setting -1 +# implies an infinite retry count) (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_retries +# Deprecated group/name - [DATABASE]/sql_max_retries +#max_retries=10 + +# Interval between retries of opening a sql connection +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_retry_interval +# Deprecated group/name - [DATABASE]/reconnect_interval +#retry_interval=10 + +# If set, use this value for max_overflow with sqlalchemy +# (integer value) +# Deprecated group/name - [DEFAULT]/sql_max_overflow +# Deprecated group/name - [DATABASE]/sqlalchemy_max_overflow +#max_overflow= + +# Verbosity of SQL debugging information. 0=None, +# 100=Everything (integer value) +# Deprecated group/name - [DEFAULT]/sql_connection_debug +#connection_debug=0 + +# Add python stack traces to SQL as comment strings (boolean +# value) +# Deprecated group/name - [DEFAULT]/sql_connection_trace +#connection_trace=false + +# If set, use this value for pool_timeout with sqlalchemy +# (integer value) +# Deprecated group/name - [DATABASE]/sqlalchemy_pool_timeout +#pool_timeout= + +# Enable the experimental use of database reconnect on +# connection lost (boolean value) +#use_db_reconnect=false + +# seconds between db connection retries (integer value) +#db_retry_interval=1 + +# Whether to increase interval between db connection retries, +# up to db_max_retry_interval (boolean value) +#db_inc_retry_interval=true + +# max seconds between db connection retries, if +# db_inc_retry_interval is enabled (integer value) +#db_max_retry_interval=10 + +# maximum db connection retries before error is raised. +# (setting -1 implies an infinite retry count) (integer value) +#db_max_retries=20 + + +[engine] + +# +# Options defined in mistral.config +# + +# Mistral engine plugin (string value) +#engine=default + +# Name of the engine node. This can be an opaque identifier. +# It is not necessarily a hostname, FQDN, or IP address. +# (string value) +#host=0.0.0.0 + +# The message topic that the engine listens on. (string value) +#topic=engine + +# The version of the engine. (string value) +#version=1.0 + + +[executor] + +# +# Options defined in mistral.config +# + +# Name of the executor node. This can be an opaque identifier. +# It is not necessarily a hostname, FQDN, or IP address. +# (string value) +#host=0.0.0.0 + +# The message topic that the executor listens on. (string +# value) +#topic=executor + +# The version of the executor. (string value) +#version=1.0 + + +[keystone_authtoken] + +# +# Options defined in keystoneclient.middleware.auth_token +# + +# Prefix to prepend at the beginning of the path. Deprecated, +# use identity_uri. (string value) +#auth_admin_prefix= + +# Host providing the admin Identity API endpoint. Deprecated, +# use identity_uri. (string value) +#auth_host=127.0.0.1 + +# Port of the admin Identity API endpoint. Deprecated, use +# identity_uri. (integer value) +#auth_port=35357 + +# Protocol of the admin Identity API endpoint (http or https). +# Deprecated, use identity_uri. (string value) +#auth_protocol=https + +# Complete public Identity API endpoint (string value) +#auth_uri= + +# Complete admin Identity API endpoint. This should specify +# the unversioned root endpoint eg. https://localhost:35357/ +# (string value) +#identity_uri= + +# API version of the admin Identity API endpoint (string +# value) +#auth_version= + +# Do not handle authorization requests within the middleware, +# but delegate the authorization decision to downstream WSGI +# components (boolean value) +#delay_auth_decision=false + +# Request timeout value for communicating with Identity API +# server. (boolean value) +#http_connect_timeout= + +# How many times are we trying to reconnect when communicating +# with Identity API Server. (integer value) +#http_request_max_retries=3 + +# Single shared secret with the Keystone configuration used +# for bootstrapping a Keystone installation, or otherwise +# bypassing the normal authentication process. (string value) +#admin_token= + +# Keystone account username (string value) +#admin_user= + +# Keystone account password (string value) +#admin_password= + +# Keystone service account tenant name to validate user tokens +# (string value) +#admin_tenant_name=admin + +# Env key for the swift cache (string value) +#cache= + +# Required if Keystone server requires client certificate +# (string value) +#certfile= + +# Required if Keystone server requires client certificate +# (string value) +#keyfile= + +# A PEM encoded Certificate Authority to use when verifying +# HTTPs connections. Defaults to system CAs. (string value) +#cafile= + +# Verify HTTPS connections. (boolean value) +#insecure=false + +# Directory used to cache files related to PKI tokens (string +# value) +#signing_dir= + +# Optionally specify a list of memcached server(s) to use for +# caching. If left undefined, tokens will instead be cached +# in-process. (list value) +# Deprecated group/name - [DEFAULT]/memcache_servers +#memcached_servers= + +# In order to prevent excessive effort spent validating +# tokens, the middleware caches previously-seen tokens for a +# configurable duration (in seconds). Set to -1 to disable +# caching completely. (integer value) +#token_cache_time=300 + +# Determines the frequency at which the list of revoked tokens +# is retrieved from the Identity service (in seconds). A high +# number of revocation events combined with a low cache +# duration may significantly reduce performance. (integer +# value) +#revocation_cache_time=300 + +# (optional) if defined, indicate whether token data should be +# authenticated or authenticated and encrypted. Acceptable +# values are MAC or ENCRYPT. If MAC, token data is +# authenticated (with HMAC) in the cache. If ENCRYPT, token +# data is encrypted and authenticated in the cache. If the +# value is not one of these options or empty, auth_token will +# raise an exception on initialization. (string value) +#memcache_security_strategy= + +# (optional, mandatory if memcache_security_strategy is +# defined) this string is used for key derivation. (string +# value) +#memcache_secret_key= + +# (optional) indicate whether to set the X-Service-Catalog +# header. If False, middleware will not ask for service +# catalog on token validation and will not set the X-Service- +# Catalog header. (boolean value) +#include_service_catalog=true + +# Used to control the use and type of token binding. Can be +# set to: "disabled" to not check token binding. "permissive" +# (default) to validate binding information if the bind type +# is of a form known to the server and ignore it if not. +# "strict" like "permissive" but if the bind type is unknown +# the token will be rejected. "required" any form of token +# binding is needed to be allowed. Finally the name of a +# binding method that must be present in tokens. (string +# value) +#enforce_token_bind=permissive + + +[matchmaker_ring] + +# +# Options defined in oslo.messaging +# + +# Matchmaker ring file (JSON). (string value) +# Deprecated group/name - [DEFAULT]/matchmaker_ringfile +#ringfile=/etc/oslo/matchmaker_ring.json + + +[pecan] + +# +# Options defined in mistral.config +# + +# Pecan root controller (string value) +#root=mistral.api.controllers.root.RootController + +# A list of modules where pecan will search for applications. +# (list value) +#modules=mistral.api + +# Enables the ability to display tracebacks in the browser and +# interactively debug during development. (boolean value) +#debug=false + +# Enables user authentication in pecan. (boolean value) +#auth_enable=true + + diff --git a/mistral/config.py b/mistral/config.py index 354268cb6..666ad1c24 100644 --- a/mistral/config.py +++ b/mistral/config.py @@ -44,27 +44,21 @@ engine_opts = [ pecan_opts = [ cfg.StrOpt('root', default='mistral.api.controllers.root.RootController', help='Pecan root controller'), - cfg.ListOpt('modules', default=["mistral.api"]), - cfg.BoolOpt('debug', default=False), - cfg.BoolOpt('auth_enable', default=True) + cfg.ListOpt('modules', default=["mistral.api"], + help='A list of modules where pecan will search for ' + 'applications.'), + cfg.BoolOpt('debug', default=False, + help='Enables the ability to display tracebacks in the ' + 'browser and interactively debug during ' + 'development.'), + cfg.BoolOpt('auth_enable', default=True, + help='Enables user authentication in pecan.') ] db_opts = [ # TODO: add DB properties. ] -rabbit_opts = [ - cfg.StrOpt('rabbit_host', default='0.0.0.0', - help='RabbitMQ server host name'), - cfg.IntOpt('rabbit_port', default=5672, help='RabbitMQ server port'), - cfg.StrOpt('rabbit_virtual_host', default='/', - help='RabbitMQ server virtual host name'), - cfg.StrOpt('rabbit_task_queue', default='tasks', - help='RabbitMQ tasks queue name'), - cfg.StrOpt('rabbit_user', default='guest', help='RabbitMQ user'), - cfg.StrOpt('rabbit_password', default='guest', help='RabbitMQ password') -] - use_debugger = cfg.BoolOpt( "use-debugger", default=False, @@ -110,7 +104,6 @@ CONF.register_opts(api_opts, group='api') CONF.register_opts(engine_opts, group='engine') CONF.register_opts(pecan_opts, group='pecan') CONF.register_opts(db_opts, group='database') -CONF.register_opts(rabbit_opts, group='rabbit') CONF.register_opts(executor_opts, group='executor') CONF.register_opt(wf_trace_log_name_opt) CONF.register_opt(action_plugins_opt) diff --git a/mistral/engine/__init__.py b/mistral/engine/__init__.py index 7926d9fbd..d2d6f07f9 100644 --- a/mistral/engine/__init__.py +++ b/mistral/engine/__init__.py @@ -20,18 +20,16 @@ from oslo import messaging from oslo.config import cfg from stevedore import driver -# If mistral.config is not imported here, nosetests will fail on import -# because workflow_trace_log_name is not registered. The use of importutils -# to import mistral.config instead of simply "from mistral import config" is -# to avoid pep8 error on module referenced but not used. -# TODO(m4dcoder): Refactor and clean up configuration registration. -from mistral.openstack.common import importutils -importutils.import_module("mistral.config") - from mistral.openstack.common import log as logging from mistral.db import api as db_api from mistral import dsl_parser as parser from mistral import exceptions as exc + +# Submoules of mistral.engine will throw NoSuchOptError if configuration +# options required at top level of this __init__.py are not imported before +# the submodules are referenced. +cfg.CONF.import_opt('workflow_trace_log_name', 'mistral.config') + from mistral.engine import states from mistral.engine import workflow from mistral.engine import data_flow diff --git a/mistral/tests/api/base.py b/mistral/tests/api/base.py index dfdd3a20a..4bffea768 100644 --- a/mistral/tests/api/base.py +++ b/mistral/tests/api/base.py @@ -20,15 +20,11 @@ from webtest.app import AppError from oslo.config import cfg -from mistral.openstack.common import importutils from mistral.tests import base -# We need to make sure that all configuration properties are registered. -importutils.import_module("mistral.config") # Disable authentication for functional tests. -cfg.CONF.unregister_opt(cfg.BoolOpt('auth_enable'), 'pecan') -cfg.CONF.register_opt(cfg.BoolOpt('auth_enable', default=False), group='pecan') +cfg.CONF.set_default('auth_enable', False, group='pecan') __all__ = ['FunctionalTest'] diff --git a/mistral/tests/base.py b/mistral/tests/base.py index bbea7a0f2..41a3abde5 100644 --- a/mistral/tests/base.py +++ b/mistral/tests/base.py @@ -24,12 +24,6 @@ from oslo.messaging import transport import pkg_resources as pkg from stevedore import driver -from mistral.openstack.common import importutils - - -# We need to make sure that all configuration properties are registered. -importutils.import_module("mistral.config") - from mistral.db.sqlalchemy import api as db_api from mistral.openstack.common import log as logging from mistral import version diff --git a/mistral/tests/unit/engine/default/test_executor.py b/mistral/tests/unit/engine/default/test_executor.py index 9433e458f..22346867d 100644 --- a/mistral/tests/unit/engine/default/test_executor.py +++ b/mistral/tests/unit/engine/default/test_executor.py @@ -24,7 +24,6 @@ from oslo.config import cfg from mistral.tests import base from mistral.openstack.common import log as logging -from mistral.openstack.common import importutils from mistral.engine import states from mistral.db import api as db_api from mistral.actions import std_actions @@ -32,8 +31,6 @@ from mistral import engine from mistral.engine import executor -# We need to make sure that all configuration properties are registered. -importutils.import_module("mistral.config") LOG = logging.getLogger(__name__) # Use the set_default method to set value otherwise in certain test cases diff --git a/mistral/tests/unit/engine/test_transport.py b/mistral/tests/unit/engine/test_transport.py index 91605b355..85baa080e 100644 --- a/mistral/tests/unit/engine/test_transport.py +++ b/mistral/tests/unit/engine/test_transport.py @@ -23,15 +23,12 @@ from oslo.config import cfg from mistral.tests import base from mistral.openstack.common import log as logging -from mistral.openstack.common import importutils from mistral.cmd import launch from mistral.engine import states from mistral.db import api as db_api from mistral.actions import std_actions -# We need to make sure that all configuration properties are registered. -importutils.import_module("mistral.config") LOG = logging.getLogger(__name__) # Use the set_default method to set value otherwise in certain test cases diff --git a/tools/config/oslo.config.generator.rc b/tools/config/oslo.config.generator.rc new file mode 100644 index 000000000..aa406131d --- /dev/null +++ b/tools/config/oslo.config.generator.rc @@ -0,0 +1,2 @@ +export MISTRAL_CONFIG_GENERATOR_EXTRA_LIBRARIES=oslo.messaging +export MISTRAL_CONFIG_GENERATOR_EXTRA_MODULES=keystoneclient.middleware.auth_token