From c458bdd1332df2cffc14283b62ec67d4bfbec06d Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Tue, 12 Jul 2011 13:34:38 +0300 Subject: Improve error reporting on ipa-client-install for LDAP configurations Re-arrange and improve reported warnings so that messages are clearer for administrators. --- ipa-client/ipa-install/ipa-client-install | 29 +++++++++++++++++------------ ipapython/ipautil.py | 18 ------------------ 2 files changed, 17 insertions(+), 30 deletions(-) diff --git a/ipa-client/ipa-install/ipa-client-install b/ipa-client/ipa-install/ipa-client-install index 6ad001be8..75a1b3d1f 100755 --- a/ipa-client/ipa-install/ipa-client-install +++ b/ipa-client/ipa-install/ipa-client-install @@ -31,7 +31,7 @@ try: from ipaclient import ipadiscovery import ipaclient.ipachangeconf import ipaclient.ntpconf - from ipapython.ipautil import run, user_input, CalledProcessError, file_exists, package_installed_name + from ipapython.ipautil import run, user_input, CalledProcessError, file_exists from ipapython import ipautil from ipapython import dnsclient from ipapython import sysrestore @@ -336,6 +336,7 @@ def configure_ldap_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, d opts.append({'name':'empty', 'type':'empty'}) + ret = (0, 'LDAP', '') # Depending on the release and distribution this may exist in any # number of different file names, update what we find for filename in ['/etc/ldap.conf', '/etc/nss_ldap.conf', '/etc/libnss-ldap.conf', '/etc/pam_ldap.conf']: @@ -343,11 +344,12 @@ def configure_ldap_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, d try: fstore.backup_file(filename) ldapconf.newConf(filename, opts) + ret = (0, 'LDAP', filename) except Exception, e: print "Creation of %s: %s" % (filename, str(e)) - return 1 + return (1, 'LDAP', filename) - return 0 + return ret def configure_nslcd_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, dnsok, options): nslcdconf = ipaclient.ipachangeconf.IPAChangeConf("IPA Installer") @@ -379,7 +381,7 @@ def configure_nslcd_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, nslcdconf.newConf('/etc/nslcd.conf', opts) except Exception, e: print "Creation of %s: %s" % ('/etc/nslcd.conf', str(e)) - return 1 + return (1, 'nslcd') if ipautil.service_is_installed('nslcd'): try: @@ -395,7 +397,7 @@ def configure_nslcd_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, else: logging.debug("NSLCD daemon is not installed, skip configuration") - return 0 + return (0, 'NSLCD', '/etc/nslcd.conf') def hardcode_ldap_server(cli_server): """ @@ -945,7 +947,8 @@ def main(): else: # this is optional service, just log - logging.info("NSCD daemon is not installed, skip configuration") + if not options.sssd: + logging.info("NSCD daemon is not installed, skip configuration") # Modify nsswitch/pam stack if options.sssd: @@ -964,14 +967,17 @@ def main(): run(["/usr/sbin/authconfig", "--enablekrb5", "--update", "--nostart"]) print "Kerberos 5 enabled" + (retcode, conf, filename) = (0, 'SSSD', '/etc/sssd.conf') # Update non-SSSD LDAP configuration after authconfig calls as it would # change its configuration otherways if not options.sssd: - if configure_ldap_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, dnsok, options): + (retcode, conf, filename) = configure_ldap_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, dnsok, options) + if retcode: return 1 - if configure_nslcd_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, dnsok, options): + (retcode, conf, filename) = configure_nslcd_conf(fstore, cli_basedn, cli_realm, cli_domain, cli_server, dnsok, options) + if retcode: return 1 - print "LDAP configured" + print "%s configured using configuration file %s" % (conf, filename) #Check that nss is working properly if not options.on_master: @@ -989,9 +995,8 @@ def main(): n = n + 1 if not found: - package = package_installed_name(["nss-pam-ldapd","nss_ldap"]) - print "Unable to use DNS discovery! Recognized configuration: %s" % (package) - print "Changing configuration to use hardcoded server name: " +cli_server + print "Unable to use DNS discovery! Recognized configuration: %s" % (conf) + print "Changing configuration of /etc/ldap.conf to use hardcoded server name: " +cli_server try: hardcode_ldap_server(cli_server) diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py index 6bfebcaeb..da6e94c85 100644 --- a/ipapython/ipautil.py +++ b/ipapython/ipautil.py @@ -1171,21 +1171,3 @@ def bind_port_responder(port, socket_stream=True, socket_timeout=None, responder s.sendto(responder_data, addr) finally: s.close() - -def package_installed_name(packages): - """ - Find out which of mutually exclusive packages is installed - - packages is a list of package names to check - - Returns package name or None - """ - - args = ["/bin/rpm","-q","--queryformat","%{NAME}"] - for package in packages: - try: - (package_name, error, retcode) = run(args+[package]) - return package_name - except CalledProcessError: - continue - return None -- cgit