aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexandru Avadanii <Alexandru.Avadanii@enea.com>2018-02-07 02:31:52 +0100
committerAlexandru Avadanii <Alexandru.Avadanii@enea.com>2018-02-07 20:35:18 +0100
commit95f0064aa77f83cad3afd04faeb52387c9f66ca8 (patch)
treee1d24f8bf4120a50d282bf6ba2bf67e0fef46908
parent2f874c8729bd80f34e5994fe07f116c82c9b1695 (diff)
[jump] Add simple check for required Linux bridges
- MaaS requires PXE/admin to be a Linux bridge; - if virtual nodes are present, they should be hooked to a proper Linux bridge for the Public network, but only throw a warning if not (and create a mock public virsh network instead); - if both virtual and baremetal nodes are present, Public bridge is indirectly mandatory (we can't mock it); JIRA: FUEL-339 Change-Id: Idfe99d66c49eadc56cb3d94ca4db3467fb76d388 Signed-off-by: Alexandru Avadanii <Alexandru.Avadanii@enea.com>
-rwxr-xr-xci/deploy.sh3
-rw-r--r--mcp/scripts/lib.sh42
2 files changed, 42 insertions, 3 deletions
diff --git a/ci/deploy.sh b/ci/deploy.sh
index e962ddd1d..ed438324b 100755
--- a/ci/deploy.sh
+++ b/ci/deploy.sh
@@ -325,6 +325,9 @@ for ((i = 0; i < ${#BR_NAMES[@]}; i++)); do
done
notify "[NOTE] Using bridges: ${OPNFV_BRIDGES[*]}" 2
+# Jumpserver prerequisites check
+jumpserver_check_requirements "${virtual_nodes[*]}" "${OPNFV_BRIDGES[@]}"
+
# Infra setup
if [ ${DRY_RUN} -eq 1 ]; then
notify "[NOTE] Dry run, skipping all deployment tasks" 2
diff --git a/mcp/scripts/lib.sh b/mcp/scripts/lib.sh
index 8e9ba97a9..20d466faa 100644
--- a/mcp/scripts/lib.sh
+++ b/mcp/scripts/lib.sh
@@ -313,12 +313,48 @@ function prepare_vms {
fi
}
+function jumpserver_check_requirements {
+ local vnodes=$1; shift
+ local br=("$@")
+ local err_br_not_found='Linux bridge not found!'
+ local err_br_virsh_net='is a virtual network, Linux bridge expected!'
+ local warn_br_endpoint="Endpoints might be inaccessible from external hosts!"
+ # MaaS requires a Linux bridge for PXE/admin
+ if [[ "${vnodes}" =~ mas01 ]]; then
+ if ! brctl showmacs "${br[0]}" >/dev/null 2>&1; then
+ notify_e "[ERROR] PXE/admin (${br[0]}) ${err_br_not_found}"
+ fi
+ # Assume virsh network name matches bridge name (true if created by us)
+ if virsh net-info "${br[0]}" >/dev/null 2>&1; then
+ notify_e "[ERROR] ${br[0]} ${err_br_virsh_net}"
+ fi
+ fi
+ # If virtual nodes are present, public should be a Linux bridge
+ if [ "$(echo "${vnodes}" | wc -w)" -gt 2 ]; then
+ if ! brctl showmacs "${br[3]}" >/dev/null 2>&1; then
+ if [[ "${vnodes}" =~ mas01 ]]; then
+ # Baremetal nodes *require* a proper public network
+ notify_e "[ERROR] Public (${br[3]}) ${err_br_not_found}"
+ else
+ notify_n "[WARN] Public (${br[3]}) ${err_br_not_found}" 3
+ notify_n "[WARN] ${warn_br_endpoint}" 3
+ fi
+ fi
+ if virsh net-info "${br[3]}" >/dev/null 2>&1; then
+ if [[ "${vnodes}" =~ mas01 ]]; then
+ notify_e "[ERROR] ${br[3]} ${err_br_virsh_net}"
+ else
+ notify_n "[WARN] ${br[3]} ${err_br_virsh_net}" 3
+ notify_n "[WARN] ${warn_br_endpoint}" 3
+ fi
+ fi
+ fi
+}
+
function create_networks {
local vnode_networks=("$@")
# create required networks, including constant "mcpcontrol"
- # FIXME(alav): since we renamed "pxe" to "mcpcontrol", we need to make sure
- # we delete the old "pxe" virtual network, or it would cause IP conflicts.
- for net in "pxe" "mcpcontrol" "${vnode_networks[@]}"; do
+ for net in "mcpcontrol" "${vnode_networks[@]}"; do
if virsh net-info "${net}" >/dev/null 2>&1; then
virsh net-destroy "${net}" || true
virsh net-undefine "${net}"