Bug 1852604

Summary: Since implementation of uplink_status_propgation, default behavior changed for VF link propgation from auto to disabled
Product: Red Hat OpenStack Reporter: David Hill <dhill>
Component: python-neutron-libAssignee: Rodolfo Alonso <ralonsoh>
Status: CLOSED ERRATA QA Contact: nlevinki <nlevinki>
Severity: low Docs Contact:
Priority: low    
Version: 16.0 (Train)CC: amuller, apevec, aruffin, chrisw, jjoyce, jschluet, lhh, mgarciac, nchandek, ralonsoh, scohen
Target Milestone: ---Keywords: Triaged
Target Release: ---   
Hardware: x86_64   
OS: All   
Whiteboard:
Fixed In Version: python-neutron-lib-1.29.1-0.20200310214055.4ef4b71.el8ost Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2020-10-28 15:38:12 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:
Bug Depends On:    
Bug Blocks: 1476900, 1500557, 1734490    

Description David Hill 2020-06-30 20:36:45 UTC
Description of problem:
Since implementation of uplink_status_propgation, default behavior changed for VF link propgation from auto to disabled

So basically, before we were not setting the propagate_uplink_state and now we are:
~~~
def set_device_state(self, pci_slot, state):
        """Set device state.

        @param pci_slot: Virtual Function address
        @param state: link state
        """
        vf_index = self._get_vf_index(pci_slot)
        return self.pci_dev_wrapper.set_vf_state(vf_index, state)

~~~
to
~~~
def set_device_state(self, pci_slot, state, propagate_uplink_state):
        """Set device state.

        @param pci_slot: Virtual Function address
        @param state: link state
        """
        vf_index = self._get_vf_index(pci_slot)
        return self.pci_dev_wrapper.set_vf_state(vf_index, state,
                                                 auto=propagate_uplink_state)

~~~

And set_vf_state went from:
~~~
    def set_vf_state(self, vf_index, state):
        """sets vf state.

        @param vf_index: vf index
        @param state: required state {True/False}
        """
        status_str = self.LinkState.ENABLE if state else \
            self.LinkState.DISABLE
        self._set_feature(vf_index, "state", status_str)
~~~

to:
~~~
    def set_vf_state(self, vf_index, state, auto=False):
        """sets vf state.

        @param vf_index: vf index
        @param state: required state {True: enable (1)
                                      False: disable (2)}
        @param auto: set link_state to auto (0)
        """
        ip = self.device(self.dev_name)
        if auto:
            link_state = 0
        else:
            link_state = 1 if state else 2
        vf_config = {'vf': vf_index, 'link_state': link_state}
        ip.link.set_vf_feature(vf_config)
~~~

Can we make this either configurable through configuration files or revert to the default behavior of "auto" ?

Comment 11 errata-xmlrpc 2020-10-28 15:38:12 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory (Red Hat OpenStack Platform 16.1 bug fix and enhancement advisory), and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2020:4284

Comment 12 Rodolfo Alonso 2020-12-15 14:35:46 UTC
*** Bug 1905791 has been marked as a duplicate of this bug. ***