stages/ostree.deploy: support an ostree input
This will allow a user to specify an input directly to the deploy stage rather than requiring a ostree.pull stage to be called first. Adding inputs will also be useful when we soon add support for deploying from a container rather than just deploying from an existing ostree commit in a repo.
This commit is contained in:
parent
c6c9454f6f
commit
3cc733d7cd
3 changed files with 39 additions and 30 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue