From 8caef8d6c1bce917d022771eb63bcf45784f3e7f Mon Sep 17 00:00:00 2001 From: Vlastimil Holer Date: Mon, 12 Feb 2018 16:33:03 +0100 Subject: [PATCH] B #1733: Make vip.sh less error prone (#1734) (cherry picked from commit dd0763209f907d127e1b7a8752494e336f2e4826) --- share/hooks/raft/vip.sh | 30 ++++++++++++++++------ share/pkgs/CentOS7/opennebula-flow.service | 6 ++--- 2 files changed, 25 insertions(+), 11 deletions(-) diff --git a/share/hooks/raft/vip.sh b/share/hooks/raft/vip.sh index 18294e13bf..14fd01f729 100755 --- a/share/hooks/raft/vip.sh +++ b/share/hooks/raft/vip.sh @@ -2,33 +2,47 @@ ACTION="$1" INTERFACE="$2" -IP="$3" +IFADDR="$3" +IP="${IFADDR%%/*}" if [ -z "$INTERFACE" ]; then echo "Missing interface." >&2 exit 1 fi -if [ -z "$IP" ]; then +if [ -z "$IFADDR" ]; then echo "Missing IP." >&2 exit 1 fi case $ACTION in leader) - sudo ip address add $IP dev $INTERFACE + sudo ip address add $IFADDR dev $INTERFACE + for i in $(seq 5); do - sudo arping -c 1 -U -I $INTERFACE ${IP%%/*} + sudo arping -c 1 -U -I $INTERFACE ${IP} sleep 1 - sudo arping -c 1 -A -I $INTERFACE ${IP%%/*} + sudo arping -c 1 -A -I $INTERFACE ${IP} sleep 1 done - oneflow-server start + + if which oneflow-server &>/dev/null && + [ ! -e /var/run/one/oneflow.pid ]; + then + oneflow-server start + fi ;; follower) - sudo ip address del $IP dev $INTERFACE - oneflow-server stop + if sudo ip address show dev $INTERFACE | grep -qi " ${IP}/"; then + sudo ip address del $IFADDR dev $INTERFACE + fi + + if which oneflow-server &>/dev/null && + [ -e /var/run/one/oneflow.pid ]; + then + oneflow-server stop + fi ;; *) diff --git a/share/pkgs/CentOS7/opennebula-flow.service b/share/pkgs/CentOS7/opennebula-flow.service index 58e976bec2..f85cff8dcc 100644 --- a/share/pkgs/CentOS7/opennebula-flow.service +++ b/share/pkgs/CentOS7/opennebula-flow.service @@ -4,11 +4,11 @@ After=syslog.target After=network.target [Service] -Type=simple +Type=forking Group=oneadmin User=oneadmin - -ExecStart=/usr/bin/ruby /usr/lib/one/oneflow/oneflow-server.rb +ExecStart=/usr/bin/oneflow-server start +ExecStop=/usr/bin/oneflow-server stop PIDFile=/var/run/one/oneflow.pid [Install]