Browse code

Merge "Add option to make screen starting more robust."

Jenkins authored on 2013/02/13 11:03:58
Showing 2 changed files
... ...
@@ -738,26 +738,31 @@ function restart_service() {
738 738
 # Helper to launch a service in a named screen
739 739
 # screen_it service "command-line"
740 740
 function screen_it {
741
-    NL=`echo -ne '\015'`
742 741
     SCREEN_NAME=${SCREEN_NAME:-stack}
743 742
     SERVICE_DIR=${SERVICE_DIR:-${DEST}/status}
743
+    SCREEN_DEV=`trueorfalse True $SCREEN_DEV`
744 744
 
745 745
     if is_service_enabled $1; then
746 746
         # Append the service to the screen rc file
747 747
         screen_rc "$1" "$2"
748 748
 
749 749
         screen -S $SCREEN_NAME -X screen -t $1
750
-        # sleep to allow bash to be ready to be send the command - we are
751
-        # creating a new window in screen and then sends characters, so if
752
-        # bash isn't running by the time we send the command, nothing happens
753
-        sleep 1.5
754
-
755
-        if [[ -n ${SCREEN_LOGDIR} ]]; then
756
-            screen -S $SCREEN_NAME -p $1 -X logfile ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log
757
-            screen -S $SCREEN_NAME -p $1 -X log on
758
-            ln -sf ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log ${SCREEN_LOGDIR}/screen-${1}.log
750
+        if [[ "$SCREEN_DEV" = "True" ]]; then
751
+            # sleep to allow bash to be ready to be send the command - we are
752
+            # creating a new window in screen and then sends characters, so if
753
+            # bash isn't running by the time we send the command, nothing happens
754
+            sleep 1.5
755
+
756
+            if [[ -n ${SCREEN_LOGDIR} ]]; then
757
+                screen -S $SCREEN_NAME -p $1 -X logfile ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log
758
+                screen -S $SCREEN_NAME -p $1 -X log on
759
+                ln -sf ${SCREEN_LOGDIR}/screen-${1}.${CURRENT_LOG_TIME}.log ${SCREEN_LOGDIR}/screen-${1}.log
760
+            fi
761
+            NL=`echo -ne '\015'`
762
+            screen -S $SCREEN_NAME -p $1 -X stuff "$2 || touch \"$SERVICE_DIR/$SCREEN_NAME/$1.failure\"$NL"
763
+        else
764
+            screen -S $SCREEN_NAME -p $1 -X exec /bin/bash -c "$2 || touch \"$SERVICE_DIR/$SCREEN_NAME/$1.failure\""
759 765
         fi
760
-        screen -S $SCREEN_NAME -p $1 -X stuff "$2 || touch \"$SERVICE_DIR/$SCREEN_NAME/$1.failure\"$NL"
761 766
     fi
762 767
 }
763 768
 
... ...
@@ -29,6 +29,13 @@ ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-net,n-cond,cinder,c-s
29 29
 # Set the default Nova APIs to enable
30 30
 NOVA_ENABLED_APIS=ec2,osapi_compute,metadata
31 31
 
32
+# Whether to use 'dev mode' for screen windows. Dev mode works by
33
+# stuffing text into the screen windows so that a developer can use
34
+# ctrl-c, up-arrow, enter to restart the service. Starting services
35
+# this way is slightly unreliable, and a bit slower, so this can
36
+# be disabled for automated testing by setting this value to false.
37
+SCREEN_DEV=True
38
+
32 39
 # Repositories
33 40
 # ------------
34 41