diff --git a/stages/org.osbuild.ostree.deploy b/stages/org.osbuild.ostree.deploy index c0c52730..7006f07f 100755 --- a/stages/org.osbuild.ostree.deploy +++ b/stages/org.osbuild.ostree.deploy @@ -81,6 +81,17 @@ SCHEMA_2 = """ } } } +}, +"inputs": { + "type": "object", + "required": ["commits"], + "additionalProperties": false, + "properties": { + "commits": { + "type": "object", + "additionalProperties": true + } + } } """ @@ -93,7 +104,7 @@ def make_fs_identifier(desc): raise ValueError("unknown rootfs type") -def main(tree, options): +def main(tree, inputs, options): osname = options["osname"] rootfs = options.get("rootfs") mounts = options.get("mounts", []) @@ -101,6 +112,14 @@ def main(tree, options): ref = options["ref"] remote = options.get("remote") + # If provided an input then do the pull into the tree + if len(inputs) != 0: + source_repo, commits = ostree.parse_input_commits(inputs["commits"]) + target_repo = f"{tree}/ostree/repo" + for commit, data in commits.items(): + loopref = data.get("ref", commit) + ostree.pull_local(source_repo, target_repo, remote, loopref) + if remote: ref = f"{remote}:{ref}" @@ -128,5 +147,6 @@ def main(tree, options): if __name__ == '__main__': stage_args = osbuild.api.arguments() r = main(stage_args["tree"], + stage_args["inputs"], stage_args["options"]) sys.exit(r) diff --git a/test/data/manifests/fedora-ostree-image.json b/test/data/manifests/fedora-ostree-image.json index 8a131fae..623b6142 100644 --- a/test/data/manifests/fedora-ostree-image.json +++ b/test/data/manifests/fedora-ostree-image.json @@ -1040,24 +1040,6 @@ { "type": "org.osbuild.ostree.init-fs" }, - { - "type": "org.osbuild.ostree.pull", - "options": { - "repo": "/ostree/repo", - "remote": "osbuild" - }, - "inputs": { - "commits": { - "type": "org.osbuild.ostree", - "origin": "org.osbuild.pipeline", - "references": { - "name:ostree-commit": { - "ref": "fedora/x86_64/osbuild" - } - } - } - } - }, { "type": "org.osbuild.ostree.os-init", "options": { @@ -1108,6 +1090,17 @@ "systemd.journald.forward_to_console=1", "luks.uuid=aedd1eef-f24e-425e-a9f3-bb5a1c996a95" ] + }, + "inputs": { + "commits": { + "type": "org.osbuild.ostree", + "origin": "org.osbuild.pipeline", + "references": { + "name:ostree-commit": { + "ref": "fedora/x86_64/osbuild" + } + } + } } }, { diff --git a/test/data/manifests/fedora-ostree-image.mpp.yaml b/test/data/manifests/fedora-ostree-image.mpp.yaml index 38bfaf9a..4ac2180a 100644 --- a/test/data/manifests/fedora-ostree-image.mpp.yaml +++ b/test/data/manifests/fedora-ostree-image.mpp.yaml @@ -40,17 +40,6 @@ pipelines: source-epoch: 1659397331 stages: - type: org.osbuild.ostree.init-fs - - type: org.osbuild.ostree.pull - options: - repo: /ostree/repo - remote: osbuild - inputs: - commits: - type: org.osbuild.ostree - origin: org.osbuild.pipeline - references: - name:ostree-commit: - ref: fedora/x86_64/osbuild - type: org.osbuild.ostree.os-init options: osname: fedora @@ -83,6 +72,13 @@ pipelines: - systemd.log_target=console - systemd.journald.forward_to_console=1 - luks.uuid=aedd1eef-f24e-425e-a9f3-bb5a1c996a95 + inputs: + commits: + type: org.osbuild.ostree + origin: org.osbuild.pipeline + references: + name:ostree-commit: + ref: fedora/x86_64/osbuild - type: org.osbuild.ostree.fillvar options: deployment: