Move to YAML config and allow split functions
1. Move to a YAML-based configuration format instead of the original INI-based configuration to facilitate better organization and readability. 2. Modify the daemon to be able to operate in several modes based on configuration flags. Either networking or storage functions can be disabled using the configuration, allowing the PVC system to be used only for hypervisor management if required.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@ -66,10 +66,18 @@ class NodeInstance(object):
|
||||
self.memalloc = 0
|
||||
self.vcpualloc = 0
|
||||
# Floating upstreams
|
||||
self.vni_dev = self.config['vni_dev']
|
||||
self.vni_ipaddr, self.vni_cidrnetmask = self.config['vni_floating_ip'].split('/')
|
||||
self.upstream_dev = self.config['upstream_dev']
|
||||
self.upstream_ipaddr, self.upstream_cidrnetmask = self.config['upstream_floating_ip'].split('/')
|
||||
if self.config['enable_networking']:
|
||||
self.vni_dev = self.config['vni_dev']
|
||||
self.vni_ipaddr, self.vni_cidrnetmask = self.config['vni_floating_ip'].split('/')
|
||||
self.upstream_dev = self.config['upstream_dev']
|
||||
self.upstream_ipaddr, self.upstream_cidrnetmask = self.config['upstream_floating_ip'].split('/')
|
||||
else:
|
||||
self.vni_dev = None
|
||||
self.vni_ipaddr = None
|
||||
self.vni_cidrnetmask = None
|
||||
self.upstream_dev = None
|
||||
self.upstream_ipaddr = None
|
||||
self.upstream_cidrnetmask = None
|
||||
# Flags
|
||||
self.inflush = False
|
||||
|
||||
@ -240,25 +248,27 @@ class NodeInstance(object):
|
||||
|
||||
# Routing primary/secondary states
|
||||
def become_secondary(self):
|
||||
self.logger.out('Setting router {} to secondary state'.format(self.name), state='i')
|
||||
self.logger.out('Network list: {}'.format(', '.join(self.network_list)))
|
||||
time.sleep(1)
|
||||
for network in self.d_network:
|
||||
self.d_network[network].stopDHCPServer()
|
||||
self.d_network[network].removeGateways()
|
||||
self.removeFloatingAddresses()
|
||||
self.dns_aggregator.stop_aggregator()
|
||||
if self.config['enable_networking']:
|
||||
self.logger.out('Setting router {} to secondary state'.format(self.name), state='i')
|
||||
self.logger.out('Network list: {}'.format(', '.join(self.network_list)))
|
||||
time.sleep(1)
|
||||
for network in self.d_network:
|
||||
self.d_network[network].stopDHCPServer()
|
||||
self.d_network[network].removeGateways()
|
||||
self.removeFloatingAddresses()
|
||||
self.dns_aggregator.stop_aggregator()
|
||||
|
||||
def become_primary(self):
|
||||
self.logger.out('Setting router {} to primary state'.format(self.name), state='i')
|
||||
self.logger.out('Network list: {}'.format(', '.join(self.network_list)))
|
||||
self.createFloatingAddresses()
|
||||
# Start up the gateways and DHCP servers
|
||||
for network in self.d_network:
|
||||
self.d_network[network].createGateways()
|
||||
self.d_network[network].startDHCPServer()
|
||||
time.sleep(0.5)
|
||||
self.dns_aggregator.start_aggregator()
|
||||
if self.config['enable_networking']:
|
||||
self.logger.out('Setting router {} to primary state'.format(self.name), state='i')
|
||||
self.logger.out('Network list: {}'.format(', '.join(self.network_list)))
|
||||
self.createFloatingAddresses()
|
||||
# Start up the gateways and DHCP servers
|
||||
for network in self.d_network:
|
||||
self.d_network[network].createGateways()
|
||||
self.d_network[network].startDHCPServer()
|
||||
time.sleep(0.5)
|
||||
self.dns_aggregator.start_aggregator()
|
||||
|
||||
def createFloatingAddresses(self):
|
||||
# VNI floating IP
|
||||
|
13
node-daemon/pvcd/fixrbdlocks
Executable file
13
node-daemon/pvcd/fixrbdlocks
Executable file
@ -0,0 +1,13 @@
|
||||
#!/bin/bash
|
||||
|
||||
for disk in $( sudo rbd list ${BLSE_STORAGE_POOL_VM} | grep "^${vm}" ); do
|
||||
echo -e " Disk: $disk"
|
||||
locks="$( sudo rbd lock list ${BLSE_STORAGE_POOL_VM}/${disk} | grep '^client' )"
|
||||
echo "${locks}"
|
||||
if [[ -n "${locks}" ]]; then
|
||||
echo -e " LOCK FOUND! Clearing."
|
||||
locker="$( awk '{ print $1 }' <<<"${locks}" )"
|
||||
id="$( awk '{ print $2" "$3 }' <<<"${locks}" )"
|
||||
sudo rbd lock remove ${BLSE_STORAGE_POOL_VM}/${disk} "${id}" "${locker}"
|
||||
fi
|
||||
done
|
@ -45,6 +45,8 @@ class Logger(object):
|
||||
# We open the logfile for the duration of our session, but have a hup function
|
||||
self.writer = open(self.logfile, 'a', buffering=1)
|
||||
self.last_colour = self.fmt_cyan
|
||||
else:
|
||||
self.last_colour = ""
|
||||
|
||||
# Provide a hup function to close and reopen the writer
|
||||
def hup(self):
|
||||
|
Reference in New Issue
Block a user