Convert VXNetworkInstance to new zkhandler
This commit is contained in:
parent
790098f181
commit
1c9a7a6479
|
@ -924,7 +924,7 @@ if enable_networking:
|
||||||
# Add any missing networks to the list
|
# Add any missing networks to the list
|
||||||
for network in new_network_list:
|
for network in new_network_list:
|
||||||
if network not in network_list:
|
if network not in network_list:
|
||||||
d_network[network] = VXNetworkInstance.VXNetworkInstance(network, zkhandler.zk_conn, config, logger, this_node, dns_aggregator)
|
d_network[network] = VXNetworkInstance.VXNetworkInstance(network, zkhandler, config, logger, this_node, dns_aggregator)
|
||||||
if config['daemon_mode'] == 'coordinator' and d_network[network].nettype == 'managed':
|
if config['daemon_mode'] == 'coordinator' and d_network[network].nettype == 'managed':
|
||||||
try:
|
try:
|
||||||
dns_aggregator.add_network(d_network[network])
|
dns_aggregator.add_network(d_network[network])
|
||||||
|
|
|
@ -24,15 +24,14 @@ import time
|
||||||
|
|
||||||
from textwrap import dedent
|
from textwrap import dedent
|
||||||
|
|
||||||
import pvcnoded.zkhandler as zkhandler
|
|
||||||
import pvcnoded.common as common
|
import pvcnoded.common as common
|
||||||
|
|
||||||
|
|
||||||
class VXNetworkInstance(object):
|
class VXNetworkInstance(object):
|
||||||
# Initialization function
|
# Initialization function
|
||||||
def __init__(self, vni, zk_conn, config, logger, this_node, dns_aggregator):
|
def __init__(self, vni, zkhandler, config, logger, this_node, dns_aggregator):
|
||||||
self.vni = vni
|
self.vni = vni
|
||||||
self.zk_conn = zk_conn
|
self.zkhandler = zkhandler
|
||||||
self.config = config
|
self.config = config
|
||||||
self.logger = logger
|
self.logger = logger
|
||||||
self.this_node = this_node
|
self.this_node = this_node
|
||||||
|
@ -41,7 +40,7 @@ class VXNetworkInstance(object):
|
||||||
self.vni_mtu = config['vni_mtu']
|
self.vni_mtu = config['vni_mtu']
|
||||||
self.bridge_dev = config['bridge_dev']
|
self.bridge_dev = config['bridge_dev']
|
||||||
|
|
||||||
self.nettype = zkhandler.readdata(self.zk_conn, '/networks/{}/nettype'.format(self.vni))
|
self.nettype = self.zkhandler.read('/networks/{}/nettype'.format(self.vni))
|
||||||
if self.nettype == 'bridged':
|
if self.nettype == 'bridged':
|
||||||
self.logger.out(
|
self.logger.out(
|
||||||
'Creating new bridged network',
|
'Creating new bridged network',
|
||||||
|
@ -73,7 +72,7 @@ class VXNetworkInstance(object):
|
||||||
self.bridge_nic = 'vmbr{}'.format(self.vni)
|
self.bridge_nic = 'vmbr{}'.format(self.vni)
|
||||||
|
|
||||||
# Zookeper handlers for changed states
|
# Zookeper handlers for changed states
|
||||||
@self.zk_conn.DataWatch('/networks/{}'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}'.format(self.vni))
|
||||||
def watch_network_description(data, stat, event=''):
|
def watch_network_description(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -92,16 +91,16 @@ class VXNetworkInstance(object):
|
||||||
self.description = None
|
self.description = None
|
||||||
self.domain = None
|
self.domain = None
|
||||||
self.name_servers = None
|
self.name_servers = None
|
||||||
self.ip6_gateway = zkhandler.readdata(self.zk_conn, '/networks/{}/ip6_gateway'.format(self.vni))
|
self.ip6_gateway = self.zkhandler.read('/networks/{}/ip6_gateway'.format(self.vni))
|
||||||
self.ip6_network = zkhandler.readdata(self.zk_conn, '/networks/{}/ip6_network'.format(self.vni))
|
self.ip6_network = self.zkhandler.read('/networks/{}/ip6_network'.format(self.vni))
|
||||||
self.ip6_cidrnetmask = zkhandler.readdata(self.zk_conn, '/networks/{}/ip6_network'.format(self.vni)).split('/')[-1]
|
self.ip6_cidrnetmask = self.zkhandler.read('/networks/{}/ip6_network'.format(self.vni)).split('/')[-1]
|
||||||
self.dhcp6_flag = (zkhandler.readdata(self.zk_conn, '/networks/{}/dhcp6_flag'.format(self.vni)) == 'True')
|
self.dhcp6_flag = (self.zkhandler.read('/networks/{}/dhcp6_flag'.format(self.vni)) == 'True')
|
||||||
self.ip4_gateway = zkhandler.readdata(self.zk_conn, '/networks/{}/ip4_gateway'.format(self.vni))
|
self.ip4_gateway = self.zkhandler.read('/networks/{}/ip4_gateway'.format(self.vni))
|
||||||
self.ip4_network = zkhandler.readdata(self.zk_conn, '/networks/{}/ip4_network'.format(self.vni))
|
self.ip4_network = self.zkhandler.read('/networks/{}/ip4_network'.format(self.vni))
|
||||||
self.ip4_cidrnetmask = zkhandler.readdata(self.zk_conn, '/networks/{}/ip4_network'.format(self.vni)).split('/')[-1]
|
self.ip4_cidrnetmask = self.zkhandler.read('/networks/{}/ip4_network'.format(self.vni)).split('/')[-1]
|
||||||
self.dhcp4_flag = (zkhandler.readdata(self.zk_conn, '/networks/{}/dhcp4_flag'.format(self.vni)) == 'True')
|
self.dhcp4_flag = (self.zkhandler.read('/networks/{}/dhcp4_flag'.format(self.vni)) == 'True')
|
||||||
self.dhcp4_start = (zkhandler.readdata(self.zk_conn, '/networks/{}/dhcp4_start'.format(self.vni)) == 'True')
|
self.dhcp4_start = (self.zkhandler.read('/networks/{}/dhcp4_start'.format(self.vni)) == 'True')
|
||||||
self.dhcp4_end = (zkhandler.readdata(self.zk_conn, '/networks/{}/dhcp4_end'.format(self.vni)) == 'True')
|
self.dhcp4_end = (self.zkhandler.read('/networks/{}/dhcp4_end'.format(self.vni)) == 'True')
|
||||||
|
|
||||||
self.vxlan_nic = 'vxlan{}'.format(self.vni)
|
self.vxlan_nic = 'vxlan{}'.format(self.vni)
|
||||||
self.bridge_nic = 'vmbr{}'.format(self.vni)
|
self.bridge_nic = 'vmbr{}'.format(self.vni)
|
||||||
|
@ -158,11 +157,11 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
vxlannic=self.vxlan_nic,
|
vxlannic=self.vxlan_nic,
|
||||||
)
|
)
|
||||||
|
|
||||||
self.firewall_rules_in = zkhandler.listchildren(self.zk_conn, '/networks/{}/firewall_rules/in'.format(self.vni))
|
self.firewall_rules_in = self.zkhandler.children('/networks/{}/firewall_rules/in'.format(self.vni))
|
||||||
self.firewall_rules_out = zkhandler.listchildren(self.zk_conn, '/networks/{}/firewall_rules/out'.format(self.vni))
|
self.firewall_rules_out = self.zkhandler.children('/networks/{}/firewall_rules/out'.format(self.vni))
|
||||||
|
|
||||||
# Zookeper handlers for changed states
|
# Zookeper handlers for changed states
|
||||||
@self.zk_conn.DataWatch('/networks/{}'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}'.format(self.vni))
|
||||||
def watch_network_description(data, stat, event=''):
|
def watch_network_description(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -176,7 +175,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/domain'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/domain'.format(self.vni))
|
||||||
def watch_network_domain(data, stat, event=''):
|
def watch_network_domain(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -193,7 +192,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/name_servers'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/name_servers'.format(self.vni))
|
||||||
def watch_network_name_servers(data, stat, event=''):
|
def watch_network_name_servers(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -210,7 +209,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/ip6_network'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/ip6_network'.format(self.vni))
|
||||||
def watch_network_ip6_network(data, stat, event=''):
|
def watch_network_ip6_network(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -225,7 +224,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/ip6_gateway'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/ip6_gateway'.format(self.vni))
|
||||||
def watch_network_gateway6(data, stat, event=''):
|
def watch_network_gateway6(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -247,7 +246,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/dhcp6_flag'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/dhcp6_flag'.format(self.vni))
|
||||||
def watch_network_dhcp6_status(data, stat, event=''):
|
def watch_network_dhcp6_status(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -261,7 +260,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
elif self.dhcp_server_daemon and not self.dhcp4_flag and self.this_node.router_state in ['primary', 'takeover']:
|
elif self.dhcp_server_daemon and not self.dhcp4_flag and self.this_node.router_state in ['primary', 'takeover']:
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/ip4_network'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/ip4_network'.format(self.vni))
|
||||||
def watch_network_ip4_network(data, stat, event=''):
|
def watch_network_ip4_network(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -276,7 +275,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/ip4_gateway'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/ip4_gateway'.format(self.vni))
|
||||||
def watch_network_gateway4(data, stat, event=''):
|
def watch_network_gateway4(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -298,7 +297,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/dhcp4_flag'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/dhcp4_flag'.format(self.vni))
|
||||||
def watch_network_dhcp4_status(data, stat, event=''):
|
def watch_network_dhcp4_status(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -312,7 +311,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
elif self.dhcp_server_daemon and not self.dhcp6_flag and self.this_node.router_state in ['primary', 'takeover']:
|
elif self.dhcp_server_daemon and not self.dhcp6_flag and self.this_node.router_state in ['primary', 'takeover']:
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/dhcp4_start'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/dhcp4_start'.format(self.vni))
|
||||||
def watch_network_dhcp4_start(data, stat, event=''):
|
def watch_network_dhcp4_start(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -325,7 +324,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.DataWatch('/networks/{}/dhcp4_end'.format(self.vni))
|
@self.zkhandler.zk_conn.DataWatch('/networks/{}/dhcp4_end'.format(self.vni))
|
||||||
def watch_network_dhcp4_end(data, stat, event=''):
|
def watch_network_dhcp4_end(data, stat, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -338,7 +337,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.ChildrenWatch('/networks/{}/dhcp4_reservations'.format(self.vni))
|
@self.zkhandler.zk_conn.ChildrenWatch('/networks/{}/dhcp4_reservations'.format(self.vni))
|
||||||
def watch_network_dhcp_reservations(new_reservations, event=''):
|
def watch_network_dhcp_reservations(new_reservations, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -354,7 +353,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.stopDHCPServer()
|
self.stopDHCPServer()
|
||||||
self.startDHCPServer()
|
self.startDHCPServer()
|
||||||
|
|
||||||
@self.zk_conn.ChildrenWatch('/networks/{}/firewall_rules/in'.format(self.vni))
|
@self.zkhandler.zk_conn.ChildrenWatch('/networks/{}/firewall_rules/in'.format(self.vni))
|
||||||
def watch_network_firewall_rules_in(new_rules, event=''):
|
def watch_network_firewall_rules_in(new_rules, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -366,7 +365,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
self.firewall_rules_in = new_rules
|
self.firewall_rules_in = new_rules
|
||||||
self.updateFirewallRules()
|
self.updateFirewallRules()
|
||||||
|
|
||||||
@self.zk_conn.ChildrenWatch('/networks/{}/firewall_rules/out'.format(self.vni))
|
@self.zkhandler.zk_conn.ChildrenWatch('/networks/{}/firewall_rules/out'.format(self.vni))
|
||||||
def watch_network_firewall_rules_out(new_rules, event=''):
|
def watch_network_firewall_rules_out(new_rules, event=''):
|
||||||
if event and event.type == 'DELETED':
|
if event and event.type == 'DELETED':
|
||||||
# The key has been deleted after existing before; terminate this watcher
|
# The key has been deleted after existing before; terminate this watcher
|
||||||
|
@ -389,8 +388,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
if reservation not in old_reservations_list:
|
if reservation not in old_reservations_list:
|
||||||
# Add new reservation file
|
# Add new reservation file
|
||||||
filename = '{}/{}'.format(self.dnsmasq_hostsdir, reservation)
|
filename = '{}/{}'.format(self.dnsmasq_hostsdir, reservation)
|
||||||
ipaddr = zkhandler.readdata(
|
ipaddr = self.zkhandler.readdata(
|
||||||
self.zk_conn,
|
|
||||||
'/networks/{}/dhcp4_reservations/{}/ipaddr'.format(
|
'/networks/{}/dhcp4_reservations/{}/ipaddr'.format(
|
||||||
self.vni,
|
self.vni,
|
||||||
reservation
|
reservation
|
||||||
|
@ -426,10 +424,10 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
full_ordered_rules = []
|
full_ordered_rules = []
|
||||||
|
|
||||||
for acl in self.firewall_rules_in:
|
for acl in self.firewall_rules_in:
|
||||||
order = zkhandler.readdata(self.zk_conn, '/networks/{}/firewall_rules/in/{}/order'.format(self.vni, acl))
|
order = self.zkhandler.read('/networks/{}/firewall_rules/in/{}/order'.format(self.vni, acl))
|
||||||
ordered_acls_in[order] = acl
|
ordered_acls_in[order] = acl
|
||||||
for acl in self.firewall_rules_out:
|
for acl in self.firewall_rules_out:
|
||||||
order = zkhandler.readdata(self.zk_conn, '/networks/{}/firewall_rules/out/{}/order'.format(self.vni, acl))
|
order = self.zkhandler.read('/networks/{}/firewall_rules/out/{}/order'.format(self.vni, acl))
|
||||||
ordered_acls_out[order] = acl
|
ordered_acls_out[order] = acl
|
||||||
|
|
||||||
for order in sorted(ordered_acls_in.keys()):
|
for order in sorted(ordered_acls_in.keys()):
|
||||||
|
@ -440,7 +438,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
for direction in 'in', 'out':
|
for direction in 'in', 'out':
|
||||||
for acl in sorted_acl_list[direction]:
|
for acl in sorted_acl_list[direction]:
|
||||||
rule_prefix = "add rule inet filter vxlan{}-{} counter".format(self.vni, direction)
|
rule_prefix = "add rule inet filter vxlan{}-{} counter".format(self.vni, direction)
|
||||||
rule_data = zkhandler.readdata(self.zk_conn, '/networks/{}/firewall_rules/{}/{}/rule'.format(self.vni, direction, acl))
|
rule_data = self.zkhandler.read('/networks/{}/firewall_rules/{}/{}/rule'.format(self.vni, direction, acl))
|
||||||
rule = '{} {}'.format(rule_prefix, rule_data)
|
rule = '{} {}'.format(rule_prefix, rule_data)
|
||||||
full_ordered_rules.append(rule)
|
full_ordered_rules.append(rule)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue