fuel-octane/octane/bin/upgrade-neutron.sh

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