63600a34fb
Previously in the generation of the opts.py file, the option groups were hard coded. Now, they are pulled out as the lines are parsed. If a group doesn't already exist in the dictionary it gets added and then the options are added to the section. If the group already exists, the options are added to the proper section as you would expect, and if the options being registered don't have a group, they are added to the default section. This patch also moves the check for a non-zero exit code from oslo-config-generator to the right location in the file. This logic had been put too late in the file and was not catching oslo-config-generator failures as it should have been. Change-Id: I59c8067e8091d8bb212e3609f3a174ddc287707e
106 lines
3.2 KiB
Bash
Executable File
106 lines
3.2 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:
|
||
# CINDER_CONFIG_GENERATOR_EXTRA_MODULES: list of modules to interrogate for options.
|
||
# CINDER_CONFIG_GENERATOR_EXTRA_LIBRARIES: list of libraries to discover.
|
||
# CINDER_CONFIG_GENERATOR_EXCLUDED_FILES: list of files to remove from automatic listing.
|
||
|
||
BASEDIR=${BASEDIR:-`pwd`}
|
||
|
||
NOSAMPLE=0
|
||
if [ ! -z ${2} ] ; then
|
||
if [ "${2}" == "--nosamplefile" ]; then
|
||
NOSAMPLE=1
|
||
fi
|
||
fi
|
||
|
||
print_error ()
|
||
{
|
||
echo -en "\n\n##########################################################"
|
||
echo -en "\nERROR: ${0} was not called from tox."
|
||
echo -en "\n Execute 'tox -e genconfig' for cinder.conf.sample"
|
||
echo -en "\n generation."
|
||
echo -en "\n##########################################################\n\n"
|
||
}
|
||
|
||
if [ -z ${1} ] ; then
|
||
print_error
|
||
exit 1
|
||
fi
|
||
|
||
if [ ${1} != "from_tox" ] ; then
|
||
print_error
|
||
exit 1
|
||
fi
|
||
|
||
if ! [ -d $BASEDIR ] ; then
|
||
echo "${0##*/}: missing project base directory" >&2 ; 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 ; exit 1
|
||
fi
|
||
|
||
BASEDIRESC=`echo $BASEDIR | sed -e 's/\//\\\\\//g'`
|
||
find $TARGETDIR -type f -name "*.pyc" -delete
|
||
|
||
export TARGETDIR=$TARGETDIR
|
||
export BASEDIRESC=$BASEDIRESC
|
||
|
||
if [ -e $TARGETDIR/opts.py ] ; then
|
||
mv $TARGETDIR/opts.py $TARGETDIR/opts.py.bak
|
||
fi
|
||
|
||
python cinder/config/generate_cinder_opts.py
|
||
|
||
if [ $? -ne 0 ] ; then
|
||
echo -en "\n\n#################################################"
|
||
echo -en "\nERROR: Non-zero exit from generate_cinder_opts.py."
|
||
echo -en "\n See output above for details.\n"
|
||
echo -en "#################################################\n"
|
||
if [ -e $TARGETDIR/opts.py.bak ] ; then
|
||
mv $TARGETDIR/opts.py.bak $TARGETDIR/opts.py
|
||
fi
|
||
exit 1
|
||
fi
|
||
|
||
if [ $NOSAMPLE -eq 0 ] ; then
|
||
oslo-config-generator --config-file=cinder/config/cinder-config-generator.conf
|
||
|
||
if [ $? -ne 0 ] ; then
|
||
echo -en "\n\n#################################################"
|
||
echo -en "\nERROR: Non-zero exit from oslo-config-generator."
|
||
echo -en "\n See output above for details.\n"
|
||
echo -en "#################################################\n"
|
||
mv $TARGETDIR/opts.py.bak $TARGETDIR/opts.py
|
||
exit 1
|
||
fi
|
||
|
||
diff $TARGETDIR/opts.py $TARGETDIR/opts.py.bak &> /dev/null
|
||
|
||
if [ $? -ne 0 ] ; then
|
||
mv $TARGETDIR/opts.py.bak $TARGETDIR/opts.py
|
||
else
|
||
rm -f $TARGETDIR/opts.py.bak
|
||
fi
|
||
|
||
if [ ! -s ./etc/cinder/cinder.conf.sample ] ; then
|
||
echo -en "\n\n#########################################################"
|
||
echo -en "\nERROR: etc/cinder/cinder.sample.conf not created properly."
|
||
echo -en "\n See above output for details.\n"
|
||
echo -en "###########################################################\n"
|
||
exit 1
|
||
fi
|
||
else
|
||
rm -f $TARGETDIR/opts.py.bak
|
||
fi
|