-
Bug
-
Resolution: Done-Errata
-
Minor
-
None
-
2
-
False
-
-
False
-
os-net-config-18.0.1-18.0.20241125091403.4a1adae
-
os-net-config-18.0.1-18.0.20241215115912.22b9a65.el9ost
-
rhos-dfg-nfv
-
None
-
-
-
NFV 001
-
1
-
Moderate
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.
- clones
-
OSPRH-12342 BZ#2293894 ovs_extra option for ovs-dpdk-bond is extended twice.
-
- Closed
-
- links to
-
RHBA-2025:144424 Release of components for RHOSO 18.0