diff options
Diffstat (limited to 'base/server/sbin/pkidestroy')
-rwxr-xr-x | base/server/sbin/pkidestroy | 43 |
1 files changed, 34 insertions, 9 deletions
diff --git a/base/server/sbin/pkidestroy b/base/server/sbin/pkidestroy index d7285c7e5..404298ba9 100755 --- a/base/server/sbin/pkidestroy +++ b/base/server/sbin/pkidestroy @@ -35,6 +35,7 @@ try: import struct import subprocess import time + import traceback from time import strftime as date from pki.server.deployment import pkiconfig as config from pki.server.deployment.pkiparser import PKIConfigParser @@ -256,15 +257,26 @@ def main(argv): # Process the various "scriptlets" to remove the specified PKI subsystem. pki_subsystem_scriptlets = parser.mdict['destroy_scriplets'].split() deployer = util.PKIDeployer(parser.mdict) - rv = 0 - for scriptlet_name in pki_subsystem_scriptlets: - scriptlet_module = __import__( - "pki.server.deployment.scriptlets." + scriptlet_name, - fromlist=[scriptlet_name]) - scriptlet = scriptlet_module.PkiScriptlet() - rv = scriptlet.destroy(deployer) - if rv != 0: - sys.exit(1) + + try: + for scriptlet_name in pki_subsystem_scriptlets: + + scriptlet_module = __import__( + "pki.server.deployment.scriptlets." + scriptlet_name, + fromlist=[scriptlet_name]) + + scriptlet = scriptlet_module.PkiScriptlet() + + scriptlet.destroy(deployer) + + # pylint: disable=W0703 + except Exception as e: + log_error_details() + print() + print("Uninstallation failed: %s" % e) + print() + sys.exit(1) + config.pki_log.debug(log.PKI_DICTIONARY_MASTER, extra=config.PKI_INDENTATION_LEVEL_0) config.pki_log.debug(pkilogging.log_format(parser.mdict), @@ -274,6 +286,19 @@ def main(argv): print("Uninstallation complete.") +def log_error_details(): + e_type, e_value, e_stacktrace = sys.exc_info() + config.pki_log.debug( + "Error Type: " + e_type.__name__, extra=config.PKI_INDENTATION_LEVEL_2) + config.pki_log.debug( + "Error Message: " + str(e_value), extra=config.PKI_INDENTATION_LEVEL_2) + stacktrace_list = traceback.format_list(traceback.extract_tb(e_stacktrace)) + e_stacktrace = "" + for l in stacktrace_list: + e_stacktrace += l + config.pki_log.debug(e_stacktrace, extra=config.PKI_INDENTATION_LEVEL_2) + del e_type, e_value, e_stacktrace + # PKI Deployment Entry Point if __name__ == "__main__": signal.signal(signal.SIGINT, interrupt_handler) |