[PATCH 3/3] DNFPayload: error handling and logging cleanups.

Ales Kozumplik akozumpl at redhat.com
Fri Oct 11 12:38:38 UTC 2013


From: Ales Kozumplik <ales at redhat.com>

---
 pyanaconda/packaging/dnfpayload.py | 15 ++++++++++-----
 1 file changed, 10 insertions(+), 5 deletions(-)

diff --git a/pyanaconda/packaging/dnfpayload.py b/pyanaconda/packaging/dnfpayload.py
index a9900e6..fe84e7f 100644
--- a/pyanaconda/packaging/dnfpayload.py
+++ b/pyanaconda/packaging/dnfpayload.py
@@ -80,7 +80,7 @@ def do_transaction(base, queue):
     except BaseException as e:
         log.error('The transaction process has ended abruptly')
         log.info(e)
-        queue.put('quit', str(e))
+        queue.put(('quit', str(e)))
 
 class DNFPayload(packaging.PackagePayload):
     def __init__(self, data):
@@ -104,10 +104,12 @@ class DNFPayload(packaging.PackagePayload):
         repo.sslverify = not (ksrepo.noverifyssl or flags.noverifyssl)
         repo.enable()
         self._base.repos.add(repo)
+        log.info("added repo: '%s'", ksrepo.name)
 
     def _apply_selections(self):
         self._select_group('core')
         for pkg_name in self.data.packages.packageList:
+            log.info("selecting package: '%s'", pkg_name)
             try:
                 self._install_package(pkg_name)
             except packaging.NoSuchPackage as e:
@@ -263,10 +265,9 @@ class DNFPayload(packaging.PackagePayload):
         self._base.reset(goal=True)
         self._apply_selections()
 
-        log.info("checking dependencies")
         try:
             if self._base.build_transaction():
-                log.debug("success")
+                log.debug("checking dependencies: success.")
             else:
                 log.debug("empty transaction")
         except dnf.exceptions.DepsolveError as e:
@@ -346,15 +347,19 @@ class DNFPayload(packaging.PackagePayload):
 
         queue = multiprocessing.Queue()
         process = multiprocessing.Process(target=do_transaction,
-                                          args=(self._base,queue))
+                                          args=(self._base, queue))
         process.start()
         (token, msg) = queue.get()
-        while token != 'post':
+        while token not in ('post', 'quit'):
             if token == 'install':
                 msg = _("Installing %s") % msg
                 progressQ.send_message(msg)
             (token, msg) = queue.get()
 
+        if token == 'quit':
+            progressQ.send_quit(1)
+            sys.exit(1)
+
         post_msg = _("Performing post-installation setup tasks")
         progressQ.send_message(post_msg)
         process.join()
-- 
1.8.3.1



More information about the anaconda-patches mailing list