Bug 2214511

Summary: Failed to when "controller" option and controller interface are both mentioned
Product: Red Hat Enterprise Linux 9 Reporter: Mingyu Shi <mshi>
Component: nmstateAssignee: Gris Ge <fge>
Status: CLOSED MIGRATED QA Contact: Mingyu Shi <mshi>
Severity: medium Docs Contact:
Priority: medium    
Version: 9.3CC: ferferna, jiji, jishi, network-qe, prpatel, sfaye, till
Target Milestone: rcKeywords: MigratedToJIRA, Triaged
Target Release: ---Flags: pm-rhel: mirror+
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2023-08-17 09:59:38 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 2023-06-13 07:52:32 UTC
Description of problem:
Failed to when "controller" option and controller interface are both mentioned.
Check the reproducer below, if mentioned "controller: br0" in bond0 interface and contains controller(interfaces.br0) in the desired state, it failed.

My scenario is:
(Already configured bond0 and br0)
1. I requested the full state of bond0 and br0
2. Changed some values(didn't care about the other items)
3. Tried applying the edited state.
It failed since the full state I got in step 1 contains "controller"(I didn't need it, but I didn't care about it neither) 

Version-Release number of selected component (if applicable):
nmstate-2.2.12-2.el9.x86_64
nispor-1.2.10-1.el9.x86_64
NetworkManager-1.43.9-1.el9.x86_64
openvswitch2.15-2.15.0-82.el9fdp.x86_64
DISTRO=RHEL-9.3.0-updates-20230611.28

How reproducible:
100%

Steps to Reproduce:
echo "
interfaces:
- name: bond0
  type: bond
  state: up
  controller: br0
  link-aggregation:
    mode: balance-rr
- name: br0
  type: ovs-bridge
  state: up
  bridge:
    port:
    - name: bond0
" | nmstatectl apply

Actual results:
NmstateError: InvalidArgument: Interface bond0 has controller br0 but not listed in port list of controller interface

Expected results:
No failure

Additional info:
Replaced br0 type as "linux-bridge", got the same failure.
Removing "controller: br0" or "br0.bridge.port" works