| ... | ... |
@@ -407,6 +407,20 @@ EOF |
| 407 | 407 |
return $rval |
| 408 | 408 |
} |
| 409 | 409 |
|
| 410 |
+function wait_for_compute {
|
|
| 411 |
+ local timeout=$1 |
|
| 412 |
+ time_start "wait_for_service" |
|
| 413 |
+ timeout $timeout bash -x <<EOF || rval=$? |
|
| 414 |
+ ID="" |
|
| 415 |
+ while [[ "\$ID" == "" ]]; do |
|
| 416 |
+ sleep 1 |
|
| 417 |
+ ID=\$(openstack --os-cloud devstack-admin --os-region "$REGION_NAME" compute service list --host `hostname` --service nova-compute -c ID -f value) |
|
| 418 |
+ done |
|
| 419 |
+EOF |
|
| 420 |
+ time_stop "wait_for_service" |
|
| 421 |
+ return $rval |
|
| 422 |
+} |
|
| 423 |
+ |
|
| 410 | 424 |
|
| 411 | 425 |
# ping check |
| 412 | 426 |
# Uses globals ``ENABLED_SERVICES``, ``TOP_DIR``, ``MULTI_HOST``, ``PRIVATE_NETWORK`` |
| ... | ... |
@@ -854,6 +854,13 @@ function start_nova_compute {
|
| 854 | 854 |
fi |
| 855 | 855 |
run_process n-cpu "$NOVA_BIN_DIR/nova-compute --config-file $NOVA_CPU_CONF" |
| 856 | 856 |
fi |
| 857 |
+ # NOTE(sdague): with cells v2 all the compute services must be up |
|
| 858 |
+ # and checked into the database before discover_hosts is run. This |
|
| 859 |
+ # happens in all in one installs by accident, because > 30 seconds |
|
| 860 |
+ # happen between here and the script ending. However, in multinode |
|
| 861 |
+ # tests this can very often not be the case. So ensure that the |
|
| 862 |
+ # compute is up before we move on. |
|
| 863 |
+ wait_for_compute 60 |
|
| 857 | 864 |
|
| 858 | 865 |
export PATH=$old_path |
| 859 | 866 |
} |