Exemple #1
0
    def __add_dns_service_records(self):
        """
        Add DNS service records for Windows if DNS is enabled and the DNS zone
        is managed. If there are already service records for LDAP and Kerberos
        their values are used. Otherwise default values are used.
        """

        zone = api.env.domain

        err_msg = None

        ret = api.Command['dns_is_enabled']()
        if not ret['result']:
            err_msg = "DNS management was not enabled at install time."
        else:
            if not dns_zone_exists(zone):
                err_msg = (
                    "DNS zone %s cannot be managed as it is not defined in "
                    "IPA" % zone)

        if err_msg:
            self.print_msg(err_msg)
            self.print_msg("Add the following service records to your DNS " \
                           "server for DNS zone %s: " % zone)
            system_records = IPASystemRecords(api, all_servers=True)
            adtrust_records = system_records.get_base_records(
                [self.fqdn], ["AD trust controller"],
                include_master_role=False,
                include_kerberos_realm=False)
            for r_name, node in adtrust_records.items():
                for rec in IPASystemRecords.records_list_from_node(
                        r_name, node):
                    self.print_msg(rec)
        else:
            api.Command.dns_update_system_records()
    def __add_dns_service_records(self):
        """
        Add DNS service records for Windows if DNS is enabled and the DNS zone
        is managed. If there are already service records for LDAP and Kerberos
        their values are used. Otherwise default values are used.
        """

        zone = api.env.domain

        err_msg = None

        ret = api.Command['dns_is_enabled']()
        if not ret['result']:
            err_msg = "DNS management was not enabled at install time."
        else:
            if not dns_zone_exists(zone):
                err_msg = (
                    "DNS zone %s cannot be managed as it is not defined in "
                    "IPA" % zone)

        if err_msg:
            self.print_msg(err_msg)
            self.print_msg("Add the following service records to your DNS " \
                           "server for DNS zone %s: " % zone)
            system_records = IPASystemRecords(api)
            adtrust_records = system_records.get_base_records(
                [self.fqdn], ["AD trust controller"],
                include_master_role=False, include_kerberos_realm=False)
            for r_name, node in adtrust_records.items():
                for rec in IPASystemRecords.records_list_from_node(r_name, node):
                    self.print_msg(rec)
        else:
            api.Command.dns_update_system_records()
Exemple #3
0
def generate_dns_service_records_help(api):
    """
    Return list of instructions to create DNS service records for Windows
    if in case DNS is not enabled and the DNS zone is not managed by IPA.
    In case IPA manages the DNS zone, nothing is returned.
    """

    zone = api.env.domain

    err_msg = []

    ret = api.Command['dns_is_enabled']()
    if not ret['result']:
        err_msg.append("DNS management was not enabled at install time.")
    else:
        if not dns_zone_exists(zone):
            err_msg.append(
                "DNS zone %s cannot be managed as it is not defined in "
                "IPA" % zone)

    if err_msg:
        err_msg.append("Add the following service records to your DNS "
                       "server for DNS zone %s: " % zone)
        system_records = IPASystemRecords(api, all_servers=True)
        adtrust_records = system_records.get_base_records(
            [api.env.host], ["AD trust controller"],
            include_master_role=False, include_kerberos_realm=False)
        for r_name, node in adtrust_records.items():
            for rec in IPASystemRecords.records_list_from_node(r_name, node):
                err_msg.append(rec)
        return err_msg

    return None
Exemple #4
0
 def update_system_records(self):
     self.print_msg("Updating DNS system records")
     system_records = IPASystemRecords(self.api)
     try:
         ((_ipa_rec, failed_ipa_rec),
          (_loc_rec, failed_loc_rec)) = system_records.update_dns_records()
     except IPADomainIsNotManagedByIPAError:
         root_logger.error(
             "IPA domain is not managed by IPA, please update records "
             "manually")
     else:
         if failed_ipa_rec or failed_loc_rec:
             root_logger.error("Update of following records failed:")
             for attr in (failed_ipa_rec, failed_loc_rec):
                 for rname, node, error in attr:
                     for record in IPASystemRecords.records_list_from_node(
                             rname, node):
                         root_logger.error("%s (%s)", record, error)
Exemple #5
0
 def update_system_records(self):
     self.print_msg("Updating DNS system records")
     system_records = IPASystemRecords(self.api)
     try:
         (
             (_ipa_rec, failed_ipa_rec),
             (_loc_rec, failed_loc_rec)
         ) = system_records.update_dns_records()
     except IPADomainIsNotManagedByIPAError:
         logger.error(
             "IPA domain is not managed by IPA, please update records "
             "manually")
     else:
         if failed_ipa_rec or failed_loc_rec:
             logger.error("Update of following records failed:")
             for attr in (failed_ipa_rec, failed_loc_rec):
                 for rname, node, error in attr:
                     for record in IPASystemRecords.records_list_from_node(
                             rname, node
                     ):
                         logger.error("%s (%s)", record, error)