diff options
author | Markus Kullberg <markus.kullberg@nokia.com> | 2016-07-26 09:37:43 +0300 |
---|---|---|
committer | Markus Kullberg <markus.kullberg@nokia.com> | 2016-08-02 10:18:25 +0300 |
commit | b6f3736872b6c06a345da2f16e82d8688c469dd7 (patch) | |
tree | 989dd4f96981b403d2b78bdb4fdaf838d091be94 | |
parent | 38e8b2674338dd9ffc22b6cb4e222c19f80a39ca (diff) |
Adds overcloud external connectivity test and adds NAT to instack VM if
needed
JIRA: APEX-198
Adds support for baremetal deployments where external connectivity is only
provided via the jumphost. The connectivity test is done by pinging an
external IP (8.8.8.8 by default) for each node. If ping fails for any of
the nodes then NAT is added.
Change-Id: I8d59beb03c3b2998deaec5dc7536fa7a5b1f7718
Signed-off-by: Markus Kullberg <markus.kullberg@nokia.com>
-rw-r--r-- | lib/common-functions.sh | 13 | ||||
-rwxr-xr-x | lib/post-install-functions.sh | 3 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lib/common-functions.sh b/lib/common-functions.sh index 391d9405..6941093c 100644 --- a/lib/common-functions.sh +++ b/lib/common-functions.sh @@ -293,3 +293,16 @@ function verify_internet { return 1 fi } + +##tests if overcloud nodes have external connectivity +#params:none +function test_overcloud_connectivity { + for node in $(undercloud_connect stack ". stackrc && nova list" | grep -Eo "controller-[0-9]+|compute-[0-9]+" | tr -d -) ; do + if ! overcloud_connect $node "ping -c 2 $ping_site > /dev/null"; then + echo "${blue}Node ${node} was unable to ping site ${ping_site}${reset}" + return 1 + fi + done + echo "${blue}Overcloud external connectivity OK${reset}" +} + diff --git a/lib/post-install-functions.sh b/lib/post-install-functions.sh index bf0b4446..a7499feb 100755 --- a/lib/post-install-functions.sh +++ b/lib/post-install-functions.sh @@ -123,7 +123,8 @@ fi EOI # for virtual, we NAT public network through Undercloud - if [ "$virtual" == "TRUE" ] && [ "$public_network_ipv6" != "True" ]; then + # same goes for baremetal if only jumphost has external connectivity + if [ "$virtual" == "TRUE" ] || ! test_overcloud_connectivity && [ "$public_network_ipv6" != "True" ]; then if ! configure_undercloud_nat ${public_network_cidr}; then echo -e "${red}ERROR: Unable to NAT undercloud with external net: ${public_network_cidr}${reset}" exit 1 |