Uploaded image for project: 'Red Hat OpenStack Services on OpenShift'
  1. Red Hat OpenStack Services on OpenShift
  2. OSPRH-12457

ovs_extra option for ovs-dpdk-bond is extended twice.

XMLWordPrintable

    • 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.

              natejohnston Nate Johnston
              jira-bugzilla-migration RH Bugzilla Integration
              Eran Kuris Eran Kuris
              rhos-dfg-nfv
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

                Created:
                Updated:
                Resolved: