Fix functions for fuel installer
[doctor.git] / tests / run.sh
index 206f6a4..227c6ea 100755 (executable)
@@ -179,8 +179,7 @@ start_consumer() {
                              nova list | grep ' overcloud-controller-[0-9] ' \
                              | sed -e 's/^.*ctlplane=//' -e 's/ *|\$//'")
         elif is_installer fuel; then
-            CONTROLLER_IPS=$(sshpass -p r00tme ssh 2>/dev/null $ssh_opts root@${INSTALLER_IP} \
-                            "fuel node | grep controller | cut -d '|' -f 5|xargs")
+            get_controller_ips
         fi
 
         die_if_not_set $LINENO CONTROLLER_IPS "Could not get CONTROLLER_IPS."
@@ -222,6 +221,7 @@ wait_for_vm_launch() {
             return 0
         fi
         if [[ "$state" == "ERROR" ]]; then
+            openstack $as_doctor_user server show $VM_NAME
             die $LINENO "vm state is ERROR"
         fi
         count=$(($count+1))
@@ -235,6 +235,7 @@ inject_failure() {
     cat > disable_network.sh << 'END_TXT'
 #!/bin/bash -x
 dev=$(sudo ip a | awk '/ @COMPUTE_IP@\//{print $7}')
+[[ -n "$dev" ]] || dev=$(sudo ip a | awk '/ @COMPUTE_IP@\//{print $5}')
 sleep 1
 sudo ip link set $dev down
 echo "doctor set host down at" $(date "+%s.%N")
@@ -304,6 +305,20 @@ check_host_status() {
     fi
 }
 
+unset_forced_down_hosts() {
+    for host in $(openstack compute service list --service nova-compute \
+                  -f value -c Host -c State | sed -n -e '/down$/s/ *down$//p')
+    do
+        # TODO (r-mibu): make sample inspector use keystone v3 api
+        OS_AUTH_URL=${OS_AUTH_URL/v3/v2.0} \
+        python ./nova_force_down.py $host --unset
+    done
+
+    echo "waiting disabled compute host back to be enabled..."
+    wait_until 'openstack compute service list --service nova-compute
+                -f value -c State | grep -q down' 240 5
+}
+
 cleanup() {
     set +e
     echo "cleanup..."
@@ -311,10 +326,10 @@ cleanup() {
     stop_inspector
     stop_consumer
 
-    echo "waiting disabled compute host back to be enabled..."
-    python ./nova_force_down.py "$COMPUTE_HOST" --unset
-    sleep 240
-    check_host_status "UP"
+    unset_forced_down_hosts
+    # TODO: We need to make sure the target compute host is back to IP
+    #       reachable. wait_ping() will be added by tojuvone .
+    sleep 110
     scp $ssh_opts_cpu "$COMPUTE_USER@$COMPUTE_IP:disable_network.log" .
 
     openstack $as_doctor_user server list | grep -q " $VM_NAME " && openstack $as_doctor_user server delete "$VM_NAME"
@@ -342,6 +357,7 @@ cleanup() {
 # Main process
 
 echo "Note: doctor/tests/run.sh has been executed."
+git log --oneline -1 || true   # ignore even you don't have git installed
 
 trap cleanup EXIT