MCPcopy Create free account
hub / github.com/apache/cloudstack / CsRedundant

Class CsRedundant

systemvm/debian/opt/cloud/bin/cs/CsRedundant.py:46–518  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

44
45
46class CsRedundant(object):
47
48 CS_RAMDISK_DIR = "/ramdisk"
49 CS_PRIO_UP = 1
50 CS_PRIO_DOWN = -1
51 CS_ROUTER_DIR = "%s/rrouter" % CS_RAMDISK_DIR
52 CS_TEMPLATES = [
53 "heartbeat.sh.templ", "check_heartbeat.sh.templ",
54 "arping_gateways.sh.templ"
55 ]
56 CS_TEMPLATES_DIR = "/opt/cloud/templates"
57 CONNTRACKD_BIN = "/usr/sbin/conntrackd"
58 CONNTRACKD_KEEPALIVED_CONFLOCK = "/var/lock/conntrack.lock"
59 CONNTRACKD_CONF = "/etc/conntrackd/conntrackd.conf"
60 RROUTER_LOG = "/var/log/cloud.log"
61 KEEPALIVED_CONF = "/etc/keepalived/keepalived.conf"
62
63 def __init__(self, config):
64 self.cl = config.cmdline()
65 self.address = config.address()
66 self.config = config
67
68 def set(self):
69 logging.debug("Router redundancy status is %s", self.cl.is_redundant())
70 if self.cl.is_redundant():
71 self._redundant_on()
72 else:
73 self._redundant_off()
74
75 def _redundant_off(self):
76 CsHelper.service("conntrackd", "stop")
77 CsHelper.service("keepalived", "stop")
78 CsHelper.umount_tmpfs(self.CS_RAMDISK_DIR)
79 CsHelper.rmdir(self.CS_RAMDISK_DIR)
80 CsHelper.rm(self.CONNTRACKD_CONF)
81 CsHelper.rm(self.KEEPALIVED_CONF)
82
83 def _redundant_on(self):
84 guest = self.address.get_guest_if()
85
86 # No redundancy if there is no guest network
87 if guest is None:
88 self.set_backup(restart_conntrackd=False)
89 self._redundant_off()
90 return
91
92 interfaces = [interface for interface in self.address.get_interfaces() if interface.is_guest()]
93 isDeviceReady = False
94 dev = ''
95 for interface in interfaces:
96 if dev == interface.get_device():
97 continue
98 dev = interface.get_device()
99 logging.info("Wait for devices to be configured so we can start keepalived")
100 devConfigured = CsDevice(dev, self.config).waitfordevice()
101 if devConfigured:
102 command = "ip link show %s | grep 'state UP'" % dev
103 devUp = CsHelper.execute(command)

Callers 3

test_initMethod · 0.90
mainFunction · 0.85

Calls

no outgoing calls

Tested by 1

test_initMethod · 0.72