From: Lucian Petrut Date: Tue, 27 Jan 2015 13:23:27 +0000 (+0200) Subject: Hyper-V: Fixes security groups issue X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=7076d9edee29b852833d934761052efcbc6e8fcf;p=openstack-build%2Fneutron-build.git Hyper-V: Fixes security groups issue After this patch If19be8579ca734a899cdd673c919eee8165aaa0e refactored securitygroups_rpc, prepare_devices_filter attempts to use methods unimplemented by the HyperV security groups driver. For this reason, binding ports fails with NotImplementedError if security groups are enabled. Until the HyperV security groups driver reaches parity, the use_enhanced_rpc property should be set to False on the HyperVSecurityAgent, falling back to the old behaviour. Change-Id: I1a7ee2b92367d2d59932b8b39372a055bf19951b Closes-Bug: #1415523 --- diff --git a/neutron/plugins/hyperv/agent/hyperv_neutron_agent.py b/neutron/plugins/hyperv/agent/hyperv_neutron_agent.py index 3dc69200d..375295629 100644 --- a/neutron/plugins/hyperv/agent/hyperv_neutron_agent.py +++ b/neutron/plugins/hyperv/agent/hyperv_neutron_agent.py @@ -88,6 +88,10 @@ class HyperVSecurityAgent(sg_rpc.SecurityGroupAgentRpc): if sg_rpc.is_firewall_enabled(): self._setup_rpc() + @property + def use_enhanced_rpc(self): + return False + def _setup_rpc(self): self.topic = topics.AGENT self.endpoints = [HyperVSecurityCallbackMixin(self)] diff --git a/neutron/tests/unit/hyperv/test_hyperv_neutron_agent.py b/neutron/tests/unit/hyperv/test_hyperv_neutron_agent.py index 12a5d8377..16b61e7a6 100644 --- a/neutron/tests/unit/hyperv/test_hyperv_neutron_agent.py +++ b/neutron/tests/unit/hyperv/test_hyperv_neutron_agent.py @@ -56,6 +56,7 @@ class TestHyperVNeutronAgent(base.BaseTestCase): self.agent = hyperv_neutron_agent.HyperVNeutronAgent() self.agent.plugin_rpc = mock.Mock() self.agent.sec_groups_agent = mock.MagicMock() + self.agent.sg_plugin_rpc = mock.Mock() self.agent.context = mock.Mock() self.agent.agent_id = mock.Mock() @@ -68,6 +69,11 @@ class TestHyperVNeutronAgent(base.BaseTestCase): 'start_flag': True} self.agent_state = fake_agent_state + def test_use_enhanced_rpc(self): + self.agent.sec_groups_agent = hyperv_neutron_agent.HyperVSecurityAgent( + self.agent.context, self.agent.sg_plugin_rpc) + self.assertFalse(self.agent.sec_groups_agent.use_enhanced_rpc) + def test_port_bound_enable_metrics(self): cfg.CONF.set_override('enable_metrics_collection', True, 'AGENT') self._test_port_bound(True)