]> review.fuel-infra Code Review - openstack-build/neutron-build.git/commitdiff
Add abstractmethod to FirewallDriver abstract class
authorDariusz Smigiel (dasm) <dariusz.smigiel@intel.com>
Mon, 26 Oct 2015 11:12:38 +0000 (12:12 +0100)
committerDariusz Smigiel (dasm) <smigiel.dariusz@gmail.com>
Mon, 21 Dec 2015 09:31:25 +0000 (10:31 +0100)
FirewallDriver is abstract base class but do not have abstractmethods.
Updated methods to correspond with use-case of class.

Closes-bug: #1119119
Change-Id: I4b27b27d66c0b89cd9b65541cc1703103a2b00d2

neutron/agent/firewall.py
neutron/tests/unit/agent/test_securitygroups_rpc.py

index 04a327b21df66f01bd77898c2d6275592634d4ab..23d772159ab228f35891a748fa4f1489d299b517 100644 (file)
@@ -57,12 +57,12 @@ class FirewallDriver(object):
       remote_group_id will also remaining membership update management
     """
 
+    @abc.abstractmethod
     def prepare_port_filter(self, port):
         """Prepare filters for the port.
 
         This method should be called before the port is created.
         """
-        raise NotImplementedError()
 
     def apply_port_filter(self, port):
         """Apply port filter.
@@ -74,6 +74,7 @@ class FirewallDriver(object):
         """
         raise NotImplementedError()
 
+    @abc.abstractmethod
     def update_port_filter(self, port):
         """Refresh security group rules from data store
 
@@ -81,7 +82,6 @@ class FirewallDriver(object):
         the security group the port is a member of or if the
         group gains or looses a rule.
         """
-        raise NotImplementedError()
 
     def remove_port_filter(self, port):
         """Stop filtering port."""
index 7f63c31c8c7c186c5fd97182e010f97fa45852c2..ca496baf3b2fe1d081805c6e5afff60b23ff50f7 100644 (file)
@@ -68,6 +68,19 @@ def set_firewall_driver(firewall_driver):
                           group='SECURITYGROUP')
 
 
+class FakeFirewallDriver(firewall_base.FirewallDriver):
+    """Fake FirewallDriver
+
+    FirewallDriver is base class for other types of drivers. To be able to
+    use it in tests, it's needed to overwrite all abstract methods.
+    """
+    def prepare_port_filter(self, port):
+        raise NotImplementedError()
+
+    def update_port_filter(self, port):
+        raise NotImplementedError()
+
+
 class SecurityGroupRpcTestPlugin(test_sg.SecurityGroupTestPlugin,
                                  sg_db_rpc.SecurityGroupServerRpcMixin):
     def __init__(self):
@@ -1117,7 +1130,7 @@ class BaseSecurityGroupAgentRpcTestCase(base.BaseTestCase):
         mock.patch('neutron.agent.linux.iptables_manager').start()
         self.default_firewall = self.agent.firewall
         self.firewall = mock.Mock()
-        firewall_object = firewall_base.FirewallDriver()
+        firewall_object = FakeFirewallDriver()
         self.firewall.defer_apply.side_effect = firewall_object.defer_apply
         self.agent.firewall = self.firewall
         self.fake_device = {'device': 'fake_device',