예제 #1
0
    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
예제 #2
0
    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
예제 #3
0
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)