summaryrefslogtreecommitdiffstats
path: root/install/tools/ipa-ldap-updater
diff options
context:
space:
mode:
Diffstat (limited to 'install/tools/ipa-ldap-updater')
-rwxr-xr-xinstall/tools/ipa-ldap-updater160
1 files changed, 2 insertions, 158 deletions
diff --git a/install/tools/ipa-ldap-updater b/install/tools/ipa-ldap-updater
index 8f5c7664..0fc5a5bc 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()