From 7076d9edee29b852833d934761052efcbc6e8fcf Mon Sep 17 00:00:00 2001 From: Lucian Petrut Date: Tue, 27 Jan 2015 15:23:27 +0200 Subject: [PATCH] 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 --- neutron/plugins/hyperv/agent/hyperv_neutron_agent.py | 4 ++++ neutron/tests/unit/hyperv/test_hyperv_neutron_agent.py | 6 ++++++ 2 files changed, 10 insertions(+) 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) -- 2.45.2