From cb3cfeddc96801720dbd925e65f9dfce81e77505 Mon Sep 17 00:00:00 2001 From: Jose Castillo Date: Thu, 12 Jun 2025 13:58:21 +0100 Subject: [PATCH] [upload] Fix backtrace when cancelling upload This commit fix a backtrace that appears when the user cancels a file upload after authentication. Related: RHEL-94968 Signed-off-by: Jose Castillo --- sos/upload/__init__.py | 81 ++++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 38 deletions(-) diff --git a/sos/upload/__init__.py b/sos/upload/__init__.py index 7be33f6531..0a2601aa07 100644 --- a/sos/upload/__init__.py +++ b/sos/upload/__init__.py @@ -278,45 +278,50 @@ def pre_work(self): self.policy._configure_low_priority() def execute(self): - self.pre_work() - if self.from_cmdline: - self.intro() - self.archive = self.opts.upload_file - self.caseid = self.policy.prompt_for_case_id( - cmdline_opts=self.opts - ) - cmdline_target = self.opts.upload_target - if cmdline_target and cmdline_target != 'local': - self.upload_target = self.upload_targets[cmdline_target] - else: - self.determine_upload_target() - if not self.upload_target: - # There was no upload target set, so we'll throw - # an error here and exit - self.ui_log.error( - "No upload target set via command line options or" - " autodetected.\n" - "Please specify one using the option --upload-target.\n" - "Exiting." - ) - sys.exit(1) - self.upload_target.pre_work(self.get_commons()) try: - if os.stat(self.archive).st_size > 0: - if os.path.isfile(self.archive): - try: - self.upload_target.upload_archive(self.archive) - self.ui_log.info( - _(f"File {self.archive} uploaded successfully") - ) - except Exception as err: - self.ui_log.error(_(f"Upload attempt failed: {err}")) - sys.exit(1) - else: - self.ui_log.error(_(f"{self.archive} is not a file.")) + self.pre_work() + if self.from_cmdline: + self.intro() + self.archive = self.opts.upload_file + self.caseid = self.policy.prompt_for_case_id( + cmdline_opts=self.opts + ) + cmdline_target = self.opts.upload_target + if cmdline_target and cmdline_target != 'local': + self.upload_target = self.upload_targets[cmdline_target] else: - self.ui_log.error(_(f"File {self.archive} is empty.")) - except Exception as e: - self.ui_log.error(_(f"Cannot upload {self.archive}: {e} ")) + self.determine_upload_target() + if not self.upload_target: + # There was no upload target set, so we'll throw + # an error here and exit + self.ui_log.error( + "No upload target set via command line options or" + " autodetected.\n" + "Please specify one using the option --upload-target.\n" + "Exiting." + ) + sys.exit(1) + self.upload_target.pre_work(self.get_commons()) + try: + if os.stat(self.archive).st_size > 0: + if os.path.isfile(self.archive): + try: + self.upload_target.upload_archive(self.archive) + self.ui_log.info( + _(f"File {self.archive} uploaded successfully") + ) + except Exception as err: + self.ui_log.error(_( + f"Upload attempt failed: {err}")) + sys.exit(1) + else: + self.ui_log.error(_(f"{self.archive} is not a file.")) + else: + self.ui_log.error(_(f"File {self.archive} is empty.")) + except Exception as e: + self.ui_log.error(_(f"Cannot upload {self.archive}: {e} ")) + except KeyboardInterrupt: + self._exit("Exiting on user cancel", 130) + # vim: set et ts=4 sw=4 :