From 089585ad5370109d4c2a476b94b0017153d7713d Mon Sep 17 00:00:00 2001 From: Alexandru Avadanii Date: Sat, 14 Oct 2017 19:18:51 +0200 Subject: Drop infinite loops in favor of finite wait_for While at it, fix some shellcheck warnings, and s/fgrep/grep -F/g. Change-Id: I093b7b4c196731b1ecc0c27a4111955b2e412762 Signed-off-by: Alexandru Avadanii --- mcp/config/states/dpdk | 6 +++++- mcp/config/states/maas | 2 +- mcp/config/states/openstack_ha | 5 ++++- mcp/config/states/virtual_control_plane | 8 ++++---- mcp/salt-formulas/opendaylight/client.sls | 2 +- mcp/scripts/lib.sh | 5 ++--- mcp/scripts/salt.sh | 2 +- 7 files changed, 18 insertions(+), 12 deletions(-) diff --git a/mcp/config/states/dpdk b/mcp/config/states/dpdk index 9eba5c083..7cee70a88 100755 --- a/mcp/config/states/dpdk +++ b/mcp/config/states/dpdk @@ -1,8 +1,12 @@ #!/bin/bash set -x +# shellcheck disable=SC1090 +source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" + salt -I 'nova:compute' system.reboot -while true; do salt -I 'nova:compute' test.ping | grep -Fq 'Not connected' || break; done +wait_for 90 "! salt -I 'nova:compute' test.ping | " \ + "tee /dev/stderr | grep -Fq 'Not connected'" salt -I 'nova:compute' state.sls linux.network # switch to UCA repos since fuel-infra packages have bugs diff --git a/mcp/config/states/maas b/mcp/config/states/maas index df11d5b13..232f98c88 100755 --- a/mcp/config/states/maas +++ b/mcp/config/states/maas @@ -1,7 +1,7 @@ #!/bin/bash -# shellcheck disable=SC1090 set -x +# shellcheck disable=SC1090 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" # Wait for MaaS commissioning/deploy to finish, retry on failure diff --git a/mcp/config/states/openstack_ha b/mcp/config/states/openstack_ha index e11135f43..c4c513da1 100755 --- a/mcp/config/states/openstack_ha +++ b/mcp/config/states/openstack_ha @@ -1,6 +1,9 @@ #!/bin/bash set -x +# shellcheck disable=SC1090 +source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" + salt -I 'keepalived:cluster' state.sls keepalived -b 1 salt -I 'keepalived:cluster' pillar.get keepalived:cluster:instance:VIP:address @@ -43,7 +46,7 @@ salt -I 'neutron:gateway' state.sls neutron.gateway salt -I 'nova:compute' state.sls nova salt -I 'mongodb:server' state.sls mongodb -while true; do sleep 5; salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin' && break; done +wait_for 90 "salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin'" salt -C 'I@mongodb:server and *01*' cmd.run 'mongo localhost:27017/admin --eval "rs.initiate()"' salt -C 'I@mongodb:server and *01*' state.sls mongodb diff --git a/mcp/config/states/virtual_control_plane b/mcp/config/states/virtual_control_plane index 69f26c34e..645009be8 100755 --- a/mcp/config/states/virtual_control_plane +++ b/mcp/config/states/virtual_control_plane @@ -1,14 +1,14 @@ #!/bin/bash -# shellcheck disable=SC1090 set -x +# shellcheck disable=SC1090 source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/lib.sh" # KVM, compute node prereqs (libvirt first), VCP deployment salt -C 'kvm*' pkg.install bridge-utils salt -C 'kvm*' state.apply linux.network salt -C 'kvm*' system.reboot -wait_for 90 "! salt 'kvm*' test.ping | tee /dev/stderr | fgrep -q 'Not connected'" +wait_for 90 "! salt 'kvm*' test.ping | tee /dev/stderr | grep -Fq 'Not connected'" salt -C '* and not cfg01* and not mas01*' state.apply linux,ntp @@ -17,7 +17,7 @@ salt -C 'kvm*' state.sls libvirt salt -C '* and not cfg01* and not mas01*' state.apply salt salt -C 'kvm*' saltutil.sync_all wait_for 10 "! salt -C 'kvm*' state.sls salt.control | " \ - "tee /dev/stderr | fgrep -q 'Not connected'" + "tee /dev/stderr | grep -Fq 'Not connected'" vcp_nodes=$(salt --out yaml 'kvm01*' pillar.get salt:control:cluster:internal:node | \ awk '/\s+\w+:$/ {gsub(/:$/, "*"); print $1}') @@ -35,7 +35,7 @@ done wait_for 10 "salt -C '* and not cfg01* and not mas01*' saltutil.sync_all" wait_for 10 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' state.apply salt" wait_for 10 "! salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' state.apply linux,ntp | " \ - "tee /dev/stderr | fgrep -q 'Not connected'" + "tee /dev/stderr | grep -Fq 'Not connected'" wait_for 10 "salt -C 'E@^(?!cfg01|mas01|kvm|cmp00).*' ssh.set_auth_key ${SUDO_USER} \ $(awk 'NR==1{print $2}' "$(eval echo "~${SUDO_USER}/.ssh/authorized_keys")")" diff --git a/mcp/salt-formulas/opendaylight/client.sls b/mcp/salt-formulas/opendaylight/client.sls index 2a56d49dd..dbffc5709 100644 --- a/mcp/salt-formulas/opendaylight/client.sls +++ b/mcp/salt-formulas/opendaylight/client.sls @@ -9,7 +9,7 @@ opendaylight_client_packages: ovs_set_manager: cmd.run: - name: "ovs-vsctl set-manager {{ client.ovsdb_server_iface }} {{ client.ovsdb_odl_iface }}" - - unless: "ovs-vsctl get-manager | fgrep -x {{ client.ovsdb_odl_iface }}" + - unless: "ovs-vsctl get-manager | grep -Fx {{ client.ovsdb_odl_iface }}" ovs_set_tunnel_endpoint: cmd.run: diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh index 748c6dde1..3a6deec21 100644 --- a/mcp/scripts/lib.sh +++ b/mcp/scripts/lib.sh @@ -144,13 +144,13 @@ function start_vms { function check_connection { local total_attempts=60 local sleep_time=5 - local attempt=1 set +e echo '[INFO] Attempting to get into Salt master ...' # wait until ssh on Salt master is available - while ((attempt <= total_attempts)); do + # shellcheck disable=SC2034 + for attempt in $(seq "${total_attempts}"); do # shellcheck disable=SC2086 ssh ${SSH_OPTS} "ubuntu@${SALT_MASTER}" uptime case $? in @@ -158,7 +158,6 @@ function check_connection { *) echo "${attempt}/${total_attempts}> ssh server ain't ready yet, waiting for ${sleep_time} seconds ..." ;; esac sleep $sleep_time - ((attempt+=1)) done set -e } diff --git a/mcp/scripts/salt.sh b/mcp/scripts/salt.sh index 73190e315..df0ef70fb 100755 --- a/mcp/scripts/salt.sh +++ b/mcp/scripts/salt.sh @@ -59,7 +59,7 @@ ssh ${SSH_OPTS} "${SSH_SALT}" bash -s -e << SALT_INSTALL_END salt-call state.apply salt salt '*' saltutil.sync_all - salt '*' state.apply salt | fgrep -q 'No response' && salt '*' state.apply salt + salt '*' state.apply salt | grep -Fq 'No response' && salt '*' state.apply salt salt -C 'I@salt:master' state.sls linux salt -C '* and not cfg01*' state.sls linux -- cgit 1.2.3-korg