... | ... |
@@ -119,9 +119,7 @@ script |
119 | 119 |
|
120 | 120 |
chown -R $STACK_USER /opt/stack |
121 | 121 |
|
122 |
- if su -c "/opt/stack/run.sh" $STACK_USER; then |
|
123 |
- touch /var/run/devstack.succeeded |
|
124 |
- fi |
|
122 |
+ su -c "/opt/stack/run.sh" $STACK_USER |
|
125 | 123 |
|
126 | 124 |
# Update /etc/issue |
127 | 125 |
{ |
... | ... |
@@ -177,8 +175,19 @@ fi |
177 | 177 |
cat <<EOF >$STAGING_DIR/opt/stack/run.sh |
178 | 178 |
#!/bin/bash |
179 | 179 |
set -eux |
180 |
-cd /opt/stack/devstack |
|
181 |
-./unstack.sh || true |
|
182 |
-./stack.sh |
|
180 |
+( |
|
181 |
+ flock -n 9 || exit 1 |
|
182 |
+ |
|
183 |
+ [ -e /opt/stack/runsh.succeeded ] && rm /opt/stack/runsh.succeeded |
|
184 |
+ echo \$\$ >> /opt/stack/run_sh.pid |
|
185 |
+ |
|
186 |
+ cd /opt/stack/devstack |
|
187 |
+ ./unstack.sh || true |
|
188 |
+ ./stack.sh |
|
189 |
+ |
|
190 |
+ # Got to the end - success |
|
191 |
+ touch /opt/stack/runsh.succeeded |
|
192 |
+ rm /opt/stack/run_sh.pid |
|
193 |
+) 9> /opt/stack/.runsh_lock |
|
183 | 194 |
EOF |
184 | 195 |
chmod 755 $STAGING_DIR/opt/stack/run.sh |
... | ... |
@@ -365,8 +365,8 @@ COPYENV=${COPYENV:-1} |
365 | 365 |
if [ "$WAIT_TILL_LAUNCH" = "1" ] && [ -e ~/.ssh/id_rsa.pub ] && [ "$COPYENV" = "1" ]; then |
366 | 366 |
set +x |
367 | 367 |
|
368 |
- echo "VM Launched - Waiting for devstack to start" |
|
369 |
- while ! ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "service devstack status | grep -q running"; do |
|
368 |
+ echo "VM Launched - Waiting for run.sh" |
|
369 |
+ while ! ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "test -e /opt/stack/run_sh.pid"; do |
|
370 | 370 |
sleep 10 |
371 | 371 |
done |
372 | 372 |
echo -n "devstack service is running, waiting for stack.sh to start logging..." |
... | ... |
@@ -376,14 +376,11 @@ if [ "$WAIT_TILL_LAUNCH" = "1" ] && [ -e ~/.ssh/id_rsa.pub ] && [ "$COPYENV" = |
376 | 376 |
done |
377 | 377 |
set -x |
378 | 378 |
|
379 |
- # Watch devstack's output (which doesn't start until stack.sh is running, |
|
380 |
- # but wait for run.sh (which starts stack.sh) to exit as that is what |
|
381 |
- # hopefully writes the succeeded cookie. |
|
382 |
- pid=`ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS pgrep run.sh` |
|
379 |
+ pid=`ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "cat /opt/stack/run_sh.pid"` |
|
383 | 380 |
ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "tail --pid $pid -n +1 -f /tmp/devstack/log/stack.log" |
384 | 381 |
|
385 | 382 |
# Fail if devstack did not succeed |
386 |
- ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS 'test -e /var/run/devstack.succeeded' |
|
383 |
+ ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS 'test -e /opt/stack/runsh.succeeded' |
|
387 | 384 |
|
388 | 385 |
set +x |
389 | 386 |
echo "################################################################################" |
... | ... |
@@ -401,7 +398,7 @@ else |
401 | 401 |
echo "" |
402 | 402 |
echo "ssh into your domU now: 'ssh stack@$OS_VM_MANAGEMENT_ADDRESS' using your password" |
403 | 403 |
echo "and then do: 'sudo service devstack status' to check if devstack is still running." |
404 |
- echo "Check that /var/run/devstack.succeeded exists" |
|
404 |
+ echo "Check that /opt/stack/runsh.succeeded exists" |
|
405 | 405 |
echo "" |
406 | 406 |
echo "When devstack completes, you can visit the OpenStack Dashboard" |
407 | 407 |
echo "at http://$OS_VM_SERVICES_ADDRESS, and contact other services at the usual ports." |