|
|
fbcaed |
From 67a9b1477ef706b6b47fc5f37d864076b653c017 Mon Sep 17 00:00:00 2001
|
|
|
fbcaed |
From: Chris Lumens <clumens@redhat.com>
|
|
|
fbcaed |
Date: Fri, 3 Oct 2014 11:04:35 -0400
|
|
|
fbcaed |
Subject: [PATCH 21/21] Graphically handle errors arising from ostree repo pull
|
|
|
fbcaed |
problems.
|
|
|
fbcaed |
|
|
|
fbcaed |
This requires setting up a new glib main context as well, so ostree doesn't
|
|
|
fbcaed |
nuke the one we're currently using and make it impossible to do anything
|
|
|
fbcaed |
with GTK.
|
|
|
fbcaed |
|
|
|
fbcaed |
Resolves: rhbz#1131382
|
|
|
fbcaed |
---
|
|
|
fbcaed |
pyanaconda/packaging/rpmostreepayload.py | 18 +++++++++++++++++-
|
|
|
fbcaed |
1 file changed, 17 insertions(+), 1 deletion(-)
|
|
|
fbcaed |
|
|
|
fbcaed |
diff --git a/pyanaconda/packaging/rpmostreepayload.py b/pyanaconda/packaging/rpmostreepayload.py
|
|
|
fbcaed |
index aba85bb..8be6d3b 100644
|
|
|
fbcaed |
--- a/pyanaconda/packaging/rpmostreepayload.py
|
|
|
fbcaed |
+++ b/pyanaconda/packaging/rpmostreepayload.py
|
|
|
fbcaed |
@@ -22,7 +22,9 @@
|
|
|
fbcaed |
|
|
|
fbcaed |
import os
|
|
|
fbcaed |
import shutil
|
|
|
fbcaed |
+import sys
|
|
|
fbcaed |
|
|
|
fbcaed |
+from pyanaconda import constants
|
|
|
fbcaed |
from pyanaconda import iutil
|
|
|
fbcaed |
from pyanaconda.i18n import _
|
|
|
fbcaed |
from pyanaconda.progress import progressQ
|
|
|
fbcaed |
@@ -88,6 +90,9 @@ class RPMOSTreePayload(ArchivePayload):
|
|
|
fbcaed |
progressQ.send_message("Writing objects")
|
|
|
fbcaed |
|
|
|
fbcaed |
def install(self):
|
|
|
fbcaed |
+ mainctx = GLib.MainContext.new()
|
|
|
fbcaed |
+ mainctx.push_thread_default()
|
|
|
fbcaed |
+
|
|
|
fbcaed |
cancellable = None
|
|
|
fbcaed |
from gi.repository import OSTree
|
|
|
fbcaed |
ostreesetup = self.data.ostreesetup
|
|
|
fbcaed |
@@ -120,7 +125,16 @@ class RPMOSTreePayload(ArchivePayload):
|
|
|
fbcaed |
|
|
|
fbcaed |
progress = OSTree.AsyncProgress.new()
|
|
|
fbcaed |
progress.connect('changed', self._pullProgressCb)
|
|
|
fbcaed |
- repo.pull(ostreesetup.remote, [ostreesetup.ref], 0, progress, cancellable)
|
|
|
fbcaed |
+
|
|
|
fbcaed |
+ try:
|
|
|
fbcaed |
+ repo.pull(ostreesetup.remote, [ostreesetup.ref], 0, progress, cancellable)
|
|
|
fbcaed |
+ except GLib.GError as e:
|
|
|
fbcaed |
+ exn = PayloadInstallError("Failed to pull from repository: %s" % e)
|
|
|
fbcaed |
+ log.error(str(exn))
|
|
|
fbcaed |
+ if errors.errorHandler.cb(exn) == errors.ERROR_RAISE:
|
|
|
fbcaed |
+ progressQ.send_quit(1)
|
|
|
fbcaed |
+ iutil.ipmi_report(constants.IPMI_ABORTED)
|
|
|
fbcaed |
+ sys.exit(1)
|
|
|
fbcaed |
|
|
|
fbcaed |
progressQ.send_message(_("Preparing deployment of %s") % (ostreesetup.ref, ))
|
|
|
fbcaed |
|
|
|
fbcaed |
@@ -164,6 +178,8 @@ class RPMOSTreePayload(ArchivePayload):
|
|
|
fbcaed |
log.info("Copying bootloader data: " + fname)
|
|
|
fbcaed |
shutil.copytree(srcpath, os.path.join(physboot, fname))
|
|
|
fbcaed |
|
|
|
fbcaed |
+ mainctx.pop_thread_default()
|
|
|
fbcaed |
+
|
|
|
fbcaed |
def prepareMountTargets(self, storage):
|
|
|
fbcaed |
ostreesetup = self.data.ostreesetup
|
|
|
fbcaed |
|
|
|
fbcaed |
--
|
|
|
fbcaed |
1.9.3
|
|
|
fbcaed |
|