Make mistral use of oslo-config-generator
Change-Id: I01f36e4b0080e10b9d39a6adbfe4b6cd43957fc6
This commit is contained in:
parent
4e699ce21b
commit
f34edb7e27
File diff suppressed because it is too large
Load Diff
@ -18,6 +18,8 @@
|
|||||||
Configuration options registration and useful routines.
|
Configuration options registration and useful routines.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import itertools
|
||||||
|
|
||||||
from oslo.config import cfg
|
from oslo.config import cfg
|
||||||
|
|
||||||
from mistral.openstack.common import log
|
from mistral.openstack.common import log
|
||||||
@ -55,9 +57,9 @@ use_debugger = cfg.BoolOpt(
|
|||||||
"use-debugger",
|
"use-debugger",
|
||||||
default=False,
|
default=False,
|
||||||
help='Enables debugger. Note that using this option changes how the '
|
help='Enables debugger. Note that using this option changes how the '
|
||||||
'eventlet library is used to support async IO. This could result '
|
'eventlet library is used to support async IO. This could result '
|
||||||
'in failures that do not occur under normal operation. '
|
'in failures that do not occur under normal operation. '
|
||||||
'Use at your own risk.'
|
'Use at your own risk.'
|
||||||
)
|
)
|
||||||
|
|
||||||
engine_opts = [
|
engine_opts = [
|
||||||
@ -88,19 +90,28 @@ wf_trace_log_name_opt = cfg.StrOpt(
|
|||||||
'workflow_trace_log_name',
|
'workflow_trace_log_name',
|
||||||
default='workflow_trace',
|
default='workflow_trace',
|
||||||
help='Logger name for pretty '
|
help='Logger name for pretty '
|
||||||
'workflow trace output.'
|
'workflow trace output.'
|
||||||
)
|
)
|
||||||
|
|
||||||
CONF = cfg.CONF
|
CONF = cfg.CONF
|
||||||
|
|
||||||
CONF.register_opts(api_opts, group='api')
|
API_GROUP = 'api'
|
||||||
CONF.register_opts(engine_opts, group='engine')
|
ENGINE_GROUP = 'engine'
|
||||||
CONF.register_opts(pecan_opts, group='pecan')
|
EXECUTOR_GROUP = 'executor'
|
||||||
CONF.register_opts(executor_opts, group='executor')
|
PECAN_GROUP = 'pecan'
|
||||||
|
|
||||||
|
CONF.register_opts(api_opts, group=API_GROUP)
|
||||||
|
CONF.register_opts(engine_opts, group=ENGINE_GROUP)
|
||||||
|
CONF.register_opts(pecan_opts, group=PECAN_GROUP)
|
||||||
|
CONF.register_opts(executor_opts, group=EXECUTOR_GROUP)
|
||||||
CONF.register_opt(wf_trace_log_name_opt)
|
CONF.register_opt(wf_trace_log_name_opt)
|
||||||
|
|
||||||
CONF.register_cli_opt(use_debugger)
|
CLI_OPTS = [
|
||||||
CONF.register_cli_opt(launch_opt)
|
use_debugger,
|
||||||
|
launch_opt
|
||||||
|
]
|
||||||
|
|
||||||
|
CONF.register_cli_opts(CLI_OPTS)
|
||||||
|
|
||||||
CONF.import_opt('verbose', 'mistral.openstack.common.log')
|
CONF.import_opt('verbose', 'mistral.openstack.common.log')
|
||||||
CONF.set_default('verbose', True)
|
CONF.set_default('verbose', True)
|
||||||
@ -139,6 +150,19 @@ cfg.set_defaults(
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
def list_opts():
|
||||||
|
return [
|
||||||
|
(API_GROUP, api_opts),
|
||||||
|
(ENGINE_GROUP, engine_opts),
|
||||||
|
(EXECUTOR_GROUP, executor_opts),
|
||||||
|
(PECAN_GROUP, pecan_opts),
|
||||||
|
(None, itertools.chain(
|
||||||
|
CLI_OPTS,
|
||||||
|
[wf_trace_log_name_opt]
|
||||||
|
))
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
def parse_args(args=None, usage=None, default_config_files=None):
|
def parse_args(args=None, usage=None, default_config_files=None):
|
||||||
CONF(
|
CONF(
|
||||||
args=args,
|
args=args,
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
[DEFAULT]
|
[DEFAULT]
|
||||||
|
|
||||||
# The list of modules to copy from oslo-incubator.git
|
# The list of modules to copy from oslo-incubator.git
|
||||||
module=config.generator
|
|
||||||
module=log
|
module=log
|
||||||
module=jsonutils
|
module=jsonutils
|
||||||
module=lockutils
|
module=lockutils
|
||||||
|
@ -35,6 +35,9 @@ console_scripts =
|
|||||||
mistral-server = mistral.cmd.launch:main
|
mistral-server = mistral.cmd.launch:main
|
||||||
mistral-db-manage = mistral.db.sqlalchemy.migration.cli:main
|
mistral-db-manage = mistral.db.sqlalchemy.migration.cli:main
|
||||||
|
|
||||||
|
oslo.config.opts =
|
||||||
|
mistral.config = mistral.config:list_opts
|
||||||
|
|
||||||
mistral.actions =
|
mistral.actions =
|
||||||
std.async_noop = mistral.actions.std_actions:AsyncNoOpAction
|
std.async_noop = mistral.actions.std_actions:AsyncNoOpAction
|
||||||
std.noop = mistral.actions.std_actions:NoOpAction
|
std.noop = mistral.actions.std_actions:NoOpAction
|
||||||
|
@ -15,11 +15,11 @@ fi
|
|||||||
TEMPDIR=$(mktemp -d /tmp/${PROJECT_NAME}.XXXXXX)
|
TEMPDIR=$(mktemp -d /tmp/${PROJECT_NAME}.XXXXXX)
|
||||||
trap "rm -rf $TEMPDIR" EXIT
|
trap "rm -rf $TEMPDIR" EXIT
|
||||||
|
|
||||||
tools/config/generate_sample.sh -b ./ -p ${PROJECT_NAME} -o ${TEMPDIR}
|
oslo-config-generator --config-file tools/config/config-generator.mistral.conf --output-file ${TEMPDIR}/${CFGFILE_NAME}
|
||||||
|
|
||||||
if ! diff -u ${TEMPDIR}/${CFGFILE_NAME} ${CFGFILE}
|
if ! diff -u ${TEMPDIR}/${CFGFILE_NAME} ${CFGFILE}
|
||||||
then
|
then
|
||||||
echo "${0##*/}: ${PROJECT_NAME}.conf.sample is not up to date."
|
echo "${0##*/}: ${PROJECT_NAME}.conf.sample is not up to date."
|
||||||
echo "${0##*/}: Please run ${0%%${0##*/}}generate_sample.sh."
|
echo "${0##*/}: Please run tox -egenconfig."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
7
tools/config/config-generator.mistral.conf
Normal file
7
tools/config/config-generator.mistral.conf
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
[DEFAULT]
|
||||||
|
namespace = mistral.config
|
||||||
|
namespace = oslo.db
|
||||||
|
namespace = oslo.messaging
|
||||||
|
namespace = keystonemiddleware.auth_token
|
||||||
|
namespace = periodic.config
|
||||||
|
namespace = oslo.log
|
@ -1,133 +0,0 @@
|
|||||||
#!/usr/bin/env bash
|
|
||||||
|
|
||||||
# Generate sample configuration for your project.
|
|
||||||
#
|
|
||||||
# Aside from the command line flags, it also respects a config file which
|
|
||||||
# should be named oslo.config.generator.rc and be placed in the same directory.
|
|
||||||
#
|
|
||||||
# You can then export the following variables:
|
|
||||||
# MISTRAL_CONFIG_GENERATOR_EXTRA_MODULES: list of modules to interrogate for options.
|
|
||||||
# MISTRAL_CONFIG_GENERATOR_EXTRA_LIBRARIES: list of libraries to discover.
|
|
||||||
# MISTRAL_CONFIG_GENERATOR_EXCLUDED_FILES: list of files to remove from automatic listing.
|
|
||||||
|
|
||||||
print_hint() {
|
|
||||||
echo "Try '${0##*/} --help' for more information." >&2
|
|
||||||
}
|
|
||||||
|
|
||||||
PARSED_OPTIONS=$(getopt -n "${0##*/}" -o hb:p:m:l:o: \
|
|
||||||
--long help,base-dir:,package-name:,output-dir:,module:,library: -- "$@")
|
|
||||||
|
|
||||||
if [ $? != 0 ] ; then print_hint ; exit 1 ; fi
|
|
||||||
|
|
||||||
eval set -- "$PARSED_OPTIONS"
|
|
||||||
|
|
||||||
while true; do
|
|
||||||
case "$1" in
|
|
||||||
-h|--help)
|
|
||||||
echo "${0##*/} [options]"
|
|
||||||
echo ""
|
|
||||||
echo "options:"
|
|
||||||
echo "-h, --help show brief help"
|
|
||||||
echo "-b, --base-dir=DIR project base directory"
|
|
||||||
echo "-p, --package-name=NAME project package name"
|
|
||||||
echo "-o, --output-dir=DIR file output directory"
|
|
||||||
echo "-m, --module=MOD extra python module to interrogate for options"
|
|
||||||
echo "-l, --library=LIB extra library that registers options for discovery"
|
|
||||||
exit 0
|
|
||||||
;;
|
|
||||||
-b|--base-dir)
|
|
||||||
shift
|
|
||||||
BASEDIR=$(echo $1 | sed -e 's/\/*$//g')
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-p|--package-name)
|
|
||||||
shift
|
|
||||||
PACKAGENAME=$(echo $1)
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-o|--output-dir)
|
|
||||||
shift
|
|
||||||
OUTPUTDIR=$(echo $1 | sed -e 's/\/*$//g')
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-m|--module)
|
|
||||||
shift
|
|
||||||
MODULES="$MODULES -m $1"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
-l|--library)
|
|
||||||
shift
|
|
||||||
LIBRARIES="$LIBRARIES -l $1"
|
|
||||||
shift
|
|
||||||
;;
|
|
||||||
--)
|
|
||||||
break
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
|
|
||||||
BASEDIR=${BASEDIR:-$(pwd)}
|
|
||||||
if ! [ -d $BASEDIR ]
|
|
||||||
then
|
|
||||||
echo "${0##*/}: missing project base directory" >&2 ; print_hint ; exit 1
|
|
||||||
elif [[ $BASEDIR != /* ]]
|
|
||||||
then
|
|
||||||
BASEDIR=$(cd "$BASEDIR" && pwd)
|
|
||||||
fi
|
|
||||||
|
|
||||||
PACKAGENAME=${PACKAGENAME:-$(python setup.py --name)}
|
|
||||||
TARGETDIR=$BASEDIR/$PACKAGENAME
|
|
||||||
if ! [ -d $TARGETDIR ]
|
|
||||||
then
|
|
||||||
echo "${0##*/}: invalid project package name" >&2 ; print_hint ; exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
OUTPUTDIR=${OUTPUTDIR:-$BASEDIR/etc}
|
|
||||||
# NOTE(bnemec): Some projects put their sample config in etc/,
|
|
||||||
# some in etc/$PACKAGENAME/
|
|
||||||
if [ -d $OUTPUTDIR/$PACKAGENAME ]
|
|
||||||
then
|
|
||||||
OUTPUTDIR=$OUTPUTDIR/$PACKAGENAME
|
|
||||||
elif ! [ -d $OUTPUTDIR ]
|
|
||||||
then
|
|
||||||
echo "${0##*/}: cannot access '$OUTPUTDIR': No such file or directory" >&2
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
BASEDIRESC=$(echo $BASEDIR | sed -e 's/\//\\\\\//g')
|
|
||||||
find $TARGETDIR -type f -name "*.pyc" -delete
|
|
||||||
FILES=$(find $TARGETDIR -type f -name "*.py" ! -path "*/tests/*" \
|
|
||||||
-exec grep -l "Opt(" {} + | sed -e "s/^$BASEDIRESC\///g" | sort -u)
|
|
||||||
|
|
||||||
RC_FILE="$(dirname $0)/oslo.config.generator.rc"
|
|
||||||
if test -r "$RC_FILE"
|
|
||||||
then
|
|
||||||
source "$RC_FILE"
|
|
||||||
fi
|
|
||||||
|
|
||||||
for filename in ${MISTRAL_CONFIG_GENERATOR_EXCLUDED_FILES}; do
|
|
||||||
FILES="${FILES[@]/$filename/}"
|
|
||||||
done
|
|
||||||
|
|
||||||
for mod in ${MISTRAL_CONFIG_GENERATOR_EXTRA_MODULES}; do
|
|
||||||
MODULES="$MODULES -m $mod"
|
|
||||||
done
|
|
||||||
|
|
||||||
for lib in ${MISTRAL_CONFIG_GENERATOR_EXTRA_LIBRARIES}; do
|
|
||||||
LIBRARIES="$LIBRARIES -l $lib"
|
|
||||||
done
|
|
||||||
|
|
||||||
export EVENTLET_NO_GREENDNS=yes
|
|
||||||
|
|
||||||
OS_VARS=$(set | sed -n '/^OS_/s/=[^=]*$//gp' | xargs)
|
|
||||||
[ "$OS_VARS" ] && eval "unset \$OS_VARS"
|
|
||||||
DEFAULT_MODULEPATH=mistral.openstack.common.config.generator
|
|
||||||
MODULEPATH=${MODULEPATH:-$DEFAULT_MODULEPATH}
|
|
||||||
OUTPUTFILE=$OUTPUTDIR/$PACKAGENAME.conf.sample
|
|
||||||
python -m $MODULEPATH $MODULES $LIBRARIES $FILES > $OUTPUTFILE
|
|
||||||
|
|
||||||
# Hook to allow projects to append custom config file snippets
|
|
||||||
CONCAT_FILES=$(ls $BASEDIR/tools/config/*.conf.sample 2>/dev/null)
|
|
||||||
for CONCAT_FILE in $CONCAT_FILES; do
|
|
||||||
cat $CONCAT_FILE >> $OUTPUTFILE
|
|
||||||
done
|
|
@ -1,2 +0,0 @@
|
|||||||
export MISTRAL_CONFIG_GENERATOR_EXTRA_LIBRARIES="oslo.messaging oslo.db"
|
|
||||||
export MISTRAL_CONFIG_GENERATOR_EXTRA_MODULES=keystoneclient.middleware.auth_token
|
|
5
tox.ini
5
tox.ini
@ -26,6 +26,11 @@ commands =
|
|||||||
python setup.py testr --coverage \
|
python setup.py testr --coverage \
|
||||||
--testr-args='^(?!.*test.*coverage).*$'
|
--testr-args='^(?!.*test.*coverage).*$'
|
||||||
|
|
||||||
|
[testenv:genconfig]
|
||||||
|
commands =
|
||||||
|
oslo-config-generator --config-file tools/config/config-generator.mistral.conf \
|
||||||
|
--output-file etc/mistral.conf.sample
|
||||||
|
|
||||||
[testenv:venv]
|
[testenv:venv]
|
||||||
commands = {posargs}
|
commands = {posargs}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user