From e256b32a71cf51f03d5e3f35ca48d0cfaedb9d48 Mon Sep 17 00:00:00 2001 From: Gary Kotton Date: Mon, 29 May 2017 02:38:27 -0700 Subject: [PATCH] NSX|V: use the same DHCP if multiple subnets on same network When using the exclusive DHCP flag and we have more than one subnet then make use of the existing edge. Change-Id: I7b1c779db185b439bf5caf4f6578e7487a78aeff --- vmware_nsx/plugins/nsx_v/vshield/edge_utils.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/vmware_nsx/plugins/nsx_v/vshield/edge_utils.py b/vmware_nsx/plugins/nsx_v/vshield/edge_utils.py index bb7359008a..e285bdac44 100644 --- a/vmware_nsx/plugins/nsx_v/vshield/edge_utils.py +++ b/vmware_nsx/plugins/nsx_v/vshield/edge_utils.py @@ -1152,6 +1152,17 @@ class EdgeManager(object): binding['status'] == constants.ACTIVE)} vdr_dhcp_edges = self._get_vdr_dhcp_edges(context) + # Special case if there is more than one subnet per exclusive DHCP + # network + if availability_zone.exclusive_dhcp_edge: + router_id = (vcns_const.DHCP_EDGE_PREFIX + network_id)[:36] + edge_id = all_dhcp_edges.get(router_id) + if edge_id: + LOG.info("Reusing the same DHCP edge for network %s", + network_id) + available_edge_ids.append(edge_id) + return (conflict_edge_ids, available_edge_ids) + if all_dhcp_edges: for dhcp_edge_id in set(all_dhcp_edges.values()): edge_vnic_bindings = nsxv_db.get_edge_vnic_bindings_by_edge(