From 0e3bfd1eb771802edab0d5f72dc7a9e8538f2fa7 Mon Sep 17 00:00:00 2001 From: Vratislav Podzimek Date: Tue, 17 May 2016 14:35:39 +0200 Subject: [PATCH 04/13] Just report misconfiguration instead of crashing in text mode User should get to know what happened, but crashing and showing a traceback is not really a great way to do it. Showing a text "dialog" with all the information we have is much better. Resolves: rhbz#1263207 --- org_fedora_oscap/ks/oscap.py | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/org_fedora_oscap/ks/oscap.py b/org_fedora_oscap/ks/oscap.py index 5c29d4a..44c442f 100644 --- a/org_fedora_oscap/ks/oscap.py +++ b/org_fedora_oscap/ks/oscap.py @@ -466,10 +466,28 @@ class OSCAPdata(AddonData): # evaluate rules, do automatic fixes and stop if something that cannot # be fixed automatically is wrong - messages = self.rule_data.eval_rules(ksdata, storage) - if any(message.type == common.MESSAGE_TYPE_FATAL - for message in messages): - raise MisconfigurationError("Wrong configuration detected!") + fatal_messages = [message for message in self.rule_data.eval_rules(ksdata, storage) + if message.type == common.MESSAGE_TYPE_FATAL] + if any(fatal_messages): + msg = "Wrong configuration detected!\n" + msg += "\n".join(message.text for message in fatal_messages) + msg += "\nThe installation should be aborted. Do you wish to continue anyway?" + if flags.flags.automatedInstall and not flags.flags.ksprompt: + # cannot have ask in a non-interactive kickstart installation + raise errors.CmdlineError(msg) + + answ = errors.errorHandler.ui.showYesNoQuestion(msg) + if answ == errors.ERROR_CONTINUE: + # prevent any futher actions here by switching to the dry + # run mode and let things go on + self.dry_run = True + return + else: + # Let's sleep forever to prevent any further actions and wait for + # the main thread to quit the process. + progressQ.send_quit(1) + while True: + time.sleep(100000) # add packages needed on the target system to the list of packages # that are requested to be installed -- 2.5.5