manifest: add and use add_pipeline method
Instead of passing all pre-created pipelines to the Manifest
constructor, add a `add_pipeline` method, analogous to the
existing `Pipeline.add_{stage, assembler}` methods. Convert
the format loading code to use that and remove the constructor
parameter.
This commit is contained in:
parent
b6642db7a2
commit
42dd3c1e2d
2 changed files with 17 additions and 16 deletions
|
|
@ -1,6 +1,6 @@
|
|||
# Version 1 of the manifest description
|
||||
|
||||
from typing import Dict, List, Optional, Tuple
|
||||
from typing import Dict, Optional, Tuple
|
||||
from osbuild.meta import Index, ValidationResult
|
||||
from ..inputs import Input
|
||||
from ..pipeline import Manifest, Pipeline, detect_host_runner
|
||||
|
|
@ -44,25 +44,25 @@ def describe(manifest: Manifest, *, with_id=False) -> Dict:
|
|||
return description
|
||||
|
||||
|
||||
def load_build(description: Dict, index: Index, result: List[Pipeline]):
|
||||
def load_build(description: Dict, index: Index, manifest: Manifest):
|
||||
pipeline = description.get("pipeline")
|
||||
if pipeline:
|
||||
build_pipeline = load_pipeline(pipeline, index, result)
|
||||
build_pipeline = load_pipeline(pipeline, index, manifest)
|
||||
else:
|
||||
build_pipeline = None
|
||||
|
||||
return build_pipeline, description["runner"]
|
||||
|
||||
|
||||
def load_pipeline(description: Dict, index: Index, result: List[Pipeline]) -> Pipeline:
|
||||
def load_pipeline(description: Dict, index: Index, manifest: Manifest) -> Pipeline:
|
||||
build = description.get("build")
|
||||
if build:
|
||||
build_pipeline, runner = load_build(build, index, result)
|
||||
build_pipeline, runner = load_build(build, index, manifest)
|
||||
else:
|
||||
build_pipeline, runner = None, detect_host_runner()
|
||||
|
||||
build_id = build_pipeline and build_pipeline.tree_id
|
||||
pipeline = Pipeline(runner, build_id)
|
||||
pipeline = manifest.add_pipeline(runner, build_id)
|
||||
|
||||
for s in description.get("stages", []):
|
||||
info = index.get_module_info("Stage", s["name"])
|
||||
|
|
@ -77,8 +77,6 @@ def load_pipeline(description: Dict, index: Index, result: List[Pipeline]) -> Pi
|
|||
"tree": Input(info, {"pipeline": {"id": pipeline.tree_id}})
|
||||
}
|
||||
|
||||
result.append(pipeline)
|
||||
|
||||
return pipeline
|
||||
|
||||
|
||||
|
|
@ -88,16 +86,14 @@ def load(description: Dict, index: Index) -> Manifest:
|
|||
pipeline = description.get("pipeline", {})
|
||||
sources = description.get("sources", {})
|
||||
|
||||
pipelines = []
|
||||
manifest = Manifest(sources)
|
||||
|
||||
load_pipeline(pipeline, index, pipelines)
|
||||
load_pipeline(pipeline, index, manifest)
|
||||
|
||||
for pipeline in pipelines:
|
||||
for pipeline in manifest.pipelines:
|
||||
for stage in pipeline.stages:
|
||||
stage.sources = sources
|
||||
|
||||
manifest = Manifest(pipelines, sources)
|
||||
|
||||
return manifest
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ import contextlib
|
|||
import hashlib
|
||||
import json
|
||||
import os
|
||||
from typing import Dict, List
|
||||
from typing import Dict
|
||||
|
||||
from .api import API
|
||||
from . import buildroot
|
||||
|
|
@ -287,10 +287,15 @@ class Pipeline:
|
|||
class Manifest:
|
||||
"""Representation of a pipeline and its sources"""
|
||||
|
||||
def __init__(self, pipelines: List[Pipeline], source_options: Dict):
|
||||
self.pipelines = pipelines
|
||||
def __init__(self, source_options: Dict):
|
||||
self.pipelines = []
|
||||
self.sources = source_options
|
||||
|
||||
def add_pipeline(self, runner: str, build: str) -> Pipeline:
|
||||
pipeline = Pipeline(runner, build)
|
||||
self.pipelines.append(pipeline)
|
||||
return pipeline
|
||||
|
||||
def build(self, store, monitor, libdir, output_directory):
|
||||
results = {"success": True}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue