Bug 1893938

Summary: ignore mac of vrf interface
Product: Red Hat Enterprise Linux 8 Reporter: Mingyu Shi <mshi>
Component: nmstateAssignee: Gris Ge <fge>
Status: CLOSED ERRATA QA Contact: Mingyu Shi <mshi>
Severity: medium Docs Contact:
Priority: medium    
Version: 8.4CC: ferferna, jiji, jishi, network-qe, till
Target Milestone: rcKeywords: Triaged
Target Release: 8.4Flags: pm-rhel: mirror+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: nmstate-1.1.0-0.6.alpha6.el8 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2021-11-09 17:42:37 UTC 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 Mingyu Shi 2020-11-03 03:18:59 UTC
Description of problem:
nmstate cannot create a vrf with mac or change the mac of an existed vrf device. Though we can use 'ip link add vrf0 address $mac' to create a vrf with specific mac address, we cannot change it once it was created.
Consider such a scenario: user created a vrf(vrf0), in order to use it next time, e.g. rebooting, saved it by running 'nmstatectl show vrf0 > backup.yml'. Next time user tries to recovery this vrf environment, it will fail if he runs 'nmstatectl set backup.yml' directly as in the transaction it contains a mac address.

Version-Release number of selected component (if applicable):
nmstate-0.4.1-1.el8.noarch

How reproducible:
100%

Steps to Reproduce:
echo "interfaces:
- name: vrf1
  type: vrf
  state: up
  mac-address: 72:B3:5C:B1:68:92
  vrf:
    route-table-id: 101" | nmstatectl set - #cannot create with mac

echo "interfaces:
- name: vrf1
  type: vrf
  state: up
  vrf:
    route-table-id: 101" | nmstatectl set -
nmstatectl show vrf1 # can see a random mac

echo "interfaces:
- name: vrf1
  type: vrf
  state: up
  mac-address: 72:B3:5C:B1:68:92
  vrf:
    route-table-id: 101" | nmstatectl set - #cannot change the mac

Actual results:
Traceback (most recent call last):
  File "/usr/bin/nmstatectl", line 11, in <module>
    load_entry_point('nmstate==0.4.1', 'console_scripts', 'nmstatectl')()
  File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 70, in main
    return args.func(args)
  File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 269, in apply
    args.save_to_disk,
  File "/usr/lib/python3.6/site-packages/nmstatectl/nmstatectl.py", line 309, in apply_state
    save_to_disk=save_to_disk,
  File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 71, in apply
    _apply_ifaces_state(plugins, net_state, verify_change, save_to_disk)
  File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 115, in _apply_ifaces_state
    _verify_change(plugins, net_state)
  File "/usr/lib/python3.6/site-packages/libnmstate/netapplier.py", line 120, in _verify_change
    net_state.verify(current_state)
  File "/usr/lib/python3.6/site-packages/libnmstate/net_state.py", line 63, in verify
    self._ifaces.verify(current_state.get(Interface.KEY))
  File "/usr/lib/python3.6/site-packages/libnmstate/ifaces/ifaces.py", line 443, in verify
    cur_iface.state_for_verify(),
libnmstate.error.NmstateVerificationError: 
desired
=======
---
name: vrf1
type: vrf
state: up
mac-address: 72:B3:5C:B1:68:92
vrf:
  route-table-id: 101

current
=======
---
name: vrf1
type: vrf
state: up
ipv4:
  enabled: false
ipv6:
  enabled: false
lldp:
  enabled: false
mac-address: 16:72:99:B7:5D:1A
mtu: 65536
vrf:
  port: []
  route-table-id: 101

difference
==========
--- desired
+++ current
@@ -2,6 +2,14 @@
 name: vrf1
 type: vrf
 state: up
-mac-address: 72:B3:5C:B1:68:92
+ipv4:
+  enabled: false
+ipv6:
+  enabled: false
+lldp:
+  enabled: false
+mac-address: 16:72:99:B7:5D:1A
+mtu: 65536
 vrf:
+  port: []
   route-table-id: 101


Expected results:
Ignore the mac address of vrf

Additional info:

Comment 1 Gris Ge 2021-06-08 14:52:24 UTC
Instead of ignoring, we should support changing MAC address of vrf because `ip vrf exec <vrf_name> command` will need this MAC address.

Comment 2 Gris Ge 2021-06-22 14:40:46 UTC
Just checked. RHEL 8 kernel does not support changing VRF MAC address yet.
So let's ignore it.

Comment 3 Gris Ge 2021-06-23 07:03:13 UTC
Please do pre-verify via ` dnf copr enable packit/nmstate-nmstate-1650 `

Comment 6 Mingyu Shi 2021-07-06 03:44:04 UTC
Verified with versions:
nmstate-1.1.0-0.6.alpha6.el8.noarch
nispor-1.1.1-1.el8.x86_64
NetworkManager-1.32.0-1.el8.x86_64

Comment 8 errata-xmlrpc 2021-11-09 17:42:37 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (nmstate bug fix and enhancement update), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHBA-2021:4157