DNS Locations: command dns-update-system-records

command dns-update-system-records updates/fixes DNS records for IPA
services:
* updating A, AAAA records for CA
* updating SRV records for LDAP, kerberos and AD trust
* updating TXT record in _kerberos with proper realm
* updating dns locations if used

https://fedorahosted.org/freeipa/ticket/2008

Reviewed-By: Petr Spacek <pspacek@redhat.com>
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
This commit is contained in:
Martin Basti
2016-06-10 17:03:25 +02:00
parent cf634a4ff8
commit e23159596e
6 changed files with 187 additions and 4 deletions

View File

@@ -4,6 +4,8 @@
from __future__ import absolute_import
import six
from collections import defaultdict
from dns import (
rdataclass,
@@ -17,6 +19,10 @@ from ipalib import errors
from ipalib.dns import record_name_format
from ipapython.dnsutil import DNSName, resolve_rrsets
if six.PY3:
unicode=str
IPA_DEFAULT_MASTER_SRV_REC = (
# srv record name, port
(DNSName(u'_ldap._tcp'), 389),
@@ -214,7 +220,7 @@ class IPASystemRecords(object):
for rdata in rdataset:
option_name = (record_name_format % rdatatype.to_text(
rdata.rdtype).lower())
update_dict[option_name].append(rdata.to_text())
update_dict[option_name].append(unicode(rdata.to_text()))
return update_dict
def __update_dns_records(
@@ -378,3 +384,19 @@ class IPASystemRecords(object):
self.update_base_records(),
self.update_locations_records()
)
@classmethod
def records_list_from_node(cls, name, node):
records = []
for rdataset in node:
for rd in rdataset:
records.append(
u'{name} {ttl} {rdclass} {rdtype} {rdata}'.format(
name=name.ToASCII(),
ttl=rdataset.ttl,
rdclass=rdataclass.to_text(rd.rdclass),
rdtype=rdatatype.to_text(rd.rdtype),
rdata=rd.to_text()
)
)
return records