From 144019a40c45f7889bcb200a6d4fb33828b21d2c Mon Sep 17 00:00:00 2001 From: Christian Kellner Date: Wed, 22 Jul 2020 17:02:33 +0200 Subject: [PATCH] pipeline: use buildroot.regsiter_api Register all API end point providers with the `BuildRoot` via the new `BuildRoot.register_api` call. The context management is now done via the `BuildRoot` itself. --- osbuild/pipeline.py | 46 +++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/osbuild/pipeline.py b/osbuild/pipeline.py index ad834be0..ea0683b0 100644 --- a/osbuild/pipeline.py +++ b/osbuild/pipeline.py @@ -78,18 +78,21 @@ class Stage: ro_binds = [f"{sources_output}:/run/osbuild/sources"] - with API(f"{build_root.api}/osbuild", args, monitor) as api, \ - sources.SourcesServer(f"{build_root.api}/sources", - libdir or "/usr/lib/osbuild", - self.sources, - os.path.join(cache, "sources"), - sources_output): - r = build_root.run( - [f"/run/osbuild/lib/stages/{self.name}"], - binds=[os.fspath(tree) + ":/run/osbuild/tree"], - readonly_binds=ro_binds, - ) - return BuildResult(self, r.returncode, api.output) + api = API(f"{build_root.api}/osbuild", args, monitor) + build_root.register_api(api) + + src = sources.SourcesServer(f"{build_root.api}/sources", + libdir or "/usr/lib/osbuild", + self.sources, + os.path.join(cache, "sources"), + sources_output) + build_root.register_api(src) + + r = build_root.run([f"/run/osbuild/lib/stages/{self.name}"], + binds=[os.fspath(tree) + ":/run/osbuild/tree"], + readonly_binds=ro_binds) + + return BuildResult(self, r.returncode, api.output) class Assembler: @@ -137,14 +140,17 @@ class Assembler: ro_binds = [os.fspath(tree) + ":/run/osbuild/tree"] - with remoteloop.LoopServer(f"{build_root.api}/remoteloop"), \ - API(f"{build_root.api}/osbuild", args, monitor) as api: - r = build_root.run( - [f"/run/osbuild/lib/assemblers/{self.name}"], - binds=binds, - readonly_binds=ro_binds, - ) - return BuildResult(self, r.returncode, api.output) + api = API(f"{build_root.api}/osbuild", args, monitor) + build_root.register_api(api) + + rls = remoteloop.LoopServer(f"{build_root.api}/remoteloop") + build_root.register_api(rls) + + r = build_root.run([f"/run/osbuild/lib/assemblers/{self.name}"], + binds=binds, + readonly_binds=ro_binds) + + return BuildResult(self, r.returncode, api.output) class Pipeline: