Bug 2179076

Summary: nmstate 1.3 and 1.4 - typo in _SUPPORTED_FEA.TURES
Product: Red Hat Enterprise Linux 8 Reporter: Andreas Karis <akaris>
Component: nmstateAssignee: Gris Ge <fge>
Status: VERIFIED --- QA Contact: Mingyu Shi <mshi>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.7CC: ferferna, jiji, jishi, network-qe, sfaye, till
Target Milestone: rcKeywords: Triaged
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: nmstate-1.4.3-1.el8 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Andreas Karis 2023-03-16 15:15:44 UTC
Description of problem:
I know it's an old version of nmstate, but OCP 4.12 is still using nmstate 1.3.3

Version-Release number of selected component (if applicable):
nmstate 1.3.3 and 1.4

How reproducible:
all the time

Additional info:

Apply this nmstate configuration:
{code}
[akaris@linux gro]$ cat nmstate.yaml 
apiVersion: nmstate.io/v1
kind: NodeNetworkConfigurationPolicy
metadata:
  name: eno8403np1-gro
spec:
  nodeSelector: 
    node-role.kubernetes.io/worker: "" 
  maxUnavailable: 1
  desiredState:
    interfaces:
      - name: eno8403np1
        description: eno8403np1
        type: ethernet
        state: up
        ipv4:
          enabled: false
        ipv6:
          enabled: false
        ethtool:
          fea.ture:
            gro: off
      - name: bond-eno8403
        type: bond
        state: up
        ipv4:
          address:
          - ip: 192.168.125.10
            prefix-length: 24
          enabled: true
        link-aggregation:
          mode: balance-rr
          options:
            miimon: '140'
          port:
          - eno8403np1
        ethtool:
          fea.ture:
            gro: off
{code}

Result:
{code}
libnmstate.error.NmstateValueError
  The fea.ture rx-gro is not supported.
(...)
Traceback (most recent call last):
  File \"/usr/bin/nmstatectl\", line 11, in <module>
    load_entry_point('nmstate==1.3.3', 'console_scripts', 'nmstatectl')()
  File \"/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py\", line 74, in main
    return args.func(args)
  File \"/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py\", line 338, in set
    return apply(args)
  File \"/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py\", line 366, in apply
    args.save_to_disk,
  File \"/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py\", line 419, in apply_state
    save_to_disk=save_to_disk,
  File \"/usr/lib/python3.6/site-packages/libnmstate/netapplier.py\", line 86, in apply
    desired_state, ignored_ifnames, current_state, save_to_disk
  File \"/usr/lib/python3.6/site-packages/libnmstate/net_state.py\", line 51, in __init__
    gen_conf_mode,
  File \"/usr/lib/python3.6/site-packages/libnmstate/ifaces/ifaces.py\", line 163, in __init__
    iface.pre_edit_validation_and_cleanup()
  File \"/usr/lib/python3.6/site-packages/libnmstate/ifaces/base_iface.py\", line 265, in pre_edit_validation_and_cleanup
    self.ethtool.pre_edit_validation_and_cleanup()
  File \"/usr/lib/python3.6/site-packages/libnmstate/ifaces/ethtool.py\", line 98, in pre_edit_validation_and_cleanup
    self._validate_ethtool_supported_fea.tures()
  File \"/usr/lib/python3.6/site-packages/libnmstate/ifaces/ethtool.py\", line 105, in _validate_ethtool_supported_fea.tures
    f\"The fea.ture {fea.ture_name} is not supported.\"
libnmstate.error.NmstateValueError: The fea.ture rx-gro is not supported.
{code}

This is just a typo and can easily be fixed with:
{code}
[akaris@linux nmstate ((3183fbde...))]$ git diff
diff --git a/libnmstate/ifaces/ethtool.py b/libnmstate/ifaces/ethtool.py
index 48f90f18..9b7cfd96 100644
--- a/libnmstate/ifaces/ethtool.py
+++ b/libnmstate/ifaces/ethtool.py
@@ -169,7 +169,7 @@ class IfaceEthtoolFea.ture:
         "rx-checksum",
         "tx-scatter-gather",
         "tx-tcp-segmentation",
-        "tx-gro",
+        "rx-gro",
         "tx-generic-segmentation",
         "rx-hashing",
         "rx-lro",
diff --git a/libnmstate/nispor/base_iface.py b/libnmstate/nispor/base_iface.py
index beeb176b..92389850 100644
--- a/libnmstate/nispor/base_iface.py
+++ b/libnmstate/nispor/base_iface.py
@@ -214,7 +214,7 @@ class EthtoolInfo:
         "rx-checksum",
         "tx-scatter-gather",
         "tx-tcp-segmentation",
-        "tx-gro",
+        "rx-gro",
         "tx-generic-segmentation",
         "rx-hashing",
         "rx-lro",
{code}

Comment 3 Andreas Karis 2023-03-20 09:37:03 UTC
https://github.com/nmstate/nmstate/pull/2278 merged upstream, so it's only a matter of pulling the fix into the downstream RHEL 8 RPM

Comment 5 Andreas Karis 2023-03-20 09:39:56 UTC
note I had to replace feat with fea.t in the bz description to make the rule engine happy

Comment 6 Gris Ge 2023-03-20 11:09:05 UTC
Upstream patch has been merged: https://github.com/nmstate/nmstate/pull/2274

Comment 7 Gris Ge 2023-03-20 11:18:13 UTC
Nmstate in RHEL 9.2 does not have this problem.

Comment 14 Mingyu Shi 2023-04-10 08:43:21 UTC
Verified with:
nmstate-1.4.3-1.el8.x86_64
nispor-1.2.10-1.el8.x86_64
NetworkManager-1.40.16-2.el8.x86_64
DISTRO=RHEL-8.9.0-20230409.25