Use current live value for bridge_mtu

This will ensure that upgrading without the bridge_mtu config key set
will keep things as they are.
This commit is contained in:
Joshua Boniface 2021-10-12 12:24:03 -04:00
parent 8f906c1f81
commit fe73dfbdc9
1 changed files with 12 additions and 1 deletions

View File

@ -19,13 +19,17 @@
# #
############################################################################### ###############################################################################
import daemon_lib.common as common
import os import os
import subprocess import subprocess
import yaml import yaml
from socket import gethostname from socket import gethostname
from re import findall from re import findall
from psutil import cpu_count from psutil import cpu_count
from ipaddress import ip_address, ip_network from ipaddress import ip_address, ip_network
from json import loads
class MalformedConfigurationError(Exception): class MalformedConfigurationError(Exception):
@ -287,13 +291,20 @@ def get_configuration():
'upstream_mtu': o_sysnetwork_upstream.get('mtu', None), 'upstream_mtu': o_sysnetwork_upstream.get('mtu', None),
'upstream_dev_ip': o_sysnetwork_upstream.get('address', None), 'upstream_dev_ip': o_sysnetwork_upstream.get('address', None),
'bridge_dev': o_sysnetworks.get('bridge_device', None), 'bridge_dev': o_sysnetworks.get('bridge_device', None),
'bridge_mtu': o_sysnetworks.get('bridge_mtu', 1500), 'bridge_mtu': o_sysnetworks.get('bridge_mtu', None),
'enable_sriov': o_sysnetworks.get('sriov_enable', False), 'enable_sriov': o_sysnetworks.get('sriov_enable', False),
'sriov_device': o_sysnetworks.get('sriov_device', list()) 'sriov_device': o_sysnetworks.get('sriov_device', list())
} }
config = {**config, **config_networks} config = {**config, **config_networks}
if config_networks['bridge_mtu'] is None:
# Read the current MTU of bridge_dev and set bridge_mtu to it; avoids weird resets
retcode, stdout, stderr = common.run_os_command(f"ip -json link show dev {config_networks['bridge_dev']}")
current_bridge_mtu = loads(stdout)[0]['mtu']
print(f"Config key bridge_mtu not explicitly set; using live MTU {current_bridge_mtu} from {config_networks['bridge_dev']}")
config_networks['bridge_mtu'] = current_bridge_mtu
for network_type in ['cluster', 'storage', 'upstream']: for network_type in ['cluster', 'storage', 'upstream']:
result, msg = validate_floating_ip(config, network_type) result, msg = validate_floating_ip(config, network_type)
if not result: if not result: