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