#!/usr/bin/env bash # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. set -xe export TIMEOUT=${TIMEOUT:-3600} export AIRSHIP_HOSTCONFIG=${AIRSHIP_HOSTCONFIG:-$PWD} check_status(){ hostconfig=$1 end=$(($(date +%s) + $TIMEOUT)) while true; do # Getting the failed and unreachable nodes status failures=$(kubectl get hostconfig $hostconfig -o jsonpath='{.status.ansibleSummary.failures}') unreachable=$(kubectl get hostconfig $hostconfig -o jsonpath='{.status.ansibleSummary.unreachable}') if [[ $failures == "map[]" && $unreachable == "map[]" ]]; then kubectl get hostconfig $hostconfig -o json hosts=$2 ok=$(kubectl get hostconfig $hostconfig -o json | jq '.status.ansibleSummary.ok | keys') hostNames=$(kubectl get hostconfig $hostconfig -o json | jq '.status.hostConfigStatus | keys') ok_array=${ok[@]} hostNames_array=${hostNames[@]} # Checking if all hosts has executed if [ "$hosts" == "$ok_array" ] && [ "$hosts" == "$hostNames_array" ]; then if $3; then # Checking if the execution has happened in sequence # based on the date command executed on the nodes at the time of execution # Please refer to the demo_examples sample CRs for the configuration loop=$4 shift 4 pre_hosts_date="" for ((i=0;i