neutron/neutron/tests/unit
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 Merge "[OVS FW] Clean port rules if port not found in ovsdb" 2019-12-02 18:59:05 +00:00
api use objects common_types from neutron-lib 2019-11-26 15:34:18 +01:00
cmd Add upgrade check for NIC Switch agent 2019-12-01 11:58:16 +02:00
common "round" with ndigits=None returns an integer 2019-10-29 15:06:49 +00:00
conf/agent Agent common config 2017-03-15 09:52:18 -06:00
core_extensions remove neutron.common.exceptions 2019-02-01 14:35:00 -07:00
db [OVN] Add revision number methods 2019-12-04 11:16:25 +00:00
debug Remove deprecated 'external_network_bridge' option 2019-03-09 22:07:38 +00:00
extensions Update security group rule if port range is all ports 2019-10-31 14:48:47 +00:00
hacking remove string use of neutron.common.rpc 2019-02-08 09:40:39 -07:00
ipam Start enforcing E125 flake8 directive 2019-07-19 23:39:41 -04:00
notifiers Mock openstacksdk raise_from_response in ironic unit test 2019-10-15 10:36:49 +02:00
objects Merge "Serialize subnet creating depending on the network ID" 2019-12-03 16:16:28 +00:00
pecan_wsgi Removing deprecated module neutron.api.versions 2018-03-28 14:15:50 +07:00
plugins [OVS] Handle added/removed ports in the same polling iteration 2019-12-05 17:39:55 +00:00
privileged Do not use exceptions in get_link_id() to control the code flow 2019-10-25 16:28:37 +00:00
quota use get reader/writer session from neutron-lib 2018-07-06 14:43:31 -06:00
scheduler Add binding_index to NetworkDhcpAgentBinding 2019-08-29 12:52:07 +04:00
services Remove Neutron LBaaS 2019-09-20 07:46:06 +00:00
tests Start enforcing E125 flake8 directive 2019-07-19 23:39:41 -04:00
__init__.py Don't set use_stderr to False for tests 2017-04-15 01:41:29 +00:00
_test_extension_portbindings.py Remove the unit test 'test_ports_vnic_type_list' 2018-06-15 15:12:10 +00:00
dummy_plugin.py Remove Neutron LBaaS 2019-09-20 07:46:06 +00:00
extension_stubs.py Consume ServicePluginBase from neutron-lib 2017-03-17 12:06:57 -06:00
test_auth.py Fix context deprecation warnings 2018-02-13 15:02:49 -05:00
test_manager.py Remove Neutron LBaaS 2019-09-20 07:46:06 +00:00
test_neutron_plugin_base_v2.py Add unit test to validate non DB base core plugin can be loaded 2017-11-15 21:21:35 +00:00
test_opts.py Fix the sriov agent config group name 2016-05-05 16:16:08 +08:00
test_policy.py Fix handling of network:shared field in policy module 2019-05-07 11:31:25 +02:00
test_service.py fix test nit 2019-08-04 12:31:46 +08:00
test_worker.py Move AgentStatusCheckWorker to PeriodicWorker 2016-11-17 15:31:19 -08:00
test_wsgi.py Merge "Stop testing python 2" 2019-10-28 00:52:16 +00:00
testlib_api.py use SqlFixture and StaticSqlFixture from neutron-lib 2019-07-08 11:26:34 -06:00