From b1229de56e4a08049e8941f94aaba5bd5b030953 Mon Sep 17 00:00:00 2001 From: chloenayon Date: Mon, 31 Aug 2020 19:58:35 +0200 Subject: [PATCH] pipeline: unify object exporting Remove output.export and associated logic in pipeline.assemble. Instead, return output or None, and export only once in pipeline.run. --- osbuild/pipeline.py | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/osbuild/pipeline.py b/osbuild/pipeline.py index 0b97cc5b..750eff88 100644 --- a/osbuild/pipeline.py +++ b/osbuild/pipeline.py @@ -284,11 +284,11 @@ class Pipeline: return results, build_tree, tree - def assemble(self, object_store, build_tree, tree, monitor, libdir, output_directory): + def assemble(self, object_store, build_tree, tree, monitor, libdir): results = {"success": True} if not self.assembler: - return results + return results, None output = object_store.new() @@ -312,19 +312,16 @@ class Pipeline: if not r.success: output.cleanup() results["success"] = False - return results + return results, None if self.assembler.checkpoint: object_store.commit(output, self.assembler.id) - if output_directory: - output.export(output_directory) - output.cleanup() - return results + return results, output def run(self, store, monitor, libdir, output_directory): os.makedirs("/run/osbuild", exist_ok=True) - results = {} + results = {"success": True} monitor.begin(self) @@ -336,11 +333,7 @@ class Pipeline: # usually be needless overhead. obj = object_store.get(self.output_id) - if obj: - results = {"success": True} - obj.export(output_directory) - - else: + if not obj: results, build_tree, tree = self.build_stages(object_store, monitor, libdir) @@ -348,15 +341,19 @@ class Pipeline: if not results["success"]: return results - r = self.assemble(object_store, - build_tree, - tree, - monitor, - libdir, - output_directory) + r, obj = self.assemble(object_store, + build_tree, + tree, + monitor, + libdir) results.update(r) # This will also update 'success' + if obj: + if output_directory: + obj.export(output_directory) + obj.cleanup() + monitor.finish(results) return results