leapp/SOURCES/0001-Make-checks-for-missin...

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