Target: expose osbuild artifact information in target result

Add the information about osbuid artifact to the target result.
Specifically the name of the osbuild pipeline which was exported for the
specific target, and the filename of the exported file.

This will later enable embedding this information in Koji build metadata
to make it easy to reproduce the image build using the attached
manifest.
This commit is contained in:
Tomáš Hozza 2023-09-21 09:36:16 +02:00 committed by Tomáš Hozza
parent 4f51d44762
commit 5b414a4516
13 changed files with 71 additions and 42 deletions

View file

@ -458,7 +458,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
var targetResult *target.TargetResult
switch targetOptions := jobTarget.Options.(type) {
case *target.WorkerServerTargetOptions:
targetResult = target.NewWorkerServerTargetResult()
targetResult = target.NewWorkerServerTargetResult(&jobTarget.OsbuildArtifact)
var f *os.File
imagePath := path.Join(outputDirectory, jobTarget.OsbuildArtifact.ExportName, jobTarget.OsbuildArtifact.ExportFilename)
f, err = os.Open(imagePath)
@ -474,7 +474,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
case *target.VMWareTargetOptions:
targetResult = target.NewVMWareTargetResult()
targetResult = target.NewVMWareTargetResult(&jobTarget.OsbuildArtifact)
credentials := vmware.Credentials{
Username: targetOptions.Username,
Password: targetOptions.Password,
@ -528,7 +528,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
case *target.AWSTargetOptions:
targetResult = target.NewAWSTargetResult(nil)
targetResult = target.NewAWSTargetResult(nil, &jobTarget.OsbuildArtifact)
a, err := impl.getAWS(targetOptions.Region, targetOptions.AccessKeyID, targetOptions.SecretAccessKey, targetOptions.SessionToken)
if err != nil {
targetResult.TargetError = clienterrors.WorkerClientError(clienterrors.ErrorInvalidConfig, err.Error(), nil)
@ -585,7 +585,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
case *target.AWSS3TargetOptions:
targetResult = target.NewAWSS3TargetResult(nil)
targetResult = target.NewAWSS3TargetResult(nil, &jobTarget.OsbuildArtifact)
a, bucket, err := impl.getAWSForS3Target(targetOptions)
if err != nil {
targetResult.TargetError = clienterrors.WorkerClientError(clienterrors.ErrorInvalidConfig, err.Error(), nil)
@ -605,7 +605,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
targetResult.Options = &target.AWSS3TargetResultOptions{URL: url}
case *target.AzureTargetOptions:
targetResult = target.NewAzureTargetResult()
targetResult = target.NewAzureTargetResult(&jobTarget.OsbuildArtifact)
azureStorageClient, err := azure.NewStorageClient(targetOptions.StorageAccount, targetOptions.StorageAccessKey)
if err != nil {
targetResult.TargetError = clienterrors.WorkerClientError(clienterrors.ErrorInvalidConfig, err.Error(), nil)
@ -633,7 +633,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
case *target.GCPTargetOptions:
targetResult = target.NewGCPTargetResult(nil)
targetResult = target.NewGCPTargetResult(nil, &jobTarget.OsbuildArtifact)
ctx := context.Background()
g, err := impl.getGCP(targetOptions.Credentials)
@ -698,7 +698,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
case *target.AzureImageTargetOptions:
targetResult = target.NewAzureImageTargetResult(nil)
targetResult = target.NewAzureImageTargetResult(nil, &jobTarget.OsbuildArtifact)
ctx := context.Background()
if impl.AzureConfig.Creds == nil {
@ -828,7 +828,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
case *target.KojiTargetOptions:
targetResult = target.NewKojiTargetResult(nil)
targetResult = target.NewKojiTargetResult(nil, &jobTarget.OsbuildArtifact)
kojiServerURL, err := url.Parse(targetOptions.Server)
if err != nil {
targetResult.TargetError = clienterrors.WorkerClientError(clienterrors.ErrorInvalidTargetConfig, fmt.Sprintf("failed to parse Koji server URL: %v", err), nil)
@ -923,7 +923,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
}
case *target.OCITargetOptions:
targetResult = target.NewOCITargetResult(nil)
targetResult = target.NewOCITargetResult(nil, &jobTarget.OsbuildArtifact)
// create an ociClient uploader with a valid storage client
var ociClient oci.Client
ociClient, err = impl.getOCI(oci.ClientParams{
@ -984,7 +984,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
logWithId.Info("[OCI] 🎉 Image uploaded and registered!")
targetResult.Options = &target.OCITargetResultOptions{ImageID: imageID}
case *target.OCIObjectStorageTargetOptions:
targetResult = target.NewOCIObjectStorageTargetResult(nil)
targetResult = target.NewOCIObjectStorageTargetResult(nil, &jobTarget.OsbuildArtifact)
// create an ociClient uploader with a valid storage client
ociClient, err := impl.getOCI(oci.ClientParams{
User: targetOptions.User,
@ -1033,7 +1033,7 @@ func (impl *OSBuildJobImpl) Run(job worker.Job) error {
logWithId.Info("[OCI] 🎉 Image uploaded and pre-authenticated request generated!")
targetResult.Options = &target.OCIObjectStorageTargetResultOptions{URL: uri}
case *target.ContainerTargetOptions:
targetResult = target.NewContainerTargetResult(nil)
targetResult = target.NewContainerTargetResult(nil, &jobTarget.OsbuildArtifact)
destination := jobTarget.ImageName
logWithId.Printf("[container] 📦 Preparing upload to '%s'", destination)