Don't delete flows on ports which were on dead vlan during plug

Ocata codebase of the neutron agent deletes_flows
when a port has been tagged and already had a tag.

Later versions implement uninstall_flows to selectively delete
specific flows, but such patches are big and buggy (have several
follow up patches).

This prevents that the patch handling 1767422 will get the DSCP
flows deleted when port is tagged. Which is detected by functional
testing.

I have manually tested that setting a port admin_state_up False,
and then True, will correctly move the port into dead vlan, and
then back to non dead vlan, and properly remove the in_port=x,DROP
openflow rule regardless of this change.

Related: rhbz#1575706
Related-Bug: 1767422

Change-Id: Ib7915ae7bb7f471ff70ce25ce3beb16189ad5394
This commit is contained in:
Miguel Angel Ajo 2018-05-09 16:23:41 +02:00 committed by Miguel Angel Ajo
parent 70fad48add
commit e082336968
1 changed files with 2 additions and 1 deletions

View File

@ -828,7 +828,8 @@ class OVSNeutronAgent(sg_rpc.SecurityGroupAgentRpcCallbackMixin,
self.int_br.set_db_attribute(
"Port", port.port_name, "other_config", other_config)
# Uninitialized port has tag set to []
if cur_info['tag']:
if (cur_info['tag'] and
cur_info['tag'] != constants.DEAD_VLAN_TAG):
self.int_br.delete_flows(in_port=port.ofport)
def _bind_devices(self, need_binding_ports):