Koji: expose image output metadata in build extra metadata
Expose the extra metadata information for each image output stored in `ImageExtraInfo` also in the build extra metadata. The extra metadata for each image is nested under key corresponding to the image filename. Extend the Koji test case to check information in the buildinfo output and specifically check for all expected metadata in the build Extra metadata field. Signed-off-by: Tomáš Hozza <thozza@redhat.com>
This commit is contained in:
parent
350762497f
commit
af1c373407
3 changed files with 92 additions and 15 deletions
|
|
@ -115,17 +115,10 @@ func (impl *KojiFinalizeJobImpl) Run(job worker.Job) error {
|
|||
return err
|
||||
}
|
||||
|
||||
build := koji.Build{
|
||||
TaskID: args.TaskID,
|
||||
Name: args.Name,
|
||||
Version: args.Version,
|
||||
Release: args.Release,
|
||||
StartTime: int64(args.StartTime),
|
||||
EndTime: time.Now().Unix(),
|
||||
}
|
||||
|
||||
var buildRoots []koji.BuildRoot
|
||||
var outputs []koji.BuildOutput
|
||||
// Extra info for each image output is stored using the image filename as the key
|
||||
imgOutputsExtraInfo := map[string]koji.ImageExtraInfo{}
|
||||
|
||||
var osbuildResults []worker.OSBuildJobResult
|
||||
initArgs, osbuildResults, err = extractDynamicArgs(job)
|
||||
|
|
@ -133,7 +126,6 @@ func (impl *KojiFinalizeJobImpl) Run(job worker.Job) error {
|
|||
kojiFinalizeJobResult.JobError = clienterrors.WorkerClientError(clienterrors.ErrorParsingDynamicArgs, "Error parsing dynamic args", err.Error())
|
||||
return err
|
||||
}
|
||||
build.BuildID = initArgs.BuildID
|
||||
|
||||
// Check the dependencies early.
|
||||
if hasFailedDependency(*initArgs, osbuildResults) {
|
||||
|
|
@ -191,6 +183,11 @@ func (impl *KojiFinalizeJobImpl) Run(job worker.Job) error {
|
|||
// deduplicate
|
||||
imageRPMs = rpmmd.DeduplicateRPMs(imageRPMs)
|
||||
|
||||
imgOutputExtraInfo := koji.ImageExtraInfo{
|
||||
Arch: buildArgs.Arch,
|
||||
}
|
||||
imgOutputsExtraInfo[args.KojiFilenames[i]] = imgOutputExtraInfo
|
||||
|
||||
outputs = append(outputs, koji.BuildOutput{
|
||||
BuildRootID: uint64(i),
|
||||
Filename: args.KojiFilenames[i],
|
||||
|
|
@ -201,13 +198,26 @@ func (impl *KojiFinalizeJobImpl) Run(job worker.Job) error {
|
|||
Type: koji.BuildOutputTypeImage,
|
||||
RPMs: imageRPMs,
|
||||
Extra: koji.BuildOutputExtra{
|
||||
Image: koji.ImageExtraInfo{
|
||||
Arch: buildArgs.Arch,
|
||||
},
|
||||
Image: imgOutputExtraInfo,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
build := koji.Build{
|
||||
BuildID: initArgs.BuildID,
|
||||
TaskID: args.TaskID,
|
||||
Name: args.Name,
|
||||
Version: args.Version,
|
||||
Release: args.Release,
|
||||
StartTime: int64(args.StartTime),
|
||||
EndTime: time.Now().Unix(),
|
||||
Extra: koji.BuildExtra{
|
||||
TypeInfo: koji.TypeInfo{
|
||||
Image: imgOutputsExtraInfo,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
err = impl.kojiImport(args.Server, build, buildRoots, outputs, args.KojiDirectory, initArgs.Token)
|
||||
if err != nil {
|
||||
kojiFinalizeJobResult.JobError = clienterrors.WorkerClientError(clienterrors.ErrorKojiFinalize, err.Error(), nil)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue