From 5db86e6c207a8e77d584470ce421855a2afcbd39 Mon Sep 17 00:00:00 2001 From: Sheng Yang Date: Mon, 6 Jun 2011 13:51:46 -0700 Subject: [PATCH] Fix CheckRouterAnswer's isMaster report If we got invalid/unsuccessed answer from CheckRouterAnswer, set master to false. Also add missed scripts. --- .../debian/config/root/checkrouter.sh | 3 ++ scripts/network/domr/getRouterStatus.sh | 39 +++++++++++++++++++ .../VirtualNetworkApplianceManagerImpl.java | 28 +++++++------ 3 files changed, 59 insertions(+), 11 deletions(-) create mode 100755 patches/systemvm/debian/config/root/checkrouter.sh create mode 100644 scripts/network/domr/getRouterStatus.sh diff --git a/patches/systemvm/debian/config/root/checkrouter.sh b/patches/systemvm/debian/config/root/checkrouter.sh new file mode 100755 index 00000000000..9b297663ecd --- /dev/null +++ b/patches/systemvm/debian/config/root/checkrouter.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +tail -n 1 /root/keepalived.log | grep "Status" diff --git a/scripts/network/domr/getRouterStatus.sh b/scripts/network/domr/getRouterStatus.sh new file mode 100644 index 00000000000..1239d11d24a --- /dev/null +++ b/scripts/network/domr/getRouterStatus.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +usage() { + printf "Usage:\n %s \n" $(basename $0) >&2 + printf " %s \n" $(basename $0) >&2 +} + +cert="/root/.ssh/id_rsa.cloud" +domRIp=$1 +shift + +# check if gateway domain is up and running +check_gw() { + ping -c 1 -n -q $1 > /dev/null + if [ $? -gt 0 ] + then + sleep 1 + ping -c 1 -n -q $1 > /dev/null + fi + return $?; +} + + +# Check if DomR is up and running. If not, exit with error code 1. +check_gw "$domRIp" +if [ $? -gt 0 ] +then + exit 1 +fi + +tmpfile=/tmp/$RANDOM.log + +scp -P 3922 -q -o StrictHostKeyChecking=no -i $cert root@$domRIp:/root/keepalived.log $tmpfile +if [ $? -ne 0 ] +then + exit $? +fi +result=`tail $tmpfile -n 1` +echo $result diff --git a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index efc8407802c..d0a9b3ccd29 100755 --- a/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@ -725,18 +725,24 @@ public class VirtualNetworkApplianceManagerImpl implements VirtualNetworkApplian command.setAccessDetail(NetworkElementCommand.ROUTER_NAME, router.getInstanceName()); final CheckRouterAnswer answer = (CheckRouterAnswer) _agentMgr.easySend(router.getHostId(), command); if (answer != null) { - router.setIsMaster(answer.getIsMaster()); - Transaction txn = Transaction.open(Transaction.CLOUD_DB); - try { - txn.start(); - _routerDao.update(router.getId(), router); - txn.commit(); - } catch (Exception e) { - txn.rollback(); - s_logger.warn("Unable to update router status for account: " + router.getAccountId()); - } finally { - txn.close(); + if (answer.getResult()) { + router.setIsMaster(answer.getIsMaster()); + } else { + router.setIsMaster(false); } + } else { + router.setIsMaster(false); + } + Transaction txn = Transaction.open(Transaction.CLOUD_DB); + try { + txn.start(); + _routerDao.update(router.getId(), router); + txn.commit(); + } catch (Exception e) { + txn.rollback(); + s_logger.warn("Unable to update router status for account: " + router.getAccountId()); + } finally { + txn.close(); } } }