
This syncs Keystone with oslo-incubator commit hash e9bb0b596650540f336afb070a1f8c7de099721f . In keystone: $ rm -r keystone/openstack/common In oslo-incubator: $ git checkout e9bb0b596650540f336afb070a1f8c7de099721f $ python update.py ../keystone Commits ------- bc48099 Log the function name of looping call 109e325 Use oslo.messaging to publish log errors de4adbc pep8: fixed multiple violations 9651085 generator: remove unused param, small clean up eac71f5 Fix common.log.ContextFormatter for Python 3 238e601 Make policy debug logging less verbose 250cd88 Fixed a new pep8 error and a small typo 5e3d3a5 Mask passwords included without quotes at the ends of commands e7c8a45 Improve error handling for conf sample generation 9e88af1 fixed typos found by RETF rules 5f12bba Implement stop method in ProcessLauncher 0d7296f Add kwargs to jsonutils.load(s) functions 9c88dc3 file_open: fixed docstring to refer to open() instead of file() d78b633 Fixes a simple spelling mistake 621d831 always log a traceback in the sys.excepthook Change-Id: I4ef56ce08e1f3bbc0ddb82a495da153e09a14c50
139 lines
4.0 KiB
Bash
Executable File
139 lines
4.0 KiB
Bash
Executable File
#!/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:
|
||
# KEYSTONE_CONFIG_GENERATOR_EXTRA_MODULES: list of modules to interrogate for options.
|
||
# KEYSTONE_CONFIG_GENERATOR_EXTRA_LIBRARIES: list of libraries to discover.
|
||
# KEYSTONE_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 ${KEYSTONE_CONFIG_GENERATOR_EXCLUDED_FILES}; do
|
||
FILES="${FILES[@]/$filename/}"
|
||
done
|
||
|
||
for mod in ${KEYSTONE_CONFIG_GENERATOR_EXTRA_MODULES}; do
|
||
MODULES="$MODULES -m $mod"
|
||
done
|
||
|
||
for lib in ${KEYSTONE_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=keystone.openstack.common.config.generator
|
||
MODULEPATH=${MODULEPATH:-$DEFAULT_MODULEPATH}
|
||
OUTPUTFILE=$OUTPUTDIR/$PACKAGENAME.conf.sample
|
||
python -m $MODULEPATH $MODULES $LIBRARIES $FILES > $OUTPUTFILE
|
||
if [ $? != 0 ]
|
||
then
|
||
echo "Can not generate $OUTPUTFILE"
|
||
exit 1
|
||
fi
|
||
|
||
# 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
|