neutron/neutron
Rodolfo Alonso Hernandez aaf87aeb55 [OVS][FW] Remote SG IDs left behind when a SG is removed
When any port in the OVS agent is using a security groups (SG) and
this SG is removed, is marked to be deleted. This deletion process
is done in [1].

The SG deletion process consists on removing any reference of this SG
from the firewall and the SG port map. The firewall removes this SG in
[2].

The information of a SG is stored in:
* ConjIPFlowManager.conj_id_map = ConjIdMap(). This class stores the
  conjunction IDS (conj_ids) in a dictionary using the following keys:

    ConjIdMap.id_map[(sg_id, remote_sg_id, direction, ethertype,
      conj_ids)] = conj_id_XXX

* ConjIPFlowManager.conj_ids is a nested dictionary, built in the
  following way:

    self.conj_ids[vlan_tag][(direction, ethertype)][remote_sg_id] = \
      set([conj_id_1, conj_id_2, ...])

This patch stores all conjuntion IDs generated and assigned to the
tuple (sg_id, remote_sg_id, direction, ethertype). When a SG is
removed, the deletion method will look for this SG in the new storage
variable created, ConjIdMap.id_map_group, and will mark all the
conjuntion IDs related to be removed. That will cleanup those rules
left in the OVS matching:
  action=conjunction(conj_id, 1/2)

[1]118930f03d/neutron/agent/linux/openvswitch_firewall/firewall.py (L731)
[2]118930f03d/neutron/agent/linux/openvswitch_firewall/firewall.py (L399)

Conflicts:
      neutron/tests/unit/agent/linux/openvswitch_firewall/test_firewall.py

Change-Id: I63e446a30cf10e7bcd34a6f0d6ba1711301efcbe
Related-Bug: #1881157
(cherry picked from commit 0eebd002cc)
(cherry picked from commit ed22f7a2ff)
(cherry picked from commit 6615f248e2)
2020-08-21 09:55:56 +00:00
..
agent [OVS][FW] Remote SG IDs left behind when a SG is removed 2020-08-21 09:55:56 +00:00
api [Security] fix allowed-address-pair 0.0.0.0/0 issue 2020-07-31 11:23:01 +00:00
cmd Fix Traceback when running neutron-ipset-cleanup tool 2020-07-31 11:04:34 +00:00
common Fix queries to retrieve allocations with network_segment_range 2020-04-30 11:00:41 +00:00
conf Merge "Add config option ``http_retries``" into stable/stein 2020-07-17 05:41:44 +00:00
core_extensions remove neutron.common.exceptions 2019-02-01 14:35:00 -07:00
db Merge "[Security] fix allowed-address-pair 0.0.0.0/0 issue" into stable/stein 2020-08-07 05:28:36 +00:00
debug Remove deprecated 'external_network_bridge' option 2019-03-09 22:07:38 +00:00
extensions Fix resource schemas and releated `get_sorts` test cases 2020-01-31 17:30:08 +00:00
hacking remove neutron.db.api references 2019-03-05 09:14:50 -07:00
ipam Allow first address in an IPv6 subnet as valid unicast 2019-05-22 14:13:31 +00:00
locale Imported Translations from Zanata 2020-01-10 09:16:24 +00:00
notifiers Add config option ``http_retries`` 2020-07-09 12:13:53 +02:00
objects Default (shared) network segment range is not mandatory 2020-05-04 14:02:23 +00:00
pecan_wsgi Set DB retry for quota_enforcement pecan_wsgi hook 2019-11-21 06:38:33 +00:00
plugins Don't check if any bridges were recrected when OVS was restarted 2020-08-03 09:48:07 +00:00
privileged Merge "Kill all processes running in a namespace before deletion" into stable/stein 2020-05-07 20:35:41 +00:00
quota Set DB retry for quota_enforcement pecan_wsgi hook 2019-11-21 06:38:33 +00:00
scheduler Fix pep8 E128 warnings in non-test code 2019-03-12 21:22:33 +00:00
server Re-use existing ProcessLauncher from wsgi in RPC workers 2020-02-19 07:58:54 +00:00
services Optionally use admin powers when deleting DNS records 2020-07-13 11:32:03 +00:00
tests [OVS][FW] Remote SG IDs left behind when a SG is removed 2020-08-21 09:55:56 +00:00
__init__.py Fix incorrect usage of '# flake8: noqa' 2018-10-29 15:27:50 -04:00
_i18n.py Make code follow log translation guideline 2017-08-14 02:01:48 +00:00
auth.py Use oslo.context class method to construct context object 2017-03-23 09:02:46 +00:00
manager.py Avoid loading same service plugin more than once 2019-02-21 11:17:02 +01:00
neutron_plugin_base_v2.py Do not load default service plugins if core plugin is not DB based 2017-11-09 20:34:52 +00:00
opts.py No rpc_response_max_timeout in LB-agent 2020-06-22 05:51:34 +00:00
policy.py List SG rules which belongs to tenant's SG 2020-01-16 08:57:01 +00:00
service.py Re-use existing ProcessLauncher from wsgi in RPC workers 2020-02-19 07:58:54 +00:00
version.py
worker.py Change process name of neutron-server to match worker role 2019-03-01 14:18:09 -05:00
wsgi.py Re-use existing ProcessLauncher from wsgi in RPC workers 2020-02-19 07:58:54 +00:00