51 lines
2.2 KiB
Diff
51 lines
2.2 KiB
Diff
From 84de08e3fe25c7eadf5cbb2f18b83acf3536fc2a Mon Sep 17 00:00:00 2001
|
|
From: Inessa Vasilevskaya <ivasilev@redhat.com>
|
|
Date: Tue, 6 Sep 2022 15:26:52 +0200
|
|
Subject: [PATCH] Make checks for missing answers more strict
|
|
|
|
Previously only presence of one section in the answerfile
|
|
has been verified, which led to false-positive preupgrade
|
|
reports when some other key has been present in the
|
|
dialog section instead of the required one.
|
|
|
|
OAMG-7521
|
|
---
|
|
leapp/messaging/__init__.py | 12 ++++++++++--
|
|
1 file changed, 10 insertions(+), 2 deletions(-)
|
|
|
|
diff --git a/leapp/messaging/__init__.py b/leapp/messaging/__init__.py
|
|
index 1ecc42e..9896179 100644
|
|
--- a/leapp/messaging/__init__.py
|
|
+++ b/leapp/messaging/__init__.py
|
|
@@ -152,10 +152,17 @@ class BaseMessaging(object):
|
|
"""
|
|
self._stop_after_phase.set(True)
|
|
|
|
+ def _unanswered_questions(self, dialog):
|
|
+ userchoices = dialog.get_answers(self._answers)
|
|
+ res = [s for s in dialog.answerfile_sections.keys() if s.split('.', 2)[1] not in userchoices]
|
|
+ return res
|
|
+
|
|
def register_dialog(self, dialog, actor):
|
|
+ # FIXME(ivasilev) Make sure it works correctly in case of a dialog with several questions. Currently there
|
|
+ # is no such dialog in actors but this code should be revisited if this changes. OAMG-7523
|
|
self._dialogs.append(dialog)
|
|
- userchoices = dialog.get_answers(self._answers)
|
|
- if not userchoices:
|
|
+ unanswered = self._unanswered_questions(dialog)
|
|
+ if unanswered:
|
|
# produce DialogModel messages for all the dialogs that don't have answers in answerfile
|
|
stable_key = dialog.key if dialog.key else hashlib.sha1(
|
|
','.join(sorted(dialog.answerfile_sections.keys())).encode('utf-8')).hexdigest()
|
|
@@ -164,6 +171,7 @@ class BaseMessaging(object):
|
|
key=stable_key), actor)
|
|
else:
|
|
# update dialogs with answers from answerfile. That is necessary for proper answerfile generation
|
|
+ userchoices = dialog.get_answers(self._answers)
|
|
for component, value in userchoices.items():
|
|
dialog_component = dialog.component_by_key(component)
|
|
if dialog_component:
|
|
--
|
|
2.37.2
|
|
|