You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by bh...@apache.org on 2015/03/17 11:26:12 UTC
[10/50] git commit: updated refs/heads/master to 3c429ee
Fixed CsAddress destroying the VIP address on a redundant router
Taken quite a bit of code out of CsRedundant
Fixed public IP in keepalived when there is no guest network
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/bf6e3fa8
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/bf6e3fa8
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/bf6e3fa8
Branch: refs/heads/master
Commit: bf6e3fa8b2ce4aefb06ea2a76e229c1e91f545f0
Parents: 6d34f1f
Author: Ian Southam <is...@schubergphilis.com>
Authored: Wed Jan 28 15:20:45 2015 +0100
Committer: wilderrodrigues <wr...@schubergphilis.com>
Committed: Mon Mar 16 11:39:53 2015 +0100
----------------------------------------------------------------------
.../debian/config/opt/cloud/bin/cs/CsAddress.py | 5 +-
.../debian/config/opt/cloud/bin/cs/CsDatabag.py | 6 +-
.../config/opt/cloud/bin/cs/CsRedundant.py | 58 +++++++++++---------
3 files changed, 37 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bf6e3fa8/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py
----------------------------------------------------------------------
diff --git a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py
index a3ca801..0b5cca9 100644
--- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py
+++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsAddress.py
@@ -28,6 +28,7 @@ from CsRule import CsRule
VRRP_TYPES = ['guest']
+
class CsAddress(CsDataBag):
def compare(self):
@@ -499,10 +500,10 @@ class CsIP:
def is_guest_gateway(self, bag, ip):
""" Exclude the vrrp maintained addresses on a redundant router """
if not self.config.cl.is_redundant():
- return False
+ return False
rip = ip.split('/')[0]
if bag['nw_type'] == "guest" and rip == bag['gateway']:
- return True
+ return True
return False
def delete(self, ip):
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bf6e3fa8/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py
----------------------------------------------------------------------
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 187a0cb..936f993 100644
--- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py
+++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsDatabag.py
@@ -125,13 +125,13 @@ class CsCmdLine(CsDataBag):
if "redundant_master" in self.idata():
return self.idata()['redundant_master'] == "true"
return False
-
+
def get_state(self):
if "redundant_state" in self.idata():
return self.idata()['redundant_state']
return "MASTER"
-
+
def get_router_id(self):
if "router_id" in self.idata():
return self.idata()['router_id']
- return 1
\ No newline at end of file
+ return 1
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/bf6e3fa8/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py
----------------------------------------------------------------------
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 a1bef3a..1db27ad 100644
--- a/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py
+++ b/systemvm/patches/debian/config/opt/cloud/bin/cs/CsRedundant.py
@@ -38,6 +38,7 @@ import logging
import CsHelper
from CsFile import CsFile
from CsConfig import CsConfig
+from CsProcess import CsProcess
class CsRedundant(object):
@@ -63,8 +64,7 @@ class CsRedundant(object):
def set(self):
logging.debug("Router redundancy status is %s", self.cl.is_redundant())
- guest = self.address.get_guest_if()
- if self.cl.is_redundant() and guest:
+ if self.cl.is_redundant():
self._redundant_on()
else:
self._redundant_off()
@@ -99,29 +99,35 @@ class CsRedundant(object):
# keepalived configuration
file = CsFile(self.KEEPALIVED_CONF)
file.search(" router_id ", " router_id %s" % self.cl.get_name())
- file.search(" priority ", " priority %s" % self.cl.get_priority())
+ # file.search(" priority ", " priority %s" % self.cl.get_priority())
file.search(" weight ", " weight %s" % 2)
- file.search(" state ", " state %s" % self.cl.get_state())
- #file.search(" virtual_router_id ", " virtual_router_id %s" % self.cl.get_router_id())
+ # file.search(" state ", " state %s" % self.cl.get_state())
+ file.search(" state ", " state %s" % "EQUAL")
+ # file.search(" virtual_router_id ", " virtual_router_id %s" % self.cl.get_router_id())
file.greplace("[RROUTER_BIN_PATH]", self.CS_ROUTER_DIR)
- file.section("virtual_ipaddress {", "}", self._collect_ips())
- if self.cl.get_state() == 'MASTER':
- file.search(" priority ", " priority %s" % 120)
+# If there is no guest network still bring up the public interface
+# Maybe necessary for things like VPNs and private gateways
+ if self.address.get_guest_if():
+ file.section("virtual_ipaddress {", "}", self._collect_ips())
+ # if self.cl.get_state() == 'MASTER':
+ # file.search(" priority ", " priority %s" % 100)
file.commit()
# conntrackd configuration
guest = self.address.get_guest_if()
connt = CsFile(self.CONNTRACKD_CONF)
- connt.section("Multicast {", "}", [
- "IPv4_address 225.0.0.50\n",
- "Group 3780\n",
- "IPv4_interface %s\n" % guest.get_ip(),
- "Interface %s\n" % guest.get_device(),
- "SndSocketBuffer 1249280\n",
- "RcvSocketBuffer 1249280\n",
- "Checksum on\n"])
- connt.section("Address Ignore {", "}", self._collect_ignore_ips())
- connt.commit()
+ if guest is not None:
+ connt.section("Multicast {", "}", [
+ "IPv4_address 225.0.0.50\n",
+ "Group 3780\n",
+ "IPv4_interface %s\n" % guest.get_ip(),
+ "Interface %s\n" % guest.get_device(),
+ "SndSocketBuffer 1249280\n",
+ "RcvSocketBuffer 1249280\n",
+ "Checksum on\n"])
+ connt.section("Address Ignore {", "}", self._collect_ignore_ips())
+ connt.commit()
+
if connt.is_changed():
CsHelper.service("conntrackd", "restart")
@@ -138,6 +144,10 @@ class CsRedundant(object):
cron.add("*/1 * * * * root $SHELL %s/check_heartbeat.sh 2>&1 > /dev/null" % self.CS_ROUTER_DIR, -1)
cron.commit()
+ proc = CsProcess(['/usr/sbin/keepalived', '--vrrp'])
+ if not proc.find():
+ CsHelper.service("keepalived", "restart")
+
def set_fault(self):
""" Set fault mode on this router """
if not self.cl.is_redundant():
@@ -177,9 +187,9 @@ class CsRedundant(object):
CsHelper.service("xl2tpd", "stop")
CsHelper.service("cloud-passwd-srvr", "stop")
CsHelper.service("dnsmasq", "stop")
- self._set_priority(self.CS_PRIO_DOWN)
+ # self._set_priority(self.CS_PRIO_DOWN)
self.cl.dbag['config']['redundant_master'] = "false"
- #CsHelper.service("keepalived", "restart")
+ # CsHelper.service("keepalived", "restart")
self.cl.save()
logging.info("Router switched to backup mode")
@@ -212,15 +222,9 @@ class CsRedundant(object):
CsHelper.service("dnsmasq", "restart")
self.cl.dbag['config']['redundant_master'] = "true"
self.cl.save()
- #CsHelper.service("keepalived", "restart")
+ # CsHelper.service("keepalived", "restart")
logging.info("Router switched to master mode")
- def _set_priority(self, dir):
- self.cl.set_priority(int(self.cl.get_priority()) + dir)
- file = CsFile(self.KEEPALIVED_CONF)
- file.search(" priority ", " priority %s" % self.cl.get_priority())
- file.commit()
-
def _collect_ignore_ips(self):
"""
This returns a list of ip objects that should be ignored