diff options
Diffstat (limited to 'install/tools/ipa-ldap-updater')
-rwxr-xr-x | install/tools/ipa-ldap-updater | 160 |
1 files changed, 2 insertions, 158 deletions
diff --git a/install/tools/ipa-ldap-updater b/install/tools/ipa-ldap-updater index 8f5c76645..0fc5a5bc4 100755 --- a/install/tools/ipa-ldap-updater +++ b/install/tools/ipa-ldap-updater @@ -20,162 +20,6 @@ # Documentation can be found at http://freeipa.org/page/LdapUpdate -# TODO -# save undo files? +from ipaserver.install.ipa_ldap_updater import LDAPUpdater -import os -import sys -try: - from ipapython.config import IPAOptionParser - from ipapython import ipautil, config - from ipaserver.install import installutils - from ipaserver.install.ldapupdate import LDAPUpdate, BadSyntax, UPDATES_DIR - from ipaserver.install.upgradeinstance import IPAUpgrade - from ipapython import sysrestore - import krbV - from ipalib import api - from ipapython.ipa_log_manager import * -except ImportError: - print >> sys.stderr, """\ -There was a problem importing one of the required Python modules. The -error was: - - %s -""" % sys.exc_value - sys.exit(1) - -def parse_options(): - usage = "%prog [options] input_file(s)\n" - usage += "%prog [options]\n" - parser = IPAOptionParser(usage=usage, formatter=config.IPAFormatter()) - - parser.add_option("-d", "--debug", action="store_true", dest="debug", - help="Display debugging information about the update(s)", - default=False) - parser.add_option("-t", "--test", action="store_true", dest="test", - help="Run through the update without changing anything", - default=False) - parser.add_option("-y", dest="password", - help="File containing the Directory Manager password") - parser.add_option("-l", '--ldapi', action="store_true", dest="ldapi", - default=False, help="Connect to the LDAP server using the ldapi socket") - parser.add_option("-u", '--upgrade', action="store_true", dest="upgrade", - default=False, help="Upgrade an installed server in offline mode") - parser.add_option("-p", '--plugins', action="store_true", dest="plugins", - default=False, help="Execute update plugins. Always true when applying all update files.") - parser.add_option("-W", '--password', action="store_true", - dest="ask_password", - help="Prompt for the Directory Manager password") - - options, args = parser.parse_args() - safe_options = parser.get_safe_opts(options) - - return safe_options, options, args - -def get_dirman_password(): - """Prompt the user for the Directory Manager password and verify its - correctness. - """ - password = installutils.read_password("Directory Manager", confirm=False, validate=False) - - return password - -def main(): - badsyntax = False - upgradefailed = False - - safe_options, options, args = parse_options() - - run_plugins = options.plugins - - files = [] - if len(args) > 0: - files = args - - if len(files) < 1: - run_plugins = True - - if os.getegid() == 0: - try: - installutils.check_server_configuration() - except RuntimeError, e: - print unicode(e) - sys.exit(1) - else: - if not os.path.exists('/etc/ipa/default.conf'): - print "IPA is not configured on this system." - sys.exit(1) - if options.upgrade: - sys.exit('Upgrade can only be done as root') - if run_plugins: - sys.exit('Plugins can only be run as root.') - - dirman_password = "" - if options.password: - pw = ipautil.template_file(options.password, []) - dirman_password = pw.strip() - else: - if (options.ask_password or not options.ldapi) and not options.upgrade: - dirman_password = get_dirman_password() - if dirman_password is None: - sys.exit("\nDirectory Manager password required") - - console_format = '%(levelname)s: %(message)s' - if options.upgrade: - standard_logging_setup('/var/log/ipaupgrade.log', debug=options.debug, - console_format=console_format, filemode='a') - else: - standard_logging_setup(None, console_format=console_format, - debug=options.debug) - - cfg = dict ( - in_server=True, - context='updates', - debug=options.debug, - ) - api.bootstrap(**cfg) - api.finalize() - - updates = None - if options.upgrade: - root_logger.debug('%s was invoked with arguments %s and options: %s' % (sys.argv[0], args, safe_options)) - realm = krbV.default_context().default_realm - upgrade = IPAUpgrade(realm, files, live_run=not options.test) - upgrade.create_instance() - modified = upgrade.modified - badsyntax = upgrade.badsyntax - upgradefailed = upgrade.upgradefailed - else: - ld = LDAPUpdate(dm_password=dirman_password, sub_dict={}, live_run=not options.test, ldapi=options.ldapi, plugins=run_plugins) - if len(files) < 1: - files = ld.get_all_files(UPDATES_DIR) - modified = ld.update(files) - - if badsyntax: - root_logger.info('Bad syntax detected in upgrade file(s).') - print 'Bad syntax detected in upgrade file(s).' - return 1 - elif upgradefailed: - root_logger.info('IPA upgrade failed.') - print 'IPA upgrade failed.' - return 1 - elif modified and options.test: - root_logger.info('Update complete, changes to be made, test mode') - return 2 - else: - root_logger.info('Update complete') - return 0 - -try: - if __name__ == "__main__": - sys.exit(main()) -except BadSyntax, e: - print "There is a syntax error in this update file:" - print " %s" % e - sys.exit(1) -except RuntimeError, e: - sys.exit(e) -except SystemExit, e: - sys.exit(e) -except KeyboardInterrupt, e: - sys.exit(1) +LDAPUpdater.run_cli() |