[baremetal] maas state: Wait for all nodes online 95/45695/1
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Thu, 19 Oct 2017 01:14:14 +0000 (03:14 +0200)
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>
Thu, 19 Oct 2017 01:16:22 +0000 (01:16 +0000)
After MaaS reports baremetal provisioning finished successfully,
check that all nodes are online before attempting a `sync_all`.

Change-Id: I6ba4b3e4ba5b5258ace4da8c39e0fc77354885e3
Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
(cherry picked from commit b9918f1f8df52c52cd2ab76eec3b540b37789e55)

mcp/config/states/maas

index a6bac89..2a0f25b 100755 (executable)
@@ -78,4 +78,17 @@ salt -C 'mas01*' pillar.item\
   maas:region:admin:username \
   maas:region:admin:password
 
+bm_nodes=$(salt --out yaml 'mas01*' pillar.get maas:region:machines | \
+           awk '/^\s+\w+[[:digit:]]+:$/ {gsub(/:$/, "*"); print $1}')
+
+# Check all baremetal nodes are available
+rc=1
+while [ $rc -ne 0 ]; do
+  rc=0
+  for node in $bm_nodes; do
+    salt "$node" test.ping 2>/dev/null || { rc=$?; break; };
+  done
+  sleep 5
+done
+
 wait_for 10 "salt -C '* and not cfg01* and not mas01*' saltutil.sync_all"