diff options
author | Konrad Bańka <k.banka@samsung.com> | 2019-07-02 09:07:49 +0200 |
---|---|---|
committer | Konrad Bańka <k.banka@samsung.com> | 2019-07-16 14:42:31 +0200 |
commit | 5abbe720732d00045e1646aef72606068425a918 (patch) | |
tree | 8a38c9cbe94f67129f11bafc07ece9d258fbbec0 /kud/tests | |
parent | ba4a7991e10172a31cec65ae5c9ad11cbb1b806b (diff) |
Improve provisioning central IP address for ovn tests
Function responsible for providing central ovn address has been
corrected to utilize already configured address instead of
checking it each time. Error reporting within the same function
has been also corrected and improved as well as iproute package
became used for address determining instead of net-tools' ifconfig
Issue-ID: MULTICLOUD-686
Signed-off-by: Konrad Bańka <k.banka@samsung.com>
Change-Id: I156297098b7919471df711f049f0d9439bd81420
Diffstat (limited to 'kud/tests')
-rwxr-xr-x | kud/tests/_functions.sh | 34 |
1 files changed, 29 insertions, 5 deletions
diff --git a/kud/tests/_functions.sh b/kud/tests/_functions.sh index 483aed5c..86636ccd 100755 --- a/kud/tests/_functions.sh +++ b/kud/tests/_functions.sh @@ -25,12 +25,36 @@ function print_msg { } function get_ovn_central_address { - ansible_ifconfig=$(ansible ovn-central[0] -i ${FUNCTIONS_DIR}/../hosting_providers/vagrant/inventory/hosts.ini -m shell -a "ifconfig ${OVN_CENTRAL_INTERFACE} |grep \"inet addr\" |awk '{print \$2}' |awk -F: '{print \$2}'") - if [[ $ansible_ifconfig != *CHANGED* ]]; then - echo "Fail to get the OVN central IP address from ${OVN_CENTRAL_INTERFACE} nic" - exit + #Reuse OVN_CENTRAL_ADDRESS if available (bypassable by --force flag) + if [[ "${1:-}" != "--force" ]] && [[ -n "${OVN_CENTRAL_ADDRESS:-}" ]]; then + echo "${OVN_CENTRAL_ADDRESS}" + return 0 + fi + + local remote_command="ip address show dev $OVN_CENTRAL_INTERFACE primary" + declare -a ansible_command=(ansible ovn-central[0] -i \ + "${FUNCTIONS_DIR}/../hosting_providers/vagrant/inventory/hosts.ini") + declare -a filter=(awk -F '[ \t/]+' \ + 'BEGIN {r=1} {for (i=1; i<=NF; i++) if ($i == "inet") {print $(i+1); r=0}} END {exit r}') + local result + + #Determine OVN_CENTRAL_INTERFACE address + if ! result="$("${ansible_command[@]}" -a "${remote_command}")"; then + echo "Ansible error for remote host ovn-central[0]" >&2 + return 1 + else + if [[ "${result}" != *CHANGED* ]]; then + echo "Failed to execute command on remote host ovn-central[0]" >&2 + return 2 + else + if ! result="$("${filter[@]}" <<< "${result}")"; then + echo "Failed to retrieve interface address from command output" >&2 + return 3 + else + echo "${result}:6641" + fi + fi fi - echo "$(echo ${ansible_ifconfig#*>>} | tr '\n' ':')6641" } function call_api { |