97 lines
1.8 KiB
Bash
Executable File
97 lines
1.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
set -ex
|
|
|
|
SRC=${4:-/etc/neutron}
|
|
TMPL=${3:-neutron-template}
|
|
TEMPLATE_FILE=../patches/neutron-template.tar
|
|
|
|
function log {
|
|
echo $* > /dev/stderr
|
|
}
|
|
|
|
function exit_error {
|
|
log "Error"
|
|
exit 1
|
|
}
|
|
|
|
function exit_success {
|
|
log "Success"
|
|
exit 0
|
|
}
|
|
|
|
function tmpl_var_names {
|
|
egrep -Rho '%[A-Z_]+%' $1 | sed -r ':a;N;$!ba;s/\n/\l|/g;s/^/^(/;s/$/)/' | sed 's/\(.*\)/\L\1/;s/%//g'
|
|
}
|
|
|
|
function tmpl_var_values {
|
|
sed -r 's/[ ]+?=[ ]+?/=/g' | awk -F= '/=/ {printf("s/%%%s%%/%s/g;\n", toupper($1), $2)}'
|
|
}
|
|
|
|
function prepare() {
|
|
local TMPL_DIR=$1
|
|
local SRC_DIR=$2
|
|
local OUTPUT_DIR="/tmp/neutron-$$"
|
|
log "Check source and template dirs"
|
|
test -d $SRC_DIR -a -d $TMPL_DIR
|
|
|
|
|
|
log "Generate variable names"
|
|
var_names=`tmpl_var_names $TMPL_DIR`
|
|
|
|
log "Get values from source dir"
|
|
var_values=`egrep -hR "$var_names" $SRC_DIR | tmpl_var_values`
|
|
|
|
cp -r $TMPL_DIR $OUTPUT_DIR
|
|
|
|
find $OUTPUT_DIR -type f | xargs -tI{} sed -ri'' "$var_values" {}
|
|
|
|
echo $OUTPUT_DIR
|
|
}
|
|
|
|
function install() {
|
|
local SRC_DIR=$1
|
|
local DST_DIR=$2
|
|
test -d $SRC_DIR -a -d $DST_DIR
|
|
|
|
test -z "$NEUTRON_BACKUP" && {
|
|
tar cvf /tmp/neutron-before-upgrade$$.tar $DST_DIR
|
|
}
|
|
rm -rf $DST_DIR
|
|
cp -vr $SRC_DIR $DST_DIR
|
|
test -f $DST_DIR/plugins/ml2/ml2_conf.ini
|
|
ln -s $DST_DIR/plugins/ml2/ml2_conf.ini $DST_DIR/plugin.ini
|
|
test -h $DST_DIR/plugin.ini
|
|
chown -R root:neutron $DST_DIR
|
|
}
|
|
|
|
function bootstrap() {
|
|
local NODE=$1
|
|
test -f $0 -a -f ${TEMPLATE_FILE}
|
|
scp $0 ${TEMPLATE_FILE} ${NODE}:
|
|
ssh ${NODE} "test -d neutron-template || mkdir neutron-template; tar xvf `basename $TEMPLATE_FILE` -C neutron-template"
|
|
}
|
|
|
|
trap exit_error EXIT
|
|
|
|
case "$1" in
|
|
prepare)
|
|
prepare $2 "/etc/neutron"
|
|
;;
|
|
|
|
install)
|
|
install $2 "/etc/neutron"
|
|
;;
|
|
|
|
bootstrap)
|
|
bootstrap $2
|
|
;;
|
|
|
|
*)
|
|
echo "Usage: $0 [prepare|install]"
|
|
exit 1
|
|
|
|
esac
|
|
|
|
trap exit_success EXIT
|