[lib.sh] Reset virtual nodes after MaaS install 13/60513/3
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Thu, 2 Aug 2018 00:59:12 +0000 (02:59 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Fri, 3 Aug 2018 15:41:10 +0000 (17:41 +0200)
For hybrid PODs (e.g. x86_64 jumpserver + control nodes, aarch64
baremetal compute nodes), the virtual nodes rely on MaaS DHCP to be
up when the OS boots, so issue a `virsh reset` accordingly.

Instead of checking for online nodes using `test.ping`, use
`saltutil.sync_all` to also sync Salt state modules to the virtual
nodes (usually handled by baremetal_init state in HA deploys).

JIRA: FUEL-338

Change-Id: If689d057dc4438102c3a7428a97b9638e21bfdc5
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
ci/deploy.sh
mcp/config/states/maas
mcp/scripts/lib.sh

index 10b639e..4017607 100755 (executable)
@@ -313,6 +313,11 @@ else
         wait_for 5 "ssh ${SSH_OPTS} ${SSH_SALT} sudo \
             CI_DEBUG=$CI_DEBUG ERASE_ENV=$ERASE_ENV \
             /root/fuel/mcp/config/states/${state}"
+        if [ "${state}" = 'maas' ]; then
+            # For hybrid PODs (virtual + baremetal nodes), the virtual nodes
+            # should be reset to force a DHCP request from MaaS DHCP
+            reset_vms "${virtual_nodes[@]}"
+        fi
     done
 fi
 
index ec24582..f321b71 100755 (executable)
@@ -101,6 +101,6 @@ salt -C 'mas01*' pillar.item\
   maas:region:admin:password
 
 # Check all baremetal nodes are available
-wait_for 5.0 "(for n in ${bm_nodes}; do salt \${n} test.ping 2>/dev/null || exit; done)"
+wait_for 10.0 "(for n in ${bm_nodes}; do salt \${n} test.ping 2>/dev/null || exit; done)"
 
 wait_for 10.0 "salt -C '* and not cfg01* and not mas01*' saltutil.sync_all"
index c9c1bbd..9c12bff 100644 (file)
@@ -452,6 +452,23 @@ function update_mcpcontrol_network {
     "<host mac='${amac}' name='mas01' ip='${MAAS_IP}'/>" --live --config
 }
 
+function reset_vms {
+  local vnodes=("$@")
+  local cmd_str="ssh ${SSH_OPTS} ${SSH_SALT}"
+
+  # reset non-infrastructure vms, wait for them to come back online
+  for node in "${vnodes[@]}"; do
+    if [[ ! "${node}" =~ (cfg01|mas01) ]]; then
+      virsh reset "${node}"
+    fi
+  done
+  for node in "${vnodes[@]}"; do
+    if [[ ! "${node}" =~ (cfg01|mas01) ]]; then
+      wait_for 20.0 "${cmd_str} sudo salt -C '${node}*' saltutil.sync_all"
+    fi
+  done
+}
+
 function start_vms {
   local vnodes=("$@")