From 8d19da49c4259411ff333946019f4b981fab2bcf Mon Sep 17 00:00:00 2001 From: David Kupka Date: Wed, 2 Dec 2015 14:20:50 +0000 Subject: dns: Check if domain already exists. Raise an error when the domain already exists. This can be overriden using --force or --allow-zone-overlap options. https://fedorahosted.org/freeipa/ticket/3681 Reviewed-By: Petr Spacek --- ipapython/ipautil.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'ipapython') diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py index 4cee81e64..7509f08c1 100644 --- a/ipapython/ipautil.py +++ b/ipapython/ipautil.py @@ -40,7 +40,7 @@ from contextlib import contextmanager import locale import collections -from dns import resolver, rdatatype +from dns import resolver, rdatatype, reversename from dns.exception import DNSException, Timeout import six from six.moves import input @@ -1031,6 +1031,22 @@ def host_exists(host): return True +def reverse_record_exists(ip_address): + """ + Checks if IP address have some reverse record somewhere. + Does not care where it points. + + Returns True/False + """ + reverse = reversename.from_address(str(ip_address)) + try: + resolver.query(reverse, "PTR") + except DNSException: + # really don't care what exception, PTR is simply unresolvable + return False + return True + + def check_zone_overlap(zone, raise_on_timeout=True): root_logger.info("Checking DNS domain %s, please wait ..." % zone) if not isinstance(zone, DNSName): -- cgit