summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Kullberg <markus.kullberg@nokia.com>2016-07-26 09:37:43 +0300
committerMarkus Kullberg <markus.kullberg@nokia.com>2016-08-02 10:18:25 +0300
commitb6f3736872b6c06a345da2f16e82d8688c469dd7 (patch)
tree989dd4f96981b403d2b78bdb4fdaf838d091be94
parent38e8b2674338dd9ffc22b6cb4e222c19f80a39ca (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.sh13
-rwxr-xr-xlib/post-install-functions.sh3
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