cloudapi: return ostree commit ID with metadata
When the assembler (v1) or any stage (v2) has type ostree.commit, retrieve the commit ID (hash) from the osbuild stage metadata and return it with the rest of the metadata (package NEVRAs).
This commit is contained in:
parent
e87394fea1
commit
39e646ae68
1 changed files with 33 additions and 1 deletions
|
|
@ -19,6 +19,7 @@ import (
|
|||
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
||||
"github.com/osbuild/osbuild-composer/internal/distro"
|
||||
"github.com/osbuild/osbuild-composer/internal/distroregistry"
|
||||
"github.com/osbuild/osbuild-composer/internal/osbuild1"
|
||||
"github.com/osbuild/osbuild-composer/internal/ostree"
|
||||
"github.com/osbuild/osbuild-composer/internal/rpmmd"
|
||||
"github.com/osbuild/osbuild-composer/internal/target"
|
||||
|
|
@ -566,9 +567,40 @@ func (server *Server) ComposeMetadata(w http.ResponseWriter, r *http.Request, id
|
|||
Signature: rpm.Signature,
|
||||
}
|
||||
}
|
||||
|
||||
manifestVer, err := job.Manifest.Version()
|
||||
if err != nil {
|
||||
panic("Failed to parse manifest version: " + err.Error())
|
||||
}
|
||||
|
||||
ostreeCommitResult := new(osbuild1.StageResult)
|
||||
switch manifestVer {
|
||||
case "1":
|
||||
if assemblerResult := result.OSBuildOutput.Assembler; assemblerResult.Name == "org.osbuild.ostree.commit" {
|
||||
ostreeCommitResult = result.OSBuildOutput.Assembler
|
||||
}
|
||||
case "2":
|
||||
// find the ostree.commit stage
|
||||
for idx, stage := range result.OSBuildOutput.Stages {
|
||||
if stage.Name == "org.osbuild.ostree.commit" {
|
||||
ostreeCommitResult = &result.OSBuildOutput.Stages[idx]
|
||||
break
|
||||
}
|
||||
}
|
||||
default:
|
||||
panic("Unknown manifest version: " + manifestVer)
|
||||
}
|
||||
|
||||
resp := new(ComposeMetadata)
|
||||
resp.Packages = &packages
|
||||
resp.OstreeCommit = nil
|
||||
|
||||
if ostreeCommitResult != nil {
|
||||
commitMetadata, ok := ostreeCommitResult.Metadata.(*osbuild1.OSTreeCommitStageMetadata)
|
||||
if !ok {
|
||||
panic("Failed to parse ostree commit stage metadata")
|
||||
}
|
||||
resp.OstreeCommit = &commitMetadata.Compose.OSTreeCommit
|
||||
}
|
||||
|
||||
if err := json.NewEncoder(w).Encode(resp); err != nil {
|
||||
panic("Failed to write response: " + err.Error())
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue