| ... | ... |
@@ -65,3 +65,31 @@ function get_local_sr {
|
| 65 | 65 |
function get_local_sr_path {
|
| 66 | 66 |
echo "/var/run/sr-mount/$(get_local_sr)" |
| 67 | 67 |
} |
| 68 |
+ |
|
| 69 |
+function find_ip_by_name() {
|
|
| 70 |
+ local guest_name="$1" |
|
| 71 |
+ local interface="$2" |
|
| 72 |
+ |
|
| 73 |
+ local period=10 |
|
| 74 |
+ local max_tries=10 |
|
| 75 |
+ local i=0 |
|
| 76 |
+ |
|
| 77 |
+ while true; do |
|
| 78 |
+ if [ $i -ge $max_tries ]; then |
|
| 79 |
+ echo "Timeout: ip address for interface $interface of $guest_name" |
|
| 80 |
+ exit 11 |
|
| 81 |
+ fi |
|
| 82 |
+ |
|
| 83 |
+ ipaddress=$(xe vm-list --minimal \ |
|
| 84 |
+ name-label=$guest_name \ |
|
| 85 |
+ params=networks | sed -ne "s,^.*${interface}/ip: \([0-9.]*\).*\$,\1,p")
|
|
| 86 |
+ |
|
| 87 |
+ if [ -z "$ipaddress" ]; then |
|
| 88 |
+ sleep $period |
|
| 89 |
+ ((i++)) |
|
| 90 |
+ else |
|
| 91 |
+ echo $ipaddress |
|
| 92 |
+ break |
|
| 93 |
+ fi |
|
| 94 |
+ done |
|
| 95 |
+} |
| ... | ... |
@@ -311,53 +311,26 @@ xe vm-snapshot vm="$GUEST_NAME" new-name-label="$SNAME_FIRST_BOOT" |
| 311 | 311 |
# |
| 312 | 312 |
xe vm-start vm="$GUEST_NAME" |
| 313 | 313 |
|
| 314 |
- |
|
| 315 |
-# |
|
| 316 |
-# Find IP and optionally wait for stack.sh to complete |
|
| 317 |
-# |
|
| 318 |
- |
|
| 319 |
-function find_ip_by_name() {
|
|
| 320 |
- local guest_name="$1" |
|
| 321 |
- local interface="$2" |
|
| 322 |
- local period=10 |
|
| 323 |
- max_tries=10 |
|
| 324 |
- i=0 |
|
| 325 |
- while true |
|
| 326 |
- do |
|
| 327 |
- if [ $i -ge $max_tries ]; then |
|
| 328 |
- echo "Timed out waiting for devstack ip address" |
|
| 329 |
- exit 11 |
|
| 330 |
- fi |
|
| 331 |
- |
|
| 332 |
- devstackip=$(xe vm-list --minimal \ |
|
| 333 |
- name-label=$guest_name \ |
|
| 334 |
- params=networks | sed -ne "s,^.*${interface}/ip: \([0-9.]*\).*\$,\1,p")
|
|
| 335 |
- if [ -z "$devstackip" ] |
|
| 336 |
- then |
|
| 337 |
- sleep $period |
|
| 338 |
- ((i++)) |
|
| 339 |
- else |
|
| 340 |
- echo $devstackip |
|
| 341 |
- break |
|
| 342 |
- fi |
|
| 343 |
- done |
|
| 344 |
-} |
|
| 345 |
- |
|
| 346 | 314 |
function ssh_no_check() {
|
| 347 | 315 |
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "$@" |
| 348 | 316 |
} |
| 349 | 317 |
|
| 350 |
-# Note the XenServer needs to be on the chosen |
|
| 351 |
-# network, so XenServer can access Glance API |
|
| 318 |
+# Get hold of the Management IP of OpenStack VM |
|
| 319 |
+OS_VM_MANAGEMENT_ADDRESS=$MGT_IP |
|
| 320 |
+if [ $OS_VM_MANAGEMENT_ADDRESS == "dhcp" ]; then |
|
| 321 |
+ OS_VM_MANAGEMENT_ADDRESS=$(find_ip_by_name $GUEST_NAME 2) |
|
| 322 |
+fi |
|
| 323 |
+ |
|
| 324 |
+# Get hold of the Service IP of OpenStack VM |
|
| 352 | 325 |
if [ $HOST_IP_IFACE == "eth2" ]; then |
| 353 |
- DOMU_IP=$MGT_IP |
|
| 326 |
+ OS_VM_SERVICES_ADDRESS=$MGT_IP |
|
| 354 | 327 |
if [ $MGT_IP == "dhcp" ]; then |
| 355 |
- DOMU_IP=$(find_ip_by_name $GUEST_NAME 2) |
|
| 328 |
+ OS_VM_SERVICES_ADDRESS=$(find_ip_by_name $GUEST_NAME 2) |
|
| 356 | 329 |
fi |
| 357 | 330 |
else |
| 358 |
- DOMU_IP=$PUB_IP |
|
| 331 |
+ OS_VM_SERVICES_ADDRESS=$PUB_IP |
|
| 359 | 332 |
if [ $PUB_IP == "dhcp" ]; then |
| 360 |
- DOMU_IP=$(find_ip_by_name $GUEST_NAME 3) |
|
| 333 |
+ OS_VM_SERVICES_ADDRESS=$(find_ip_by_name $GUEST_NAME 3) |
|
| 361 | 334 |
fi |
| 362 | 335 |
fi |
| 363 | 336 |
|
| ... | ... |
@@ -369,11 +342,11 @@ if [ "$WAIT_TILL_LAUNCH" = "1" ] && [ -e ~/.ssh/id_rsa.pub ] && [ "$COPYENV" = |
| 369 | 369 |
|
| 370 | 370 |
echo "VM Launched - Waiting for startup script" |
| 371 | 371 |
# wait for log to appear |
| 372 |
- while ! ssh_no_check -q stack@$DOMU_IP "[ -e run.sh.log ]"; do |
|
| 372 |
+ while ! ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS "[ -e run.sh.log ]"; do |
|
| 373 | 373 |
sleep 10 |
| 374 | 374 |
done |
| 375 | 375 |
echo -n "Running" |
| 376 |
- while [ `ssh_no_check -q stack@$DOMU_IP pgrep -c run.sh` -ge 1 ] |
|
| 376 |
+ while [ `ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS pgrep -c run.sh` -ge 1 ] |
|
| 377 | 377 |
do |
| 378 | 378 |
sleep 10 |
| 379 | 379 |
echo -n "." |
| ... | ... |
@@ -382,17 +355,17 @@ if [ "$WAIT_TILL_LAUNCH" = "1" ] && [ -e ~/.ssh/id_rsa.pub ] && [ "$COPYENV" = |
| 382 | 382 |
set -x |
| 383 | 383 |
|
| 384 | 384 |
# output the run.sh.log |
| 385 |
- ssh_no_check -q stack@$DOMU_IP 'cat run.sh.log' |
|
| 385 |
+ ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS 'cat run.sh.log' |
|
| 386 | 386 |
|
| 387 | 387 |
# Fail if the expected text is not found |
| 388 |
- ssh_no_check -q stack@$DOMU_IP 'cat run.sh.log' | grep -q 'stack.sh completed in' |
|
| 388 |
+ ssh_no_check -q stack@$OS_VM_MANAGEMENT_ADDRESS 'cat run.sh.log' | grep -q 'stack.sh completed in' |
|
| 389 | 389 |
|
| 390 | 390 |
set +x |
| 391 | 391 |
echo "################################################################################" |
| 392 | 392 |
echo "" |
| 393 | 393 |
echo "All Finished!" |
| 394 | 394 |
echo "You can visit the OpenStack Dashboard" |
| 395 |
- echo "at http://$DOMU_IP, and contact other services at the usual ports." |
|
| 395 |
+ echo "at http://$OS_VM_SERVICES_ADDRESS, and contact other services at the usual ports." |
|
| 396 | 396 |
else |
| 397 | 397 |
set +x |
| 398 | 398 |
echo "################################################################################" |
| ... | ... |
@@ -401,9 +374,9 @@ else |
| 401 | 401 |
echo "Now, you can monitor the progress of the stack.sh installation by " |
| 402 | 402 |
echo "tailing /opt/stack/run.sh.log from within your domU." |
| 403 | 403 |
echo "" |
| 404 |
- echo "ssh into your domU now: 'ssh stack@$DOMU_IP' using your password" |
|
| 404 |
+ echo "ssh into your domU now: 'ssh stack@$OS_VM_MANAGEMENT_ADDRESS' using your password" |
|
| 405 | 405 |
echo "and then do: 'tail -f /opt/stack/run.sh.log'" |
| 406 | 406 |
echo "" |
| 407 | 407 |
echo "When the script completes, you can then visit the OpenStack Dashboard" |
| 408 |
- echo "at http://$DOMU_IP, and contact other services at the usual ports." |
|
| 408 |
+ echo "at http://$OS_VM_SERVICES_ADDRESS, and contact other services at the usual ports." |
|
| 409 | 409 |
fi |