From aaa0dbb2e7aab9a1b8ebeb2cc6c3d373a0f81d5c Mon Sep 17 00:00:00 2001 From: "Derrick J. Wippler" Date: Tue, 21 Feb 2012 09:53:53 -0600 Subject: [PATCH] Restart openstack services after running stack.sh * Added screen_rc function in stack.sh to save started services to stack-screenrc file * Added rejoin-stack.sh to rejoin the current screen session or start a new session Change-Id: I381a7832bc8a107bfbd51c5ecfbd2e9134cf0a0a blueprint: restart-services --- rejoin-stack.sh | 18 ++++++++++++++++++ stack.sh | 23 ++++++++++++++++++++++- 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100755 rejoin-stack.sh diff --git a/rejoin-stack.sh b/rejoin-stack.sh new file mode 100755 index 0000000000..a82c73cb3b --- /dev/null +++ b/rejoin-stack.sh @@ -0,0 +1,18 @@ +#! /usr/bin/env bash + +# This script rejoins an existing screen, or re-creates a +# screen session from a previous run of stack.sh. + +TOP_DIR=`dirname $0` + +# if screenrc exists, run screen +if [[ -e $TOP_DIR/stack-screenrc ]]; then + if screen -ls | egrep -q "[0-9].stack"; then + echo "Attaching to already started screen session.." + exec screen -r stack + fi + exec screen -c $TOP_DIR/stack-screenrc +fi + +echo "Couldn't find $TOP_DIR/stack-screenrc file; have you run stack.sh yet?" +exit 1 diff --git a/stack.sh b/stack.sh index 8e717604fb..e67520ded9 100755 --- a/stack.sh +++ b/stack.sh @@ -1249,10 +1249,31 @@ fi # so send the start command by forcing text into the window. # Only run the services specified in ``ENABLED_SERVICES`` -# our screen helper to launch a service in a hidden named screen +# Our screenrc file builder +function screen_rc { + SCREENRC=$TOP_DIR/stack-screenrc + if [[ ! -e $SCREENRC ]]; then + # Name the screen session + echo "sessionname stack" > $SCREENRC + # Set a reasonable statusbar + echo 'hardstatus alwayslastline "%-Lw%{= BW}%50>%n%f* %t%{-}%+Lw%< %= %H"' >> $SCREENRC + echo "screen -t stack bash" >> $SCREENRC + fi + # If this service doesn't already exist in the screenrc file + if ! grep $1 $SCREENRC 2>&1 > /dev/null; then + NL=`echo -ne '\015'` + echo "screen -t $1 bash" >> $SCREENRC + echo "stuff \"$2$NL\"" >> $SCREENRC + fi +} + +# Our screen helper to launch a service in a hidden named screen function screen_it { NL=`echo -ne '\015'` if is_service_enabled $1; then + # Append the service to the screen rc file + screen_rc "$1" "$2" + screen -S stack -X screen -t $1 # sleep to allow bash to be ready to be send the command - we are # creating a new window in screen and then sends characters, so if