From 571453c614577ffd47e23de9a35863d2f2119583 Mon Sep 17 00:00:00 2001 From: venkata anil Date: Thu, 2 Jul 2015 11:22:39 +0000 Subject: [PATCH] Update dhcp host portbinding on failover When a dhcp server is moved to new host on failover, tunnel is not created. When a dhcp server is moved to new host, 1) network-hostagent binding is updated(properly i.e with new host). 2) dhcp port-hostagent binding is not updated ( dhcp port is still bound to old host) If dhcp port-bound agent is different from the new dhcp agent (which is now taking care of this dhcp port), neutron plugin won't notify the l2pop, and hence tunnel is not created. As after failover, the new agent is taking care of this dhcp port, update portbinding with the new host. This will allow neutron plugin to notify l2pop(which will create tunnel). Change-Id: Ib7d7dcddee005395af116ccd31a43853332ae317 Closes-bug: #1411163 --- neutron/api/rpc/handlers/dhcp_rpc.py | 1 + neutron/tests/unit/api/rpc/handlers/test_dhcp_rpc.py | 2 ++ 2 files changed, 3 insertions(+) diff --git a/neutron/api/rpc/handlers/dhcp_rpc.py b/neutron/api/rpc/handlers/dhcp_rpc.py index 7d97b7c52..80d8a0177 100644 --- a/neutron/api/rpc/handlers/dhcp_rpc.py +++ b/neutron/api/rpc/handlers/dhcp_rpc.py @@ -232,5 +232,6 @@ class DhcpRpcCallback(object): 'from %(host)s.', {'port': port, 'host': host}) + port['port'][portbindings.HOST_ID] = host plugin = manager.NeutronManager.get_plugin() return self._port_action(plugin, context, port, 'update_port') diff --git a/neutron/tests/unit/api/rpc/handlers/test_dhcp_rpc.py b/neutron/tests/unit/api/rpc/handlers/test_dhcp_rpc.py index c17c57e27..00dafcf99 100644 --- a/neutron/tests/unit/api/rpc/handlers/test_dhcp_rpc.py +++ b/neutron/tests/unit/api/rpc/handlers/test_dhcp_rpc.py @@ -159,6 +159,7 @@ class TestDhcpRpcCallback(base.BaseTestCase): } expected_port = {'port': {'network_id': 'foo_network_id', 'device_owner': constants.DEVICE_OWNER_DHCP, + 'binding:host_id': 'foo_host', 'fixed_ips': [{'subnet_id': 'foo_subnet_id'}] }, 'id': 'foo_port_id' @@ -180,6 +181,7 @@ class TestDhcpRpcCallback(base.BaseTestCase): } expected_port = {'port': {'network_id': 'foo_network_id', 'device_owner': constants.DEVICE_OWNER_DHCP, + 'binding:host_id': 'foo_host', 'fixed_ips': [{'subnet_id': 'foo_subnet_id'}] }, 'id': 'foo_port_id' -- 2.45.2