| ... | ... |
@@ -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 |