summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ipaserver/install/service.py17
1 files changed, 9 insertions, 8 deletions
diff --git a/ipaserver/install/service.py b/ipaserver/install/service.py
index d095fe041..d2556dccc 100644
--- a/ipaserver/install/service.py
+++ b/ipaserver/install/service.py
@@ -370,14 +370,15 @@ class Service(object):
run_step(full_msg, method)
step += 1
except BaseException as e:
- # show the traceback, so it's not lost if the cleanup method fails
- root_logger.debug("%s" % traceback.format_exc())
- self.print_msg(' [error] %s: %s' % (type(e).__name__, e))
-
- # run through remaining methods marked run_after_failure
- for message, method, run_after_failure in steps_iter:
- if run_after_failure:
- run_step(" [cleanup]: %s" % message, method)
+ if not (isinstance(e, SystemExit) and e.code == 0):
+ # show the traceback, so it's not lost if cleanup method fails
+ root_logger.debug("%s" % traceback.format_exc())
+ self.print_msg(' [error] %s: %s' % (type(e).__name__, e))
+
+ # run through remaining methods marked run_after_failure
+ for message, method, run_after_failure in steps_iter:
+ if run_after_failure:
+ run_step(" [cleanup]: %s" % message, method)
raise