summaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2013-07-15 19:28:16 +0000
committerGerrit Code Review <review@openstack.org>2013-07-15 19:28:16 +0000
commit80f92cf1161fbecf6e5a3a98f29a296b9412a6dd (patch)
tree497c9b0422ee892de620ce6dab0e69344f20efd5 /tools
parent3972c3f494ca7c12e4b9c250a9c2f916165bb6fa (diff)
parente013ac8980755b416f529c9d6b87ecfa61d31b1a (diff)
downloadoslo-80f92cf1161fbecf6e5a3a98f29a296b9412a6dd.tar.gz
oslo-80f92cf1161fbecf6e5a3a98f29a296b9412a6dd.tar.xz
oslo-80f92cf1161fbecf6e5a3a98f29a296b9412a6dd.zip
Merge "Adds sample config file generation script"
Diffstat (limited to 'tools')
-rw-r--r--tools/config/README12
-rwxr-xr-xtools/config/generate_sample.sh69
2 files changed, 81 insertions, 0 deletions
diff --git a/tools/config/README b/tools/config/README
new file mode 100644
index 0000000..ccc2f55
--- /dev/null
+++ b/tools/config/README
@@ -0,0 +1,12 @@
+This generate_sample.sh tool is used to generate sample config files
+from OpenStack project source trees.
+
+Run it by passing the base directory and package name i.e.
+
+ $> generate_sample.sh --base-dir /opt/stack/nova --package-name nova \
+ --output-dir /opt/stack/nova/etc
+ $> generate_sample.sh -b /opt/stack/quantum -p nova -o /opt/stack/quantum/etc
+
+Watch out for warnings about modules like libvirt, qpid and zmq not
+being found - these warnings are significant because they result
+in options not appearing in the generated config file.
diff --git a/tools/config/generate_sample.sh b/tools/config/generate_sample.sh
new file mode 100755
index 0000000..410253f
--- /dev/null
+++ b/tools/config/generate_sample.sh
@@ -0,0 +1,69 @@
+#!/usr/bin/env bash
+
+print_hint() {
+ echo "Try \`${0##*/} --help' for more information." >&2
+}
+
+PARSED_OPTIONS=$(getopt -n "${0##*/}" -o hb:p:o: \
+ --long help,base-dir:,package-name:,output-dir: -- "$@")
+
+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 (required)"
+ echo "-p, --package-name=NAME Project package name"
+ echo "-o, --output-dir=DIR File output directory"
+ 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
+ ;;
+ --)
+ break
+ ;;
+ esac
+done
+
+if [ -z $BASEDIR ] || ! [ -d $BASEDIR ]
+then
+ echo "${0##*/}: missing project base directory" >&2 ; print_hint ; exit 1
+fi
+
+PACKAGENAME=${PACKAGENAME:-${BASEDIR##*/}}
+
+OUTPUTDIR=${OUTPUTDIR:-$BASEDIR/etc}
+if ! [ -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/*" \
+ -exec grep -l "Opt(" {} + | sed -e "s/^$BASEDIRESC\///g" | sort -u)
+
+export EVENTLET_NO_GREENDNS=yes
+
+MODULEPATH=$(dirname "$0")/../../openstack/common/config/generator.py
+OUTPUTFILE=$OUTPUTDIR/$PACKAGENAME.conf.sample
+PYTHONPATH=./:${PYTHONPATH} python $MODULEPATH $FILES > $OUTPUTFILE