|
|
e3e53c |
From b1cb57d1dc4bba6592ba5cfc5c810a2ad19ac941 Mon Sep 17 00:00:00 2001
|
|
|
e3e53c |
From: Gris Ge <fge@redhat.com>
|
|
|
e3e53c |
Date: Thu, 22 Jul 2021 18:40:50 +0800
|
|
|
e6c094 |
Subject: [PATCH 2/4] nm ethtool: Preserve existing ethtool settings when
|
|
|
e3e53c |
undesired
|
|
|
e3e53c |
|
|
|
e3e53c |
When user does not define ethtool settings in desire state,
|
|
|
e3e53c |
we should preserve existing ethtool setting.
|
|
|
e3e53c |
|
|
|
e3e53c |
Integration test case included.
|
|
|
e3e53c |
|
|
|
e3e53c |
Signed-off-by: Gris Ge <fge@redhat.com>
|
|
|
e3e53c |
Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
|
|
|
e3e53c |
---
|
|
|
e3e53c |
libnmstate/nm/connection.py | 18 +++---------------
|
|
|
e3e53c |
libnmstate/nm/ethtool.py | 26 +++++++++++++++++++++++++-
|
|
|
e3e53c |
2 files changed, 28 insertions(+), 16 deletions(-)
|
|
|
e3e53c |
|
|
|
e3e53c |
diff --git a/libnmstate/nm/connection.py b/libnmstate/nm/connection.py
|
|
|
e3e53c |
index 5d60f6d..5a79c6f 100644
|
|
|
e3e53c |
--- a/libnmstate/nm/connection.py
|
|
|
e3e53c |
+++ b/libnmstate/nm/connection.py
|
|
|
e3e53c |
@@ -22,8 +22,6 @@
|
|
|
e3e53c |
import uuid
|
|
|
e3e53c |
|
|
|
e3e53c |
from libnmstate.error import NmstatePluginError
|
|
|
e3e53c |
-from libnmstate.ifaces import IfaceEthtool
|
|
|
e3e53c |
-from libnmstate.schema import Ethtool
|
|
|
e3e53c |
from libnmstate.schema import Interface
|
|
|
e3e53c |
from libnmstate.schema import InterfaceType
|
|
|
e3e53c |
from libnmstate.schema import LinuxBridge as LB
|
|
|
e3e53c |
@@ -240,19 +238,9 @@ def create_new_nm_simple_conn(iface, nm_profile):
|
|
|
e3e53c |
if iface.ieee_802_1x_conf:
|
|
|
e3e53c |
settings.append(create_802_1x_setting(iface.ieee_802_1x_conf))
|
|
|
e3e53c |
|
|
|
e3e53c |
- if Ethtool.CONFIG_SUBTREE in iface.original_desire_dict:
|
|
|
e3e53c |
- iface_ethtool = IfaceEthtool(
|
|
|
e3e53c |
- iface.original_desire_dict[Ethtool.CONFIG_SUBTREE]
|
|
|
e3e53c |
- )
|
|
|
e3e53c |
- iface_ethtool.canonicalize(
|
|
|
e3e53c |
- iface.original_desire_dict[Ethtool.CONFIG_SUBTREE]
|
|
|
e3e53c |
- )
|
|
|
e3e53c |
- setting = create_ethtool_setting(
|
|
|
e3e53c |
- iface_ethtool,
|
|
|
e3e53c |
- nm_profile,
|
|
|
e3e53c |
- )
|
|
|
e3e53c |
- if setting:
|
|
|
e3e53c |
- settings.append(setting)
|
|
|
e3e53c |
+ ethtool_setting = create_ethtool_setting(iface, nm_profile)
|
|
|
e3e53c |
+ if ethtool_setting:
|
|
|
e3e53c |
+ settings.append(ethtool_setting)
|
|
|
e3e53c |
|
|
|
e3e53c |
nm_simple_conn = NM.SimpleConnection.new()
|
|
|
e3e53c |
for setting in settings:
|
|
|
e3e53c |
diff --git a/libnmstate/nm/ethtool.py b/libnmstate/nm/ethtool.py
|
|
|
e3e53c |
index 466f4f9..3cad1bf 100644
|
|
|
e3e53c |
--- a/libnmstate/nm/ethtool.py
|
|
|
e3e53c |
+++ b/libnmstate/nm/ethtool.py
|
|
|
e3e53c |
@@ -22,6 +22,7 @@ import logging
|
|
|
e3e53c |
from .common import NM
|
|
|
e3e53c |
from .common import GLib
|
|
|
e3e53c |
|
|
|
e3e53c |
+from libnmstate.ifaces import IfaceEthtool
|
|
|
e3e53c |
from libnmstate.schema import Ethtool
|
|
|
e3e53c |
|
|
|
e3e53c |
|
|
|
e3e53c |
@@ -59,7 +60,7 @@ _NM_COALESCE_OPT_NAME_MAP = {
|
|
|
e3e53c |
}
|
|
|
e3e53c |
|
|
|
e3e53c |
|
|
|
e3e53c |
-def create_ethtool_setting(iface_ethtool, base_con_profile):
|
|
|
e3e53c |
+def _create_ethtool_setting(iface_ethtool, base_con_profile):
|
|
|
e3e53c |
nm_setting = None
|
|
|
e3e53c |
|
|
|
e3e53c |
if base_con_profile:
|
|
|
e3e53c |
@@ -159,3 +160,26 @@ def nm_set_pause(nm_setting, autoneg, rx, tx):
|
|
|
e3e53c |
tx_value,
|
|
|
e3e53c |
)
|
|
|
e3e53c |
# pylint: enable=no-member
|
|
|
e3e53c |
+
|
|
|
e3e53c |
+
|
|
|
e3e53c |
+def create_ethtool_setting(iface, base_con_profile):
|
|
|
e3e53c |
+ if Ethtool.CONFIG_SUBTREE in iface.original_desire_dict:
|
|
|
e3e53c |
+ iface_ethtool = IfaceEthtool(
|
|
|
e3e53c |
+ iface.original_desire_dict[Ethtool.CONFIG_SUBTREE]
|
|
|
e3e53c |
+ )
|
|
|
e3e53c |
+ iface_ethtool.canonicalize(
|
|
|
e3e53c |
+ iface.original_desire_dict[Ethtool.CONFIG_SUBTREE]
|
|
|
e3e53c |
+ )
|
|
|
e3e53c |
+ return _create_ethtool_setting(
|
|
|
e3e53c |
+ iface_ethtool,
|
|
|
e3e53c |
+ base_con_profile,
|
|
|
e3e53c |
+ )
|
|
|
e3e53c |
+ else:
|
|
|
e3e53c |
+ # Preserve existing setting but not create new
|
|
|
e3e53c |
+ if base_con_profile:
|
|
|
e3e53c |
+ ethtool_setting = base_con_profile.get_setting_by_name(
|
|
|
e3e53c |
+ NM.SETTING_ETHTOOL_SETTING_NAME
|
|
|
e3e53c |
+ )
|
|
|
e3e53c |
+ if ethtool_setting:
|
|
|
e3e53c |
+ return ethtool_setting.duplicate()
|
|
|
e3e53c |
+ return None
|
|
|
e3e53c |
--
|
|
|
e3e53c |
2.32.0
|
|
|
e3e53c |
|