diff --git a/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py b/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py index be798a591f..cd63c64f8d 100755 --- a/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py +++ b/neutron/plugins/linuxbridge/agent/linuxbridge_neutron_agent.py @@ -661,10 +661,12 @@ class LinuxBridgeRpcCallbacks(sg_rpc.SecurityGroupAgentRpcCallbackMixin, self.agent.agent_id, cfg.CONF.host) else: - self.plugin_rpc.update_device_down(self.context, - tap_device_name, - self.agent.agent_id, - cfg.CONF.host) + self.agent.plugin_rpc.update_device_down( + self.context, + tap_device_name, + self.agent.agent_id, + cfg.CONF.host + ) else: bridge_name = self.agent.br_mgr.get_bridge_name( port['network_id']) diff --git a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py index 734b83a445..0b96c8b2bc 100644 --- a/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py +++ b/neutron/tests/unit/linuxbridge/test_lb_neutron_agent.py @@ -770,6 +770,30 @@ class TestLinuxBridgeRpcCallbacks(base.BaseTestCase): addif_fn.assert_called_with(port["network_id"], lconst.TYPE_LOCAL, None, None, port["id"]) + addif_fn.return_value = True + self.lb_rpc.port_update("unused_context", port=port, + network_type=lconst.TYPE_LOCAL, + segmentation_id=None, + physical_network=None) + rpc_obj.update_device_up.assert_called_with( + self.lb_rpc.context, + "tap123", + self.lb_rpc.agent.agent_id, + cfg.CONF.host + ) + + addif_fn.return_value = False + self.lb_rpc.port_update("unused_context", port=port, + network_type=lconst.TYPE_LOCAL, + segmentation_id=None, + physical_network=None) + rpc_obj.update_device_down.assert_called_with( + self.lb_rpc.context, + "tap123", + self.lb_rpc.agent.agent_id, + cfg.CONF.host + ) + port["admin_state_up"] = False port["security_groups"] = True getbr_fn.return_value = "br0"