From acd0aa87f29929d79cb5b7a7d54067b0dc15d65c Mon Sep 17 00:00:00 2001 From: Julien Danjou Date: Mon, 26 Aug 2013 17:29:45 +0200 Subject: [PATCH] Update config generator Updated straight from oslo-incubator. Change-Id: I3ff25a7e70e03c0651b6dfa23a526771c6496cfb --- .../openstack/common/config/generator.py | 10 ++++-- tools/config/generate_sample.sh | 35 +++++++++++++++---- 2 files changed, 36 insertions(+), 9 deletions(-) diff --git a/ceilometer/openstack/common/config/generator.py b/ceilometer/openstack/common/config/generator.py index 3d1e74dde..20fe4dd1e 100644 --- a/ceilometer/openstack/common/config/generator.py +++ b/ceilometer/openstack/common/config/generator.py @@ -78,6 +78,13 @@ def generate(srcfiles): # The options list is a list of (module, options) tuples opts_by_group = {'DEFAULT': []} + for module_name in os.getenv( + "OSLO_CONFIG_GENERATOR_EXTRA_MODULES", "").split(','): + module = _import_module(module_name) + if module: + for group, opts in _list_opts(module): + opts_by_group.setdefault(group, []).append((module_name, opts)) + for pkg_name in pkg_names: mods = mods_by_pkg.get(pkg_name) mods.sort() @@ -247,9 +254,6 @@ def _print_opt(opt): def main(): - if len(sys.argv) < 2: - print("usage: %s [srcfile]...\n" % sys.argv[0]) - sys.exit(0) generate(sys.argv[1:]) if __name__ == '__main__': diff --git a/tools/config/generate_sample.sh b/tools/config/generate_sample.sh index b95e986d2..d28a24d2d 100755 --- a/tools/config/generate_sample.sh +++ b/tools/config/generate_sample.sh @@ -18,9 +18,9 @@ while true; do echo "" echo "options:" echo "-h, --help show brief help" - echo "-b, --base-dir=DIR Project base directory (required)" - echo "-p, --package-name=NAME Project package name" - echo "-o, --output-dir=DIR File output directory" + echo "-b, --base-dir=DIR project base directory" + echo "-p, --package-name=NAME project package name" + echo "-o, --output-dir=DIR file output directory" exit 0 ;; -b|--base-dir) @@ -44,26 +44,49 @@ while true; do esac done -if [ -z $BASEDIR ] || ! [ -d $BASEDIR ] +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:-${BASEDIR##*/}} +TARGETDIR=$BASEDIR/$PACKAGENAME +if ! [ -d $TARGETDIR ] +then + echo "${0##*/}: invalid project package name" >&2 ; print_hint ; exit 1 +fi OUTPUTDIR=${OUTPUTDIR:-$BASEDIR/etc} -if ! [ -d $OUTPUTDIR ] +# 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'` -FILES=$(find $BASEDIR/$PACKAGENAME -type f -name "*.py" ! -path "*/tests/*" \ +FILES=$(find $TARGETDIR -type f -name "*.py" ! -path "*/tests/*" \ -exec grep -l "Opt(" {} + | sed -e "s/^$BASEDIRESC\///g" | sort -u) +EXTRA_MODULES_FILE="`dirname $0`/oslo.config.generator.rc" +if test -r "$EXTRA_MODULES_FILE" +then + source "$EXTRA_MODULES_FILE" +fi + export EVENTLET_NO_GREENDNS=yes +OS_VARS=$(set | sed -n '/^OS_/s/=[^=]*$//gp' | xargs) +[ "$OS_VARS" ] && eval "unset \$OS_VARS" + MODULEPATH=ceilometer.openstack.common.config.generator OUTPUTFILE=$OUTPUTDIR/$PACKAGENAME.conf.sample python -m $MODULEPATH $FILES > $OUTPUTFILE