f65af0
From 7297060d59534cff6a703ad95c68bf20e53c14ae Mon Sep 17 00:00:00 2001
979ee0
From: Christian Heimes <cheimes@redhat.com>
979ee0
Date: Thu, 5 Jul 2018 23:59:06 +0200
979ee0
Subject: [PATCH] Only create DNS SRV records for ready server
979ee0
979ee0
When installing multiple replicas in parallel, one replica may create
979ee0
SRV entries for other replicas, although the replicas aren't fully
979ee0
installed yet. This may cause some services to connect to a server, that
979ee0
isn't ready to serve requests.
979ee0
979ee0
The DNS IPASystemRecords framework now skips all servers that aren't
979ee0
ready IPA masters.
979ee0
979ee0
See: https://pagure.io/freeipa/issue/7566
979ee0
Signed-off-by: Christian Heimes <cheimes@redhat.com>
979ee0
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
979ee0
---
979ee0
 ipaserver/dns_data_management.py | 8 ++++++--
979ee0
 1 file changed, 6 insertions(+), 2 deletions(-)
979ee0
979ee0
diff --git a/ipaserver/dns_data_management.py b/ipaserver/dns_data_management.py
f65af0
index bdf83de0cd76d8b571b5c2190ef8c4d63bcbf2d7..675dd481b461aa14d8adf8393a2168ac84ecac86 100644
979ee0
--- a/ipaserver/dns_data_management.py
979ee0
+++ b/ipaserver/dns_data_management.py
f65af0
@@ -96,7 +96,9 @@ class IPASystemRecords(object):
979ee0
         self.servers_data = {}
979ee0
 
979ee0
         servers_result = self.api_instance.Command.server_find(
979ee0
-            no_members=False)['result']
979ee0
+            no_members=False,
979ee0
+            servrole=u"IPA master",  # only active, fully installed masters
979ee0
+        )['result']
979ee0
         for s in servers_result:
979ee0
             weight, location, roles = self.__get_server_attrs(s)
979ee0
             self.servers_data[s['cn'][0]] = {
f65af0
@@ -348,7 +350,9 @@ class IPASystemRecords(object):
979ee0
         zone_obj = zone.Zone(self.domain_abs, relativize=False)
979ee0
         if servers is None:
979ee0
             servers_result = self.api_instance.Command.server_find(
979ee0
-                pkey_only=True)['result']
979ee0
+                pkey_only=True,
979ee0
+                servrole=u"IPA master",  # only fully installed masters
979ee0
+            )['result']
979ee0
             servers = [s['cn'][0] for s in servers_result]
979ee0
 
979ee0
         locations_result = self.api_instance.Command.location_find()['result']
979ee0
-- 
979ee0
2.17.1
979ee0