From bbf8227e3fd678d4bd6659a12055ba3dbe1c8230 Mon Sep 17 00:00:00 2001 From: Martin Basti Date: Jun 17 2016 16:05:03 +0000 Subject: DNS Locations: do not generate location records for unused locations Location records for locations without assigned servers are useless and we should not generate them. https://fedorahosted.org/freeipa/ticket/2008 Reviewed-By: Petr Spacek --- diff --git a/ipaserver/dns_data_management.py b/ipaserver/dns_data_management.py index b5b9c1c..d01e113 100644 --- a/ipaserver/dns_data_management.py +++ b/ipaserver/dns_data_management.py @@ -59,6 +59,7 @@ class IPASystemRecords(object): self.api_instance = api_instance self.domain_abs = DNSName(self.api_instance.env.domain).make_absolute() self.servers_data = {} + self.used_locations = set() self.__init_data() def reload_data(self): @@ -79,6 +80,7 @@ class IPASystemRecords(object): def __init_data(self): self.servers_data = {} + self.used_locations = set() servers_result = self.api_instance.Command.server_find( pkey_only=True)['result'] @@ -90,6 +92,8 @@ class IPASystemRecords(object): 'location': location, 'roles': roles, } + if location: + self.used_locations.add(location) def __add_srv_records( self, zone_obj, hostname, rname_port_map, @@ -306,13 +310,12 @@ class IPASystemRecords(object): pkey_only=True)['result'] servers = [s['cn'][0] for s in servers_result] - locations_result = self.api_instance.Command.location_find()['result'] - locations = [l['idnsname'][0] for l in locations_result] - + # generate only records for used location, records for unassigned + # locations are useless for server in servers: self._get_location_dns_records_for_server( zone_obj, server, - locations, roles=roles, + self.used_locations, roles=roles, include_master_role=include_master_role) return zone_obj