Remove questions from ipaserver.dsinstance Let's assume that all ipaserver.dsinstance could be used somewhere where asking questions on stdout/stdin is not approriate and re-factor the code to be suitable in those situations too. i.e. make check_existing_installation() return a list of server IDs and make check_ports() return an (unsecure, secure) tuple indication which ports are in use. Signed-off-by: Mark McLoughlin diff -r 453884e0f13b ipa-server/ipa-install/ipa-server-install --- a/ipa-server/ipa-install/ipa-server-install Thu Jan 17 16:36:05 2008 -0500 +++ b/ipa-server/ipa-install/ipa-server-install Sat Jan 19 17:50:04 2008 +0000 @@ -247,6 +247,33 @@ def read_admin_password(): admin_password = read_password("IPA admin") return admin_password +def check_dirsrv(): + serverids = ipaserver.dsinstance.check_existing_installation() + if serverids: + print "" + print "An existing Directory Server has been detected." + yesno = raw_input("Do you wish to remove it and create a new one? [no]: ") + if not yesno or yesno.lower()[0] != "y": + sys.exit(1) + + try: + service.stop("dirsrv") + except: + pass + + for serverid in serverids: + ipaserver.dsinstance.erase_ds_instance_data(serverid) + + (ds_unsecure, ds_secure) = ipaserver.dsinstance.check_ports() + if not ds_unsecure or not ds_secure: + print "IPA requires ports 389 and 636 for the Directory Server." + print "These are currently in use:" + if not ds_unsecure: + print "\t389" + if not ds_secure: + print "\t636" + sys.exit(1) + def uninstall(): ipaserver.ntpinstance.NTPInstance().uninstall() ipaserver.bindinstance.BindInstance().uninstall() @@ -282,9 +309,7 @@ def main(): print "To accept the default shown in brackets, press the Enter key." print "" - ipaserver.dsinstance.check_existing_installation() - ipaserver.dsinstance.check_ports() - + check_dirsrv() ds_user = "" realm_name = "" diff -r 453884e0f13b ipa-server/ipaserver/dsinstance.py --- a/ipa-server/ipaserver/dsinstance.py Thu Jan 17 16:36:05 2008 -0500 +++ b/ipa-server/ipaserver/dsinstance.py Sat Jan 19 17:50:04 2008 +0000 @@ -72,34 +72,18 @@ def check_existing_installation(): def check_existing_installation(): dirs = glob.glob("/etc/dirsrv/slapd-*") if not dirs: - return - print "" - print "An existing Directory Server has been detected." - yesno = raw_input("Do you wish to remove it and create a new one? [no]: ") - if not yesno or yesno.lower()[0] != "y": - sys.exit(1) - - try: - service.stop("dirsrv") - except: - pass + return [] + + serverids = [] for d in dirs: - serverid = os.path.basename(d).split("slapd-", 1)[1] - if serverid: - erase_ds_instance_data(serverid) + serverids.append(os.path.basename(d).split("slapd-", 1)[1]) + + return serverids def check_ports(): ds_unsecure = installutils.port_available(389) ds_secure = installutils.port_available(636) - if not ds_unsecure or not ds_secure: - print "IPA requires ports 389 and 636 for the Directory Server." - print "These are currently in use:" - if not ds_unsecure: - print "\t389" - if not ds_secure: - print "\t636" - sys.exit(1) - + return (ds_unsecure, ds_secure) INF_TEMPLATE = """ [General]