From 6f68ecc3bfec6b5d614a49029b03599064e59e15 Mon Sep 17 00:00:00 2001 From: Bharat Kumar Date: Fri, 14 Aug 2015 14:12:28 +0530 Subject: [PATCH] CLOUDSTACK-8798 Fixed the vrrp virtual ip config in case of rvr enabled isolated networks. changed the CsRedundant.py to bring down the public interface when rvr changes state to backup. Also fixed vrrp authentication for isolated networks. --- .../debian/config/opt/cloud/bin/cs/CsDatabag.py | 11 ++++++++++- .../debian/config/opt/cloud/bin/cs/CsRedundant.py | 9 ++++++--- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py index 2a37b0a858f..33aa9926968 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py @@ -97,6 +97,12 @@ class CsCmdLine(CsDataBag): else: return "unknown" + def get_eth2_ip(self): + if "eth2ip" in self.idata(): + return self.idata()['eth2ip'] + else: + return "unknown" + def is_master(self): if not self.is_redundant(): return False @@ -130,7 +136,10 @@ class CsCmdLine(CsDataBag): This is slightly difficult to happen, but if it does, destroy the router with the password generated with the code below and restart the VPC with out the clean up option. ''' - passwd = "%s-%s" % (self.get_vpccidr, self.get_router_id()) + if(self.get_type()=='router'): + passwd="%s-%s" % (self.get_eth2_ip(), self.get_router_id()) + else: + passwd = "%s-%s" % (self.get_vpccidr(), self.get_router_id()) md5 = hashlib.md5() md5.update(passwd) return md5.hexdigest() diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py index da9b8876ed2..dd0abd8f6fb 100755 --- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py +++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py @@ -236,7 +236,7 @@ class CsRedundant(object): if dev == o.get_device(): continue logging.info("Bringing public interface %s down" % o.get_device()) - cmd2 = "ip link set %s up" % o.get_device() + cmd2 = "ip link set %s down" % o.get_device() CsHelper.execute(cmd2) dev = o.get_device() cmd = "%s -C %s" % (self.CONNTRACKD_BIN, self.CONNTRACKD_CONF) @@ -317,8 +317,11 @@ class CsRedundant(object): lines = [] for o in self.address.get_ips(): if o.needs_vrrp(): - str = " %s brd %s dev %s\n" % ( - o.get_gateway_cidr(), o.get_broadcast(), o.get_device()) + cmdline=self.config.get_cmdline_instance() + if(cmdline.get_type()=='router'): + str = " %s brd %s dev %s\n" % (cmdline.get_guest_gw(), o.get_broadcast(), o.get_device()) + else: + str = " %s brd %s dev %s\n" % (o.get_ip(), o.get_broadcast(), o.get_device()) lines.append(str) self.check_is_up(o.get_device()) return lines