URL: https://github.com/freeipa/freeipa/pull/681 Author: alex-zel Title: #681: Fix ipadiscovery Action: synchronized
To pull the PR as Git branch: git remote add ghfreeipa https://github.com/freeipa/freeipa git fetch ghfreeipa pull/681/head:pr681 git checkout pr681
From 3ac30ca118685134dd38b07e4b55ecbb4c880a3a Mon Sep 17 00:00:00 2001 From: Alex Zeleznikov <a...@iucc.ac.il> Date: Sun, 2 Apr 2017 11:53:11 +0300 Subject: [PATCH 1/3] ipadiscovery sort SRV record by priority Sort SRV records for LDAP/KRB based on priority. --- ipaclient/install/ipadiscovery.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/ipaclient/install/ipadiscovery.py b/ipaclient/install/ipadiscovery.py index 46e05c9..c6fc240 100644 --- a/ipaclient/install/ipadiscovery.py +++ b/ipaclient/install/ipadiscovery.py @@ -492,7 +492,16 @@ def ipadns_search_srv(self, domain, srv_record_name, default_port, root_logger.debug("Search DNS for SRV record of %s", qname) try: - answers = resolver.query(qname, rdatatype.SRV) + answers = [] + dns_answers = resolver.query(qname, rdatatype.SRV) + for answer in dns_answers: + if not len(answers): + answers.append(answer) + else: + i = 0 + while i < len(answers) and answer.priority > answers[i].priority: + i += 1 + answers.insert(i, answer) except DNSException as e: root_logger.debug("DNS record not found: %s", e.__class__.__name__) answers = [] @@ -521,7 +530,16 @@ def ipadnssearchkrbrealm(self, domain=None): root_logger.debug("Search DNS for TXT record of %s", qname) try: - answers = resolver.query(qname, rdatatype.TXT) + answers = [] + dns_answers = resolver.query(qname, rdatatype.SRV) + for answer in dns_answers: + if not len(answers): + answers.append(answer) + else: + i = 0 + while i < len(answers) and answer.priority > answers[i].priority: + i += 1 + answers.insert(i, answer) except DNSException as e: root_logger.debug("DNS record not found: %s", e.__class__.__name__) answers = [] From 993c99868f3e033122bfe6fc95f53c701243d3f0 Mon Sep 17 00:00:00 2001 From: Alex Zel <alex88...@gmail.com> Date: Sun, 2 Apr 2017 12:04:11 +0300 Subject: [PATCH 2/3] fix indentation --- ipaclient/install/ipadiscovery.py | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/ipaclient/install/ipadiscovery.py b/ipaclient/install/ipadiscovery.py index c6fc240..4f18398 100644 --- a/ipaclient/install/ipadiscovery.py +++ b/ipaclient/install/ipadiscovery.py @@ -493,15 +493,15 @@ def ipadns_search_srv(self, domain, srv_record_name, default_port, try: answers = [] - dns_answers = resolver.query(qname, rdatatype.SRV) - for answer in dns_answers: - if not len(answers): - answers.append(answer) - else: - i = 0 - while i < len(answers) and answer.priority > answers[i].priority: - i += 1 - answers.insert(i, answer) + dns_answers = resolver.query(qname, rdatatype.SRV) + for answer in dns_answers: + if not len(answers): + answers.append(answer) + else: + i = 0 + while i < len(answers) and answer.priority > answers[i].priority: + i += 1 + answers.insert(i, answer) except DNSException as e: root_logger.debug("DNS record not found: %s", e.__class__.__name__) answers = [] @@ -531,15 +531,15 @@ def ipadnssearchkrbrealm(self, domain=None): try: answers = [] - dns_answers = resolver.query(qname, rdatatype.SRV) - for answer in dns_answers: - if not len(answers): - answers.append(answer) - else: - i = 0 - while i < len(answers) and answer.priority > answers[i].priority: - i += 1 - answers.insert(i, answer) + dns_answers = resolver.query(qname, rdatatype.SRV) + for answer in dns_answers: + if not len(answers): + answers.append(answer) + else: + i = 0 + while i < len(answers) and answer.priority > answers[i].priority: + i += 1 + answers.insert(i, answer) except DNSException as e: root_logger.debug("DNS record not found: %s", e.__class__.__name__) answers = [] From 73fc5dc8cf1b8c6f34ff767079aa2209b26c2aa1 Mon Sep 17 00:00:00 2001 From: Alex Zel <alex88...@gmail.com> Date: Tue, 4 Apr 2017 08:57:04 +0300 Subject: [PATCH 3/3] Update ipadiscovery.py --- ipaclient/install/ipadiscovery.py | 24 ++++-------------------- 1 file changed, 4 insertions(+), 20 deletions(-) diff --git a/ipaclient/install/ipadiscovery.py b/ipaclient/install/ipadiscovery.py index 4f18398..0ffc191 100644 --- a/ipaclient/install/ipadiscovery.py +++ b/ipaclient/install/ipadiscovery.py @@ -21,6 +21,7 @@ import six +from operator import attrgetter from ipapython.ipa_log_manager import root_logger from dns import resolver, rdatatype from dns.exception import DNSException @@ -492,16 +493,8 @@ def ipadns_search_srv(self, domain, srv_record_name, default_port, root_logger.debug("Search DNS for SRV record of %s", qname) try: - answers = [] - dns_answers = resolver.query(qname, rdatatype.SRV) - for answer in dns_answers: - if not len(answers): - answers.append(answer) - else: - i = 0 - while i < len(answers) and answer.priority > answers[i].priority: - i += 1 - answers.insert(i, answer) + answers = resolver.query(qname, rdatatype.SRV) + answers = sorted(answers, key=attrgetter('priority')) except DNSException as e: root_logger.debug("DNS record not found: %s", e.__class__.__name__) answers = [] @@ -530,16 +523,7 @@ def ipadnssearchkrbrealm(self, domain=None): root_logger.debug("Search DNS for TXT record of %s", qname) try: - answers = [] - dns_answers = resolver.query(qname, rdatatype.SRV) - for answer in dns_answers: - if not len(answers): - answers.append(answer) - else: - i = 0 - while i < len(answers) and answer.priority > answers[i].priority: - i += 1 - answers.insert(i, answer) + answers = resolver.query(qname, rdatatype.TXT) except DNSException as e: root_logger.debug("DNS record not found: %s", e.__class__.__name__) answers = []
-- Manage your subscription for the Freeipa-devel mailing list: https://www.redhat.com/mailman/listinfo/freeipa-devel Contribute to FreeIPA: http://www.freeipa.org/page/Contribute/Code