From 6a4bbd9517bf08ee3a8ffa929481139159c2b146 Mon Sep 17 00:00:00 2001 From: Packit Service Date: Feb 24 2021 15:30:28 +0000 Subject: Apply patch BZ_1858762-hide_ovs_patch_port_mtu.patch patch_name: BZ_1858762-hide_ovs_patch_port_mtu.patch present_in_specfile: true location_in_specfile: 1 --- diff --git a/libnmstate/nm/applier.py b/libnmstate/nm/applier.py index 4e20af5..a91cee5 100644 --- a/libnmstate/nm/applier.py +++ b/libnmstate/nm/applier.py @@ -17,9 +17,11 @@ # along with this program. If not, see . # +from distutils.version import StrictVersion import logging import itertools +from libnmstate.error import NmstateNotSupportedError from libnmstate.error import NmstateValueError from libnmstate.schema import Interface from libnmstate.schema import InterfaceState @@ -65,6 +67,17 @@ MASTER_IFACE_TYPES = ( def apply_changes(context, net_state, save_to_disk): con_profiles = [] + if ( + not save_to_disk + and _has_ovs_interface_desired_or_changed(net_state) + and StrictVersion(context.client.get_version()) + < StrictVersion("1.28.0") + ): + raise NmstateNotSupportedError( + f"NetworkManager version {context.client.get_version()} does not " + f"support 'save_to_disk=False' against OpenvSwitch interface" + ) + _preapply_dns_fix(context, net_state) ifaces_desired_state = net_state.ifaces.state_to_edit @@ -602,3 +615,13 @@ def _preapply_dns_fix(context, net_state): for iface in net_state.ifaces.values(): if iface.is_changed or iface.is_desired: iface.remove_dns_metadata() + + +def _has_ovs_interface_desired_or_changed(net_state): + for iface in net_state.ifaces.values(): + if iface.type in ( + InterfaceType.OVS_BRIDGE, + InterfaceType.OVS_INTERFACE, + InterfaceType.OVS_PORT, + ) and (iface.is_desired or iface.is_changed): + return True diff --git a/libnmstate/nm/wired.py b/libnmstate/nm/wired.py index 27d4318..64662ac 100644 --- a/libnmstate/nm/wired.py +++ b/libnmstate/nm/wired.py @@ -124,7 +124,9 @@ def get_info(device): iface = device.get_iface() try: - info[Interface.MTU] = int(device.get_mtu()) + mtu = int(device.get_mtu()) + if mtu: + info[Interface.MTU] = mtu except AttributeError: pass