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]