treasuremap/manifests/site/stl3-site/target/initinfra/scripts/vip-ipaddress

50 lines
1.8 KiB
Bash

#!/bin/bash
# Copyright 2018 The Openstack-Helm Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -ex
COMMAND="${@:-start}"
# The following are standard ironic pod environment variables
# PROVISIONING_IP - IP address we expect to assign to provisioning bridge
# PROVISIONING_INTERFACE - the physical interface name, normally 'provisioning'
# to reflect a bridge named provisioning with eno4 as a member
function test_vip () {
ip addr show ${PROVISIONING_INTERFACE} | \
awk "/inet / && /${PROVISIONING_INTERFACE}/{print \$2 }" | \
awk -F '/' '{ print $1 }' | \
grep -q "${PROVISIONING_IP%/*}"
}
function start () {
ip link show ${PROVISIONING_INTERFACE} > /dev/null || ip link add ${PROVISIONING_INTERFACE} type dummy
if ! test_vip; then
ip addr add ${PROVISIONING_IP}/32 dev ${PROVISIONING_INTERFACE}
fi
ip link set ${PROVISIONING_INTERFACE} up
garp_interface=$(ip route list match "${PROVISIONING_IP}" scope link | \
awk '$2 == "dev" { print $3; exit }')
if [ -n "${garp_interface}" ]; then
arping -U -c 3 -I "${garp_interface}" "${PROVISIONING_IP%/*}" || true
fi
}
function sleep () {
exec bash -c "while :; do sleep 2073600; done"
}
function stop () {
ip link show ${PROVISIONING_INTERFACE} > /dev/null || exit 0
if test_vip; then
ip addr del ${PROVISIONING_IP}/32 dev ${PROVISIONING_INTERFACE}
fi
}
$COMMAND