neutron/neutron/tests/unit/plugins/ml2/drivers
Rodolfo Alonso Hernandez 50ffa5173d [OVS] Handle added/removed ports in the same polling iteration
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.

Change-Id: I51eef168fa8c18a3e4cee57c9ff86046ea9203fd
Closes-Bug: #1845161
2019-12-05 17:39:55 +00:00
..
agent Start enforcing E125 flake8 directive 2019-07-19 23:39:41 -04:00
l2pop Start enforcing E125 flake8 directive 2019-07-19 23:39:41 -04:00
linuxbridge Start enforcing E125 flake8 directive 2019-07-19 23:39:41 -04:00
macvtap Start enforcing E125 flake8 directive 2019-07-19 23:39:41 -04:00
mech_sriov SR-IOV: macvtap assigned vf check using sysfs 2019-11-11 17:13:00 +02:00
openvswitch [OVS] Handle added/removed ports in the same polling iteration 2019-12-05 17:39:55 +00:00
__init__.py Reorganize unit test tree 2015-04-06 23:28:31 +00:00
base_type_tunnel.py Use network segment ranges for segment allocation 2019-03-09 22:04:20 +00:00
ext_test.py Revert "Revert "objects: get, update and delete converted to Subnet OVO usage"" 2017-12-01 16:45:50 +07:00
mech_fake_agent.py Check mech driver connectivity during port binding 2019-09-11 07:05:54 +00:00
mech_faulty_agent.py Exit on failure to load mechanism drivers 2017-04-11 09:56:08 -05:00
mechanism_logger.py Rehome provider_network_attribute_updates_supported to API definition 2019-04-24 14:21:13 +00:00
mechanism_test.py Fix update of network's segmentation id 2019-06-14 10:44:30 +02:00
test_helpers.py Use network segment ranges for segment allocation 2019-03-09 22:04:20 +00:00
test_type_flat.py remove neutron.common.exceptions 2019-02-01 14:35:00 -07:00
test_type_geneve.py Use network segment ranges for segment allocation 2019-03-09 22:04:20 +00:00
test_type_gre.py Use network segment ranges for segment allocation 2019-03-09 22:04:20 +00:00
test_type_local.py use plugin constants from neutron-lib 2017-10-16 09:32:20 -06:00
test_type_vlan.py Fix creation of vlan network with segmentation_id set to 0 2019-08-30 22:32:19 +02:00
test_type_vxlan.py Use network segment ranges for segment allocation 2019-03-09 22:04:20 +00:00