Move MTU validation to function
Prevents code duplication and ensures validation runs when an MTU is updated, not just on network creation.
This commit is contained in:
parent
35e7e11403
commit
fb0651fb05
|
@ -83,36 +83,7 @@ class VXNetworkInstance(object):
|
||||||
except Exception:
|
except Exception:
|
||||||
self.vx_mtu = None
|
self.vx_mtu = None
|
||||||
|
|
||||||
update_mtu = False
|
self.validateNetworkMTU()
|
||||||
|
|
||||||
# Explicitly set the MTU to max_mtu if unset (in Zookeeper too assuming the key exists)
|
|
||||||
if self.vx_mtu == '' or self.vx_mtu is None:
|
|
||||||
self.logger.out(
|
|
||||||
'MTU not specified; setting to maximum MTU {} instead'.format(self.max_mtu),
|
|
||||||
prefix='VNI {}'.format(self.vni),
|
|
||||||
state='w'
|
|
||||||
)
|
|
||||||
self.vx_mtu = self.max_mtu
|
|
||||||
update_mtu = True
|
|
||||||
self.vx_mtu = int(self.vx_mtu)
|
|
||||||
# Ensure the MTU is valid
|
|
||||||
if self.vx_mtu > self.max_mtu:
|
|
||||||
self.logger.out(
|
|
||||||
'MTU {} is larger than maximum MTU {}; setting to maximum MTU instead'.format(self.vx_mtu, self.max_mtu),
|
|
||||||
prefix='VNI {}'.format(self.vni),
|
|
||||||
state='w'
|
|
||||||
)
|
|
||||||
self.vx_mtu = self.max_mtu
|
|
||||||
update_mtu = True
|
|
||||||
|
|
||||||
if update_mtu:
|
|
||||||
# Try block for migration purposes
|
|
||||||
try:
|
|
||||||
self.zkhandler.write([
|
|
||||||
(('network.mtu', self.vni), self.vx_mtu)
|
|
||||||
])
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
# Zookeper handlers for changed states
|
# Zookeper handlers for changed states
|
||||||
@self.zkhandler.zk_conn.DataWatch(self.zkhandler.schema.path('network', self.vni))
|
@self.zkhandler.zk_conn.DataWatch(self.zkhandler.schema.path('network', self.vni))
|
||||||
|
@ -137,6 +108,7 @@ class VXNetworkInstance(object):
|
||||||
|
|
||||||
if data and self.vx_mtu != data.decode('ascii'):
|
if data and self.vx_mtu != data.decode('ascii'):
|
||||||
self.vx_mtu = data.decode('ascii')
|
self.vx_mtu = data.decode('ascii')
|
||||||
|
self.validateNetworkMTU()
|
||||||
self.updateNetworkMTU()
|
self.updateNetworkMTU()
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
@ -165,36 +137,7 @@ class VXNetworkInstance(object):
|
||||||
except Exception:
|
except Exception:
|
||||||
self.vx_mtu = None
|
self.vx_mtu = None
|
||||||
|
|
||||||
update_mtu = False
|
self.validateNetworkMTU()
|
||||||
|
|
||||||
# Explicitly set the MTU to max_mtu if unset (in Zookeeper too assuming the key exists)
|
|
||||||
if self.vx_mtu == '' or self.vx_mtu is None:
|
|
||||||
self.logger.out(
|
|
||||||
'MTU not specified; setting to maximum MTU {} instead'.format(self.max_mtu),
|
|
||||||
prefix='VNI {}'.format(self.vni),
|
|
||||||
state='w'
|
|
||||||
)
|
|
||||||
self.vx_mtu = self.max_mtu
|
|
||||||
update_mtu = True
|
|
||||||
self.vx_mtu = int(self.vx_mtu)
|
|
||||||
# Ensure the MTU is valid
|
|
||||||
if self.vx_mtu > self.max_mtu:
|
|
||||||
self.logger.out(
|
|
||||||
'MTU {} is larger than maximum MTU {}; setting to maximum MTU instead'.format(self.vx_mtu, self.max_mtu),
|
|
||||||
prefix='VNI {}'.format(self.vni),
|
|
||||||
state='w'
|
|
||||||
)
|
|
||||||
self.vx_mtu = self.max_mtu
|
|
||||||
update_mtu = True
|
|
||||||
|
|
||||||
if update_mtu:
|
|
||||||
# Try block for migration purposes
|
|
||||||
try:
|
|
||||||
self.zkhandler.write([
|
|
||||||
(('network.mtu', self.vni), self.vx_mtu)
|
|
||||||
])
|
|
||||||
except Exception:
|
|
||||||
pass
|
|
||||||
|
|
||||||
self.nftables_netconf_filename = '{}/networks/{}.nft'.format(self.config['nft_dynamic_directory'], self.vni)
|
self.nftables_netconf_filename = '{}/networks/{}.nft'.format(self.config['nft_dynamic_directory'], self.vni)
|
||||||
self.firewall_rules = []
|
self.firewall_rules = []
|
||||||
|
@ -311,6 +254,7 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
|
|
||||||
if data and self.vx_mtu != data.decode('ascii'):
|
if data and self.vx_mtu != data.decode('ascii'):
|
||||||
self.vx_mtu = data.decode('ascii')
|
self.vx_mtu = data.decode('ascii')
|
||||||
|
self.validateNetworkMTU()
|
||||||
self.updateNetworkMTU()
|
self.updateNetworkMTU()
|
||||||
except Exception:
|
except Exception:
|
||||||
pass
|
pass
|
||||||
|
@ -489,6 +433,46 @@ add rule inet filter forward ip6 saddr {netaddr6} counter jump {vxlannic}-out
|
||||||
def getvni(self):
|
def getvni(self):
|
||||||
return self.vni
|
return self.vni
|
||||||
|
|
||||||
|
def validateNetworkMTU(self):
|
||||||
|
update_mtu = False
|
||||||
|
|
||||||
|
# Explicitly set the MTU to max_mtu if unset (in Zookeeper too assuming the key exists)
|
||||||
|
if self.vx_mtu == '' or self.vx_mtu is None:
|
||||||
|
self.logger.out(
|
||||||
|
'MTU not specified; setting to maximum MTU {} instead'.format(self.max_mtu),
|
||||||
|
prefix='VNI {}'.format(self.vni),
|
||||||
|
state='w'
|
||||||
|
)
|
||||||
|
self.vx_mtu = self.max_mtu
|
||||||
|
update_mtu = True
|
||||||
|
|
||||||
|
# Set MTU to an integer (if it's not)
|
||||||
|
if not type(self.vx_mtu, int):
|
||||||
|
self.vx_mtu = int(self.vx_mtu)
|
||||||
|
|
||||||
|
# Ensure the MTU is valid
|
||||||
|
if self.vx_mtu > self.max_mtu:
|
||||||
|
self.logger.out(
|
||||||
|
'MTU {} is larger than maximum MTU {}; setting to maximum MTU instead'.format(self.vx_mtu, self.max_mtu),
|
||||||
|
prefix='VNI {}'.format(self.vni),
|
||||||
|
state='w'
|
||||||
|
)
|
||||||
|
self.vx_mtu = self.max_mtu
|
||||||
|
update_mtu = True
|
||||||
|
|
||||||
|
if update_mtu:
|
||||||
|
# Try block for migration purposes
|
||||||
|
try:
|
||||||
|
self.zkhandler.write([
|
||||||
|
(('network.mtu', self.vni), self.vx_mtu)
|
||||||
|
])
|
||||||
|
except Exception as e:
|
||||||
|
self.logger.out(
|
||||||
|
'Could not update MTU in Zookeeper: {}'.format(e),
|
||||||
|
prefix='VNI {}'.format(self.vni),
|
||||||
|
state='w'
|
||||||
|
)
|
||||||
|
|
||||||
def updateNetworkMTU(self):
|
def updateNetworkMTU(self):
|
||||||
self.logger.out(
|
self.logger.out(
|
||||||
'Setting network MTU to {}'.format(self.vx_mtu),
|
'Setting network MTU to {}'.format(self.vx_mtu),
|
||||||
|
|
Loading…
Reference in New Issue