From 8afe3beb7fcf86bff09057b56975adb0cf8c8eb4 Mon Sep 17 00:00:00 2001 From: Brian Haley Date: Tue, 6 Feb 2018 12:16:09 -0500 Subject: [PATCH] Fix iptables rule removal warnings from QoS extension Since iptables chain removal "cascades", it will remove rules in other chains that jump to it. Because of this, there is no need to explicitly remove these jump rules, as it will just generate a warning of the type: "Tried to remove rule that was not there". Trivialfix Change-Id: I0638562400f3bcac689d94eb2a44eae9d2890782 --- .../linuxbridge/agent/extension_drivers/qos_driver.py | 8 ++------ .../agent/extension_drivers/test_qos_driver.py | 3 --- 2 files changed, 2 insertions(+), 9 deletions(-) diff --git a/neutron/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/qos_driver.py b/neutron/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/qos_driver.py index 4003220ea5d..e04a061b3a5 100644 --- a/neutron/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/qos_driver.py +++ b/neutron/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/qos_driver.py @@ -142,16 +142,12 @@ class QosLinuxbridgeAgentDriver(qos.QosLinuxAgentDriver): def _delete_outgoing_qos_chain_for_port(self, port): chain_name = self._dscp_chain_name( const.EGRESS_DIRECTION, port['device']) - chain_rule = self._dscp_rule( - const.EGRESS_DIRECTION, port['device']) + # Iptables chain removal "cascades", and will remove rules in + # other chains that jump to it, like those added above. if self._qos_chain_is_empty(port, 4): self.iptables_manager.ipv4['mangle'].remove_chain(chain_name) - self.iptables_manager.ipv4['mangle'].remove_rule('POSTROUTING', - chain_rule) if self._qos_chain_is_empty(port, 6): self.iptables_manager.ipv6['mangle'].remove_chain(chain_name) - self.iptables_manager.ipv6['mangle'].remove_rule('POSTROUTING', - chain_rule) def _set_dscp_mark_rule(self, port, dscp_value): chain_name = self._dscp_chain_name( diff --git a/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/test_qos_driver.py b/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/test_qos_driver.py index ba85b70610e..7aead77b8a5 100644 --- a/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/test_qos_driver.py +++ b/neutron/tests/unit/plugins/ml2/drivers/linuxbridge/agent/extension_drivers/test_qos_driver.py @@ -242,9 +242,6 @@ class QosLinuxbridgeAgentDriverTestCase(base.BaseTestCase): self._dscp_rule_tag(self.port['device'])), mock.call.remove_chain( dscp_chain_name), - mock.call.remove_rule( - "POSTROUTING", - self._dscp_postrouting_rule(self.port['device'])) ] with mock.patch.object( self.qos_driver, "iptables_manager") as iptables_manager: