Bug 2180346

Summary: Rollback deactivated some ovs interfaces
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.2CC: ferferna, jiji, jishi, network-qe, sfaye, till
Target Milestone: rcKeywords: MigratedToJIRA, Triaged
Target Release: ---   
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:23 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:
Attachments:
Description Flags
nmstate.log none

Description Mingyu Shi 2023-03-21 09:02:30 UTC
Created attachment 1952292 [details]
nmstate.log

Description of problem:
Applied a state without commit, after rollback on timeout,some ovs interfaces were deactivated.


Version-Release number of selected component (if applicable):
nmstate-2.2.8-0.bz2156386.el9_2.x86_64
nispor-1.2.10-1.el9.x86_64
NetworkManager-1.42.2-1.el9.x86_64
openvswitch2.15-2.15.0-81.el9fdp.x86_64
DISTRO=RHEL-9.2.0-20230319.13


How reproducible:
100%

Steps to Reproduce:
echo "
interfaces:
- name: ovsbr0
  type: ovs-bridge
  state: up
  bridge:
    options:
      datapath: netdev
    port:
    - name: ovs0
    - name: dpdkbond0
      link-aggregation:
        mode: balance-slb
        port:
        - name: dpdk0
        - name: dpdk1
- name: dpdk0
  type: ovs-interface
  state: up
  dpdk:
    devargs: 0000:3b:00.0
    n_rxq: 100
    n_rxq_desc: 1024
    n_txq_desc: 2048
  mtu: 3000
- name: dpdk1
  type: ovs-interface
  state: up
  dpdk:
    devargs: 0000:3b:00.1
    rx-queue: 100
    n_rxq_desc: 1024
    n_txq_desc: 2048
  mtu: 3000
- name: ovs0
  type: ovs-interface
  state: up
" | nmstatectl apply

# change mtu to 2000 with --no-commit
echo "
---
interfaces:
- name: ovsbr0
  type: ovs-bridge
  state: up
  bridge:
    options:
      datapath: netdev
    port:
    - name: ovs0
    - name: dpdkbond0
      link-aggregation:
        mode: balance-slb
        port:
        - name: dpdk0
        - name: dpdk1
- name: dpdk0
  type: ovs-interface
  state: up
  dpdk:
    devargs: 0000:3b:00.0
    n_rxq: 100
    n_rxq_desc: 1024
    n_txq_desc: 2048
  mtu: 2000
- name: dpdk1
  type: ovs-interface
  state: up
  dpdk:
    devargs: 0000:3b:00.1
    rx-queue: 100
    n_rxq_desc: 1024
    n_txq_desc: 2048
  mtu: 2000
- name: ovs0
  type: ovs-interface
  state: up
" | nmstatectl apply --no-commit --timeout 10
sleep 15
ovs-vsctl show
nmcli con

Actual results:
Some ovs interfaces were removed after rollback
According to my test, the rollback result may vary, sometimes partially and sometimes all removed. In this attachment, it removed all

Expected results:
Rollback to the previous state without any changes

Additional info:
Test with i40e card on dell-per740-80.rhts.eng.pek2.redhat.com