def get_locations_records(self, servers=None, roles=None, include_master_role=True): """ Generate IPA location records for specific servers and roles. :param servers: list of server which will be used in records, if None all IPA servers will be used :param roles: roles for which DNS records will be generated, if None all roles will be used :param include_master_role: generate records required by IPA master role :return: dns.zone.Zone object that contains location DNS records """ zone_obj = zone.Zone(self.domain_abs, relativize=False) if servers is None: servers = list(self.servers_data) locations_result = self.api_instance.Command.location_find()['result'] locations = [l['idnsname'][0] for l in locations_result] for server in servers: self._get_location_dns_records_for_server( zone_obj, server, locations, roles=roles, include_master_role=include_master_role) return zone_obj
def get_base_records(self, servers=None, roles=None, include_master_role=True, include_kerberos_realm=True): """ Generate IPA service records for specific servers and roles :param servers: list of server which will be used in records, if None all IPA servers will be used :param roles: roles for which DNS records will be generated, if None all roles will be used :param include_master_role: generate records required by IPA master role :return: dns.zone.Zone object that contains base DNS records """ zone_obj = zone.Zone(self.domain_abs, relativize=False) if servers is None: servers = list(self.servers_data) for server in servers: self._add_base_dns_records_for_server( zone_obj, server, roles=roles, include_master_role=include_master_role, include_kerberos_realm=include_kerberos_realm) return zone_obj
def WriteToZoneFile(zone_file, record_sets, domain): """Writes the given record-sets in zone file format to the given file. Args: zone_file: file, File into which the records should be written. record_sets: list, ResourceRecordSets to be written out. domain: str, The origin domain for the zone file. """ zone_contents = zone.Zone(name.from_text(domain)) for record_set in record_sets: rdset = zone_contents.get_rdataset(record_set.name, record_set.type, create=True) for rrdata in record_set.rrdatas: rdset.add(rdata.from_text(rdataclass.IN, rdatatype.from_text(record_set.type), str(rrdata), origin=zone_contents.origin), ttl=record_set.ttl) zone_contents.to_file(zone_file, relativize=False)