Browse code

Merge "xenapi: enable user interaction with stack.sh"

Jenkins authored on 2013/12/05 11:30:36
Showing 2 changed files
... ...
@@ -93,13 +93,34 @@ mkdir -p $STAGING_DIR/opt/stack/devstack
93 93
 tar xf /tmp/devstack.tar -C $STAGING_DIR/opt/stack/devstack
94 94
 cd $TOP_DIR
95 95
 
96
-# Run devstack on launch
97
-cat <<EOF >$STAGING_DIR/etc/rc.local
98
-# network restart required for getting the right gateway
99
-/etc/init.d/networking restart
100
-chown -R $STACK_USER /opt/stack
101
-su -c "/opt/stack/run.sh > /opt/stack/run.sh.log" $STACK_USER
102
-exit 0
96
+# Create an upstart job (task) for devstack, which can interact with the console
97
+cat >$STAGING_DIR/etc/init/devstack.conf << EOF
98
+start on stopped rc RUNLEVEL=[2345]
99
+
100
+console output
101
+task
102
+
103
+pre-start script
104
+    rm -f /var/run/devstack.succeeded
105
+end script
106
+
107
+script
108
+    initctl stop hvc0 || true
109
+
110
+    # Read any leftover characters from standard input
111
+    while read -n 1 -s -t 0.1 -r ignored; do
112
+        true
113
+    done
114
+
115
+    clear
116
+
117
+    chown -R $STACK_USER /opt/stack
118
+
119
+    if su -c "/opt/stack/run.sh" $STACK_USER; then
120
+        touch /var/run/devstack.succeeded
121
+    fi
122
+    initctl start hvc0 > /dev/null 2>&1
123
+end script
103 124
 EOF
104 125
 
105 126
 # Configure the hostname
... ...
@@ -138,8 +159,9 @@ fi
138 138
 # Configure run.sh
139 139
 cat <<EOF >$STAGING_DIR/opt/stack/run.sh
140 140
 #!/bin/bash
141
+set -eux
141 142
 cd /opt/stack/devstack
142
-killall screen
143
-VIRT_DRIVER=xenserver FORCE=yes MULTI_HOST=$MULTI_HOST HOST_IP_IFACE=$HOST_IP_IFACE $STACKSH_PARAMS ./stack.sh
143
+./unstack.sh || true
144
+./stack.sh
144 145
 EOF
145 146
 chmod 755 $STAGING_DIR/opt/stack/run.sh
... ...
@@ -367,25 +367,20 @@ COPYENV=${COPYENV:-1}
367 367
 if [ "$WAIT_TILL_LAUNCH" = "1" ]  && [ -e ~/.ssh/id_rsa.pub  ] && [ "$COPYENV" = "1" ]; then
368 368
     set +x
369 369
 
370
-    echo "VM Launched - Waiting for startup script"
371
-    # wait for log to appear
372
-    while ! ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "[ -e run.sh.log ]"; do
370
+    echo "VM Launched - Waiting for devstack to start"
371
+    while ! ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "service devstack status | grep -q running"; do
373 372
         sleep 10
374 373
     done
375
-    echo -n "Running"
376
-    while [ `ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS pgrep -c run.sh` -ge 1 ]
377
-    do
374
+    echo -n "devstack is running"
375
+    while ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "service devstack status | grep -q running"; do
378 376
         sleep 10
379 377
         echo -n "."
380 378
     done
381 379
     echo "done!"
382 380
     set -x
383 381
 
384
-    # output the run.sh.log
385
-    ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS 'cat run.sh.log'
386
-
387
-    # Fail if the expected text is not found
388
-    ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS 'cat run.sh.log' | grep -q 'stack.sh completed in'
382
+    # Fail if devstack did not succeed
383
+    ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS 'test -e /var/run/devstack.succeeded'
389 384
 
390 385
     set +x
391 386
     echo "################################################################################"
... ...
@@ -399,11 +394,12 @@ else
399 399
     echo ""
400 400
     echo "All Finished!"
401 401
     echo "Now, you can monitor the progress of the stack.sh installation by "
402
-    echo "tailing /opt/stack/run.sh.log from within your domU."
402
+    echo "looking at the console of your domU / checking the log files."
403 403
     echo ""
404 404
     echo "ssh into your domU now: 'ssh stack@$OS_VM_MANAGEMENT_ADDRESS' using your password"
405
-    echo "and then do: 'tail -f /opt/stack/run.sh.log'"
405
+    echo "and then do: 'sudo service devstack status' to check if devstack is still running."
406
+    echo "Check that /var/run/devstack.succeeded exists"
406 407
     echo ""
407
-    echo "When the script completes, you can then visit the OpenStack Dashboard"
408
+    echo "When devstack completes, you can visit the OpenStack Dashboard"
408 409
     echo "at http://$OS_VM_SERVICES_ADDRESS, and contact other services at the usual ports."
409 410
 fi