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
This commit is contained in:
Martin Kosek 2011-10-12 10:55:08 +02:00 committed by Rob Crittenden
parent 2aa63fe4a9
commit 17f247d6c2
2 changed files with 6 additions and 3 deletions

View File

@ -797,7 +797,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
@ -815,7 +816,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

View File

@ -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]