ab8ad6f06d
The OVS agent processes the port events in a polling loop. It could happen (and more frequently in a loaded OVS agent) that the "removed" and "added" events can happen in the same polling iteration. Because of this, the same port is detected as "removed" and "added". When the virtual machine is restarted, the port event sequence is "removed" and then "added". When both events are captured in the same iteration, the port is already present in the bridge and the port is discharted from the "removed" list. Because the port was removed first and the added, the QoS policies do not apply anymore (QoS and Queue registers, OF rules). If the QoS policy does not change, the QoS agent driver will detect it and won't call the QoS driver methods (based on the OVS agent QoS cache, storing port and QoS rules). This will lead to an unconfigured port. This patch solves this issue by detecting this double event and registering it as "removed_and_added". When the "added" port is handled, the QoS deletion method is called first (if needed) to remove the unneded artifacts (OVS registers, OF rules) and remove the QoS cache (port/QoS policy). Then the QoS policy is applied again on the port. NOTE: this is going to be quite difficult to be tested in a fullstack test. Conflicts: neutron/plugins/ml2/drivers/openvswitch/agent/ovs_neutron_agent.py Change-Id: I51eef168fa8c18a3e4cee57c9ff86046ea9203fd Closes-Bug: #1845161 (cherry picked from commit |
||
---|---|---|
.. | ||
agent | ||
mech_driver | ||
__init__.py |