Pipeline: drop the build setter
Take this as an argumnet to __init__ in the same way that `base` is. This avoids us having to deal with the case of someone setting a stage before the build, which does not work as the stage id will be wrong. Signed-off-by: Tom Gundersen <teg@jklm.no>
This commit is contained in:
parent
ea68bb0c26
commit
0a9223b6f2
2 changed files with 9 additions and 14 deletions
|
|
@ -374,20 +374,15 @@ class Assembler:
|
||||||
|
|
||||||
|
|
||||||
class Pipeline:
|
class Pipeline:
|
||||||
def __init__(self, base=None):
|
def __init__(self, build=None, base=None):
|
||||||
self.base = base
|
self.base = base
|
||||||
self.build = None
|
self.build = build
|
||||||
self.stages = []
|
self.stages = []
|
||||||
self.assembler = None
|
self.assembler = None
|
||||||
|
|
||||||
def get_id(self):
|
def get_id(self):
|
||||||
return self.stages[-1].id if self.stages else self.base
|
return self.stages[-1].id if self.stages else self.base
|
||||||
|
|
||||||
def set_build(self, pipeline):
|
|
||||||
if self.stages:
|
|
||||||
raise ValueError("Must set build before stages.")
|
|
||||||
self.build = pipeline
|
|
||||||
|
|
||||||
def add_stage(self, name, options=None):
|
def add_stage(self, name, options=None):
|
||||||
build = self.build.get_id() if self.build else None
|
build = self.build.get_id() if self.build else None
|
||||||
stage = Stage(name, build, self.get_id(), options or {})
|
stage = Stage(name, build, self.get_id(), options or {})
|
||||||
|
|
@ -474,11 +469,12 @@ class Pipeline:
|
||||||
|
|
||||||
|
|
||||||
def load(description):
|
def load(description):
|
||||||
pipeline = Pipeline(description.get("base"))
|
build_description = description.get("build")
|
||||||
|
if build_description:
|
||||||
b = description.get("build")
|
build = load(build_description)
|
||||||
if b:
|
else:
|
||||||
pipeline.set_build(load(b))
|
build = None
|
||||||
|
pipeline = Pipeline(build, description.get("base"))
|
||||||
|
|
||||||
for s in description.get("stages", []):
|
for s in description.get("stages", []):
|
||||||
pipeline.add_stage(s["name"], s.get("options", {}))
|
pipeline.add_stage(s["name"], s.get("options", {}))
|
||||||
|
|
|
||||||
|
|
@ -47,8 +47,7 @@ class TestDescriptions(unittest.TestCase):
|
||||||
build = osbuild.Pipeline()
|
build = osbuild.Pipeline()
|
||||||
build.add_stage("org.osbuild.test", { "one": 1 })
|
build.add_stage("org.osbuild.test", { "one": 1 })
|
||||||
|
|
||||||
pipeline = osbuild.Pipeline()
|
pipeline = osbuild.Pipeline(build)
|
||||||
pipeline.set_build(build)
|
|
||||||
pipeline.add_stage("org.osbuild.test", { "one": 2 })
|
pipeline.add_stage("org.osbuild.test", { "one": 2 })
|
||||||
pipeline.set_assembler("org.osbuild.test")
|
pipeline.set_assembler("org.osbuild.test")
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue