pipeline: remove Assembler class

Now that assemblers are represented via the `Stage` class, the
Assembler class is not needed anymore. Adjust the monitor method
to take an `pipeline.Stage` for the `assembler` method as well.
This commit is contained in:
Christian Kellner 2021-01-18 17:40:54 +00:00
parent 8ccc73d1c3
commit 6c02002cbd
4 changed files with 3 additions and 55 deletions

View file

@ -8,11 +8,10 @@ The utility module `osbuild.util` provides access to common functionality
independent of osbuild but used across the osbuild codebase.
"""
from .pipeline import Assembler, Manifest, Pipeline, Stage
from .pipeline import Manifest, Pipeline, Stage
__all__ = [
"Assembler",
"Manifest",
"Pipeline",
"Stage",

View file

@ -66,7 +66,7 @@ class BaseMonitor(abc.ABC):
def stage(self, stage: osbuild.Stage):
"""Called when a stage is being built"""
def assembler(self, assembler: osbuild.Assembler):
def assembler(self, assembler: osbuild.Stage):
"""Called when an assembler is being built"""
def result(self, result: osbuild.pipeline.BuildResult):

View file

@ -110,57 +110,6 @@ class Stage:
return BuildResult(self, r.returncode, r.output, api.metadata, api.error)
class Assembler:
def __init__(self, name, build, base, options):
self.name = name
self.build = build
self.base = base
self.options = options
self.checkpoint = False
@property
def id(self):
m = hashlib.sha256()
m.update(json.dumps(self.name, sort_keys=True).encode())
m.update(json.dumps(self.build, sort_keys=True).encode())
m.update(json.dumps(self.base, sort_keys=True).encode())
m.update(json.dumps(self.options, sort_keys=True).encode())
return m.hexdigest()
def run(self, tree, runner, build_tree, monitor, libdir, output_dir, var="/var/tmp"):
with buildroot.BuildRoot(build_tree, runner, libdir, var=var) as build_root:
args = {
"tree": "/run/osbuild/tree",
"options": self.options,
"meta": {
"id": self.id
}
}
binds = []
output_dir = os.fspath(output_dir)
os.makedirs(output_dir, exist_ok=True)
binds.append(f"{output_dir}:/run/osbuild/output")
args["output_dir"] = "/run/osbuild/output"
ro_binds = [os.fspath(tree) + ":/run/osbuild/tree"]
api = API(args, monitor)
build_root.register_api(api)
rls = remoteloop.LoopServer()
build_root.register_api(rls)
r = build_root.run([f"/run/osbuild/lib/assemblers/{self.name}"],
monitor,
binds=binds,
readonly_binds=ro_binds)
return BuildResult(self, r.returncode, r.output, api.metadata, api.error)
class Pipeline:
def __init__(self, runner=None, build=None):
self.build = build

View file

@ -38,7 +38,7 @@ class TapeMonitor(osbuild.monitor.BaseMonitor):
self.counter["stages"] += 1
self.stages.add(stage.id)
def assembler(self, assembler: osbuild.Assembler):
def assembler(self, assembler: osbuild.Stage):
self.counter["assembler"] += 1
self.asm = assembler.id