diff options
author | Martin Basti <mbasti@redhat.com> | 2015-04-10 15:42:58 +0200 |
---|---|---|
committer | Jan Cholasta <jcholast@redhat.com> | 2015-05-04 11:16:26 +0000 |
commit | 9f049ca14403f3696d54d186e6b1b15181f055df (patch) | |
tree | 80c4c6d0b2d9e0b584322a931a729560e274c174 /install | |
parent | 39426966063b3f3deced90ef3f5d0a87801d7eab (diff) | |
download | freeipa-9f049ca14403f3696d54d186e6b1b15181f055df.tar.gz freeipa-9f049ca14403f3696d54d186e6b1b15181f055df.tar.xz freeipa-9f049ca14403f3696d54d186e6b1b15181f055df.zip |
Server Upgrade: Verify version and platform
Verify version and platform before upgrade or ipactl start|restart
Upgrade:
* do not allow upgrade on different platforms
* do not allow upgrade data with higher version than build has
Start:
* do not start services if platform mismatch
* do not start services if upgrade is needed
* do not start services if data with higher version than build has
New ipactl options:
--skip-version-check: do not validate IPA version
--ignore-service-failures (was --force): ignore if a service start fail
and continue with starting other services
--force: combine --skip-version-check and --ignore-service-failures
https://fedorahosted.org/freeipa/ticket/4904
Reviewed-By: Jan Cholasta <jcholast@redhat.com>
Reviewed-By: David Kupka <dkupka@redhat.com>
Diffstat (limited to 'install')
-rwxr-xr-x | install/tools/ipactl | 57 | ||||
-rw-r--r-- | install/tools/man/ipa-server-upgrade.1 | 6 | ||||
-rw-r--r-- | install/tools/man/ipactl.8 | 8 |
3 files changed, 60 insertions, 11 deletions
diff --git a/install/tools/ipactl b/install/tools/ipactl index b1b0b6e26..b37f55575 100755 --- a/install/tools/ipactl +++ b/install/tools/ipactl @@ -90,17 +90,41 @@ def parse_options(): parser.add_option("-d", "--debug", action="store_true", dest="debug", help="Display debugging information") parser.add_option("-f", "--force", action="store_true", dest="force", - help="If any service start fails, do not rollback the" - + " services, continue with the operation") + help="Force IPA to start. Combine options " + "--skip-version-check and --ignore-service-failures") + parser.add_option("--ignore-service-failures", action="store_true", + dest="ignore_service_failures", + help="If any service start fails, do not rollback the " + "services, continue with the operation") + parser.add_option("--skip-version-check", action="store_true", + dest="skip_version_check", default=False, + help="skip version check") options, args = parser.parse_args() safe_options = parser.get_safe_opts(options) + if options.force: + options.ignore_service_failures = True + options.skip_version_check = True + return safe_options, options, args def emit_err(err): sys.stderr.write(err + '\n') + +def version_check(): + try: + installutils.check_version() + except (installutils.UpgradeMissingVersionError, + installutils.UpgradeDataOlderVersionError): + emit_err("Upgrade required: please run ipa-server-upgrade command") + raise IpactlError("Aborting ipactl") + except installutils.UpgradeVersionError as e: + emit_err("IPA version error: %s" % e) + raise IpactlError("Aborting ipactl") + + def get_config(dirsrv): base = DN(('cn', api.env.host), ('cn', 'masters'), ('cn', 'ipa'), ('cn', 'etc'), api.env.basedn) srcfilter = '(ipaConfigString=enabledService)' @@ -217,6 +241,11 @@ def stop_dirsrv(dirsrv): def ipa_start(options): + if not options.skip_version_check: + version_check() + else: + print "Skipping version check" + if os.path.isfile(tasks.get_svc_list_file()): emit_err("Existing service file detected!") emit_err("Assuming stale, cleaning and proceeding") @@ -241,7 +270,7 @@ def ipa_start(options): emit_err("Failed to read data from service file: " + str(e)) emit_err("Shutting down") - if not options.force: + if not options.ignore_service_failures: stop_dirsrv(dirsrv) if isinstance(e, IpactlError): @@ -261,8 +290,9 @@ def ipa_start(options): svchandle.start(capture_output=get_capture_output(svc, options.debug)) except Exception: emit_err("Failed to start %s Service" % svc) - #if force start specified, skip rollback and continue with the next service - if options.force: + # if ignore_service_failures is specified, skip rollback and + # continue with the next service + if options.ignore_service_failures: emit_err("Forced start, ignoring %s Service, continuing normal operation" % svc) continue @@ -313,6 +343,11 @@ def ipa_stop(options): def ipa_restart(options): + if not options.skip_version_check: + version_check() + else: + print "Skipping version check" + dirsrv = services.knownservices.dirsrv new_svc_list = [] dirsrv_restart = True @@ -379,7 +414,7 @@ def ipa_restart(options): emit_err("Failed to restart Directory Service: " + str(e)) emit_err("Shutting down") - if not options.force: + if not options.ignore_service_failures: stop_services(reversed(svc_list)) stop_dirsrv(dirsrv) @@ -395,8 +430,9 @@ def ipa_restart(options): svchandle.restart(capture_output=get_capture_output(svc, options.debug)) except Exception: emit_err("Failed to restart %s Service" % svc) - #if force start specified, skip rollback and continue with the next service - if options.force: + # if ignore_service_failures is specified, + # skip rollback and continue with the next service + if options.ignore_service_failures: emit_err("Forced restart, ignoring %s Service, continuing normal operation" % svc) continue @@ -415,8 +451,9 @@ def ipa_restart(options): svchandle.start(capture_output=get_capture_output(svc, options.debug)) except Exception: emit_err("Failed to start %s Service" % svc) - #if force start specified, skip rollback and continue with the next service - if options.force: + # if ignore_service_failures is specified, skip rollback and + # continue with the next service + if options.ignore_service_failures: emit_err("Forced start, ignoring %s Service, continuing normal operation" % svc) continue diff --git a/install/tools/man/ipa-server-upgrade.1 b/install/tools/man/ipa-server-upgrade.1 index 02f252ed4..b3d89bde7 100644 --- a/install/tools/man/ipa-server-upgrade.1 +++ b/install/tools/man/ipa-server-upgrade.1 @@ -18,6 +18,12 @@ ipa\-server\-upgrade will: .SH "OPTIONS" .TP +\fB\-\-skip\-version-\check\fR +Skip version check. WARNING: this option may break your system +.TP +\fB\-\-force\fR +Force upgrade (alias for --skip-version-check) +.TP \fB\-\-version\fR Show IPA version .TP diff --git a/install/tools/man/ipactl.8 b/install/tools/man/ipactl.8 index 5a1fd27ad..136fe9ac6 100644 --- a/install/tools/man/ipactl.8 +++ b/install/tools/man/ipactl.8 @@ -41,5 +41,11 @@ Stop then start all of the services that make up IPA \fB\-d\fR, \fB\-\-debug\fR Display debugging information .TP -\fB\-f\fR, \fB\-\-force\fR +\fB\-\-skip\-version\-check\fR +Skip version check +.TP +\fB\-\-ignore\-service\-failures\fR If any service start fails, do not rollback the services, continue with the operation +.TP +\fB\-f\fR, \fB\-\-force\fR +Force IPA to start. Combine options --skip-version-check and --ignore-service-failures |