For starters I added a 15 second timeout and 2 tries. These numbers are
arbitrary, I am open to suggestions.

Martin

---
Add a timeout to the wget call to cover a case when autodiscovered
server does not response to our attempt to download ca.crt. Let
user specify a different IPA server in that case.

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

>From d3a74fbc40f29eb5baaf7461c6f301671ca1580a Mon Sep 17 00:00:00 2001
From: Martin Kosek <mko...@redhat.com>
Date: Wed, 12 Oct 2011 10:55:08 +0200
Subject: [PATCH] ipa-client-install hangs if the discovered server is
 unresponsive

Add a timeout to the wget call to cover a case when autodiscovered
server does not response to our attempt to download ca.crt. Let
user specify a different IPA server in that case.

https://fedorahosted.org/freeipa/ticket/1960
---
 ipa-client/ipa-install/ipa-client-install |    6 ++++--
 ipa-client/ipaclient/ipadiscovery.py      |    3 ++-
 2 files changed, 6 insertions(+), 3 deletions(-)

diff --git a/ipa-client/ipa-install/ipa-client-install b/ipa-client/ipa-install/ipa-client-install
index 969dc9b0faa5e131f1e9199325bdf2350157ab8a..233d56e3f9b5cac8e8491f56b84c4e44ee8d9279 100755
--- a/ipa-client/ipa-install/ipa-client-install
+++ b/ipa-client/ipa-install/ipa-client-install
@@ -803,7 +803,8 @@ def install(options, env, fstore, statestore):
     if ret == ipadiscovery.NOT_FQDN:
         print >>sys.stderr, "%s is not a fully-qualified hostname" % hostname
         return CLIENT_INSTALL_ERROR
-    if ret == ipadiscovery.NO_LDAP_SERVER or not ds.getDomainName():
+    if ret in (ipadiscovery.NO_LDAP_SERVER, ipadiscovery.NOT_IPA_SERVER) \
+            or not ds.getDomainName():
         logging.debug("Domain not found")
         if options.domain:
             cli_domain = options.domain
@@ -821,7 +822,8 @@ def install(options, env, fstore, statestore):
             cli_domain = ds.getDomainName()
             logging.debug("will use domain: %s\n", cli_domain)
 
-    if ret == ipadiscovery.NO_LDAP_SERVER or not ds.getServerName():
+    if ret in (ipadiscovery.NO_LDAP_SERVER, ipadiscovery.NOT_IPA_SERVER) \
+            or not ds.getServerName():
         logging.debug("IPA Server not found")
         if options.server:
             cli_server = options.server
diff --git a/ipa-client/ipaclient/ipadiscovery.py b/ipa-client/ipaclient/ipadiscovery.py
index cd5f81bd5147929deca43e502c4f9b2bdb98f99c..e786e98d8d722b7ac55db6f616effd737f920364 100644
--- a/ipa-client/ipaclient/ipadiscovery.py
+++ b/ipa-client/ipaclient/ipadiscovery.py
@@ -220,7 +220,8 @@ class IPADiscovery:
             raise RuntimeError("Creating temporary directory failed: %s" % str(e))
 
         try:
-            run(["/usr/bin/wget", "-O", "%s/ca.crt" % temp_ca_dir, "http://%s/ipa/config/ca.crt"; % format_netloc(thost)])
+            run(["/usr/bin/wget", "-O", "%s/ca.crt" % temp_ca_dir, "-T", "15", "-t", "2",
+                 "http://%s/ipa/config/ca.crt"; % format_netloc(thost)])
         except CalledProcessError, e:
             logging.debug('Retrieving CA from %s failed.\n%s' % (thost, str(e)))
             return [NOT_IPA_SERVER]
-- 
1.7.6.4

_______________________________________________
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel

Reply via email to