NSX|P: update dhcp config on segent subnet

Make sure to set the DHCP config only if there is a dhcp server ip.
Missing ip can happen during the process of deleting a subnet.

Change-Id: I1e8071935a01a7e07732c5033744f74769210043
This commit is contained in:
asarfaty 2020-06-09 11:51:11 +02:00
parent 801c074587
commit 828ebac314
1 changed files with 21 additions and 19 deletions

View File

@ -1142,27 +1142,29 @@ class NsxPolicyPlugin(nsx_plugin_common.NsxPluginV3Base):
dhcp_subnet_id = dhcp_subnet['id'] dhcp_subnet_id = dhcp_subnet['id']
dhcp_subnet_ids.append(dhcp_subnet_id) dhcp_subnet_ids.append(dhcp_subnet_id)
gw_addr = self._get_gateway_addr_from_subnet(dhcp_subnet) gw_addr = self._get_gateway_addr_from_subnet(dhcp_subnet)
cidr_prefix = int(dhcp_subnet['cidr'].split('/')[1])
dhcp_server_ip = self._get_sunbet_dhcp_server_ip( dhcp_server_ip = self._get_sunbet_dhcp_server_ip(
context, net_id, dhcp_subnet_id) context, net_id, dhcp_subnet_id)
dns_nameservers = dhcp_subnet['dns_nameservers'] dhcp_config = None
if not net_az: if dhcp_server_ip:
net_az = self.get_network_az_by_net_id(context, net_id) cidr_prefix = int(dhcp_subnet['cidr'].split('/')[1])
if (not dns_nameservers or dns_nameservers = dhcp_subnet['dns_nameservers']
not validators.is_attr_set(dns_nameservers)): if not net_az:
# Use pre-configured dns server net_az = self.get_network_az_by_net_id(context, net_id)
dns_nameservers = net_az.nameservers if (not dns_nameservers or
is_ipv6 = True if dhcp_subnet.get('ip_version') == 6 else False not validators.is_attr_set(dns_nameservers)):
server_ip = "%s/%s" % (dhcp_server_ip, cidr_prefix) # Use pre-configured dns server
kwargs = {'server_address': server_ip, dns_nameservers = net_az.nameservers
'dns_servers': dns_nameservers} is_ipv6 = True if dhcp_subnet.get('ip_version') == 6 else False
if is_ipv6: server_ip = "%s/%s" % (dhcp_server_ip, cidr_prefix)
network = self._get_network(context, net_id) kwargs = {'server_address': server_ip,
kwargs['domain_names'] = [ 'dns_servers': dns_nameservers}
self._get_network_dns_domain(net_az, network)] if is_ipv6:
dhcp_config = policy_defs.SegmentDhcpConfigV6(**kwargs) network = self._get_network(context, net_id)
else: kwargs['domain_names'] = [
dhcp_config = policy_defs.SegmentDhcpConfigV4(**kwargs) self._get_network_dns_domain(net_az, network)]
dhcp_config = policy_defs.SegmentDhcpConfigV6(**kwargs)
else:
dhcp_config = policy_defs.SegmentDhcpConfigV4(**kwargs)
seg_subnet = policy_defs.Subnet(gateway_address=gw_addr, seg_subnet = policy_defs.Subnet(gateway_address=gw_addr,
dhcp_config=dhcp_config) dhcp_config=dhcp_config)