This bug has been migrated to another issue tracking site. It has been closed here and may no longer be being monitored.

If you would like to get updates for this issue, or to participate in it, you may do so at Red Hat Issue Tracker .
Bug 2293894 - ovs_extra option for ovs-dpdk-bond is extended twice.
Summary: ovs_extra option for ovs-dpdk-bond is extended twice.
Keywords:
Status: CLOSED MIGRATED
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: os-net-config
Version: 17.1 (Wallaby)
Hardware: x86_64
OS: Linux
low
medium
Target Milestone: ---
: ---
Assignee: Karthik Sundaravel
QA Contact: Eran Kuris
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2024-06-24 06:53 UTC by Keigo Noha
Modified: 2025-05-24 04:25 UTC (History)
8 users (show)

Fixed In Version:
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2024-12-10 15:50:58 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github os-net-config os-net-config pull 117 0 None Merged ifcfg: Remove duplicate ovs_extra for DPDK bond 2024-12-11 19:20:53 UTC
Red Hat Issue Tracker   OSP-32370 0 None None None 2025-01-23 16:29:43 UTC
Red Hat Issue Tracker OSP-33176 0 None None None 2024-12-10 15:51:23 UTC

Description Keigo Noha 2024-06-24 06:53:55 UTC
Description of problem:
ovs_extra option for ovs-dpdk-bond is extended twice.
Due to that, the same command executed to OVS DPDK bond twice.
This duplication is unnecessary. We should remove it.

Version-Release number of selected component (if applicable):
OSP17.1

How reproducible:
Always when os-net-config runs.

Steps to Reproduce:
1. Set ovs_extra for OVS DPDK Bond like below.
~~~
  members:
  - type: ovs_dpdk_bond
    name: dpdkbond-tenant1
    ovs_extra:
    - set interface dpdkbond-tenant1-port0 options:dpdk-lsc-interrupt=true
    - set interface dpdkbond-tenant1-port1 options:dpdk-lsc-interrupt=true
~~~
2. Run os-net-config with verbose mode.
3.

Actual results:
The command assigned at ovs_extra executed twice per line.

Expected results:
THe command assigned at ovs_extra executed once per line.

Additional info:
This behavior seems to come from the following implementation.

- os_net_config/impl_ifcfg.py

~~~
    626         elif isinstance(base_opt, objects.OvsDpdkBond):
    627             ovs_extra.extend(base_opt.ovs_extra)
    628             # Referring to bug:1643026, the below commenting of the interfaces,
    629             # is to workaround the error, but is not the long term solution.
    630             # The long term solution is to run DPDK options before
    631             # os-net-config, which is being tracked at BUG:1654975
    632             # if base_opt.primary_interface_name:
    633             #    primary_name = base_opt.primary_interface_name
    634             #    self.bond_primary_ifaces[base_opt.name] = primary_name
    635             data += "DEVICETYPE=ovs\n"
    636             data += "TYPE=OVSDPDKBond\n"
    637             data += "OVS_BRIDGE=%s\n" % base_opt.bridge_name
    638             if base_opt.members:
    639                 for bond_member in base_opt.members:
    640                     # Validation of DPDK port having only one interface is done
    641                     # prior to this. So accesing the interface name statically.
    642                     # Also dpdk_devargs would be valid here, since
    643                     # bind_dpdk_interfaces () is invoked before this.
    644                     dpdk_devargs = utils.get_dpdk_devargs(
    645                         bond_member.members[0].name, self.noop)
    646                     ovs_extra.append("set Interface %s options:"
    647                                      "dpdk-devargs=%s"
    648                                      % (bond_member.name, dpdk_devargs))
    649                 members = [member.name for member in base_opt.members]
    650                 data += ("BOND_IFACES=\"%s\"\n" % " ".join(members))
    651                 # MTU configuration given for the OvsDpdkbond shall be applied
    652                 # to each of the members of the OvsDpdkbond
    653                 if base_opt.mtu:
    654                     for member in base_opt.members:
    655                         ovs_extra.append("set Interface %s mtu_request=$MTU" %
    656                                          member.name)
    657                 if base_opt.rx_queue:
    658                     data += "RX_QUEUE=%i\n" % base_opt.rx_queue
    659                     for member in base_opt.members:
    660                         ovs_extra.append("set Interface %s options:n_rxq="
    661                                          "$RX_QUEUE" % member.name)
    662             if base_opt.ovs_options:
    663                 data += "OVS_OPTIONS=\"%s\"\n" % base_opt.ovs_options
    664             ovs_extra.extend(base_opt.ovs_extra)
~~~
At line 627 and 664 runs ovs_extra.extend(base_opt.ovs_extra).
This creates the duplicated entries.

Comment 6 Red Hat Bugzilla 2025-05-24 04:25:03 UTC
The needinfo request[s] on this closed bug have been removed as they have been unresolved for 120 days


Note You need to log in before you can comment on or make changes to this bug.