weldr: use "Worker Server" target instead of setting ImageName

Stop relying on the server interpreting the set `ImageName` in the
`OSBuildJob` as a signal to upload the image back to the worker server
and add an explicit "Worker Server" upload target to the job.
This commit is contained in:
Tomas Hozza 2022-06-29 16:49:09 +02:00 committed by Tom Gundersen
parent a12827865d
commit 165a05ab43
2 changed files with 67 additions and 4 deletions

View file

@ -2247,10 +2247,16 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request
composeID := uuid.New()
var targets []*target.Target
// Always instruct the worker to upload the artifact back to the server
workerServerTarget := target.NewWorkerServerTarget()
workerServerTarget.ImageName = imageType.Filename()
workerServerTarget.OsbuildArtifact.ExportFilename = imageType.Filename()
targets = append(targets, workerServerTarget)
if isRequestVersionAtLeast(params, 1) && cr.Upload != nil {
t := uploadRequestToTarget(*cr.Upload, imageType)
targets = append(targets, t)
}
// Check for test parameter
q, err := url.ParseQuery(request.URL.RawQuery)
if err != nil {
@ -2348,10 +2354,9 @@ func (api *API) composeHandler(writer http.ResponseWriter, request *http.Request
var jobId uuid.UUID
jobId, err = api.workers.EnqueueOSBuild(api.archName, &worker.OSBuildJob{
Manifest: manifest,
Targets: targets,
ImageName: imageType.Filename(),
Exports: imageType.Exports(),
Manifest: manifest,
Targets: targets,
Exports: imageType.Exports(),
PipelineNames: &worker.PipelineNames{
Build: imageType.BuildPipelines(),
Payload: imageType.PayloadPipelines(),

View file

@ -685,6 +685,16 @@ func TestCompose(t *testing.T) {
QueueStatus: common.IBWaiting,
ImageType: imgType,
Manifest: manifest,
Targets: []*target.Target{
{
ImageName: imgType.Filename(),
OsbuildArtifact: target.OsbuildArtifact{
ExportFilename: imgType.Filename(),
},
Name: target.TargetNameWorkerServer,
Options: &target.WorkerServerTargetOptions{},
},
},
},
Packages: dnfjson_mock.BaseDeps(),
}
@ -702,6 +712,14 @@ func TestCompose(t *testing.T) {
ImageType: imgType,
Manifest: manifest,
Targets: []*target.Target{
{
ImageName: imgType.Filename(),
OsbuildArtifact: target.OsbuildArtifact{
ExportFilename: imgType.Filename(),
},
Name: target.TargetNameWorkerServer,
Options: &target.WorkerServerTargetOptions{},
},
{
Name: target.TargetNameAWS,
Status: common.IBWaiting,
@ -734,6 +752,16 @@ func TestCompose(t *testing.T) {
QueueStatus: common.IBWaiting,
ImageType: imgType,
Manifest: manifest,
Targets: []*target.Target{
{
ImageName: imgType.Filename(),
OsbuildArtifact: target.OsbuildArtifact{
ExportFilename: imgType.Filename(),
},
Name: target.TargetNameWorkerServer,
Options: &target.WorkerServerTargetOptions{},
},
},
},
Packages: dnfjson_mock.BaseDeps(),
}
@ -760,6 +788,16 @@ func TestCompose(t *testing.T) {
QueueStatus: common.IBWaiting,
ImageType: imgType2,
Manifest: manifest2,
Targets: []*target.Target{
{
ImageName: imgType2.Filename(),
OsbuildArtifact: target.OsbuildArtifact{
ExportFilename: imgType2.Filename(),
},
Name: target.TargetNameWorkerServer,
Options: &target.WorkerServerTargetOptions{},
},
},
},
Packages: dnfjson_mock.BaseDeps(),
}
@ -1690,6 +1728,16 @@ func TestComposePOST_ImageTypeDenylist(t *testing.T) {
QueueStatus: common.IBWaiting,
ImageType: imgType,
Manifest: manifest,
Targets: []*target.Target{
{
ImageName: imgType.Filename(),
OsbuildArtifact: target.OsbuildArtifact{
ExportFilename: imgType.Filename(),
},
Name: target.TargetNameWorkerServer,
Options: &target.WorkerServerTargetOptions{},
},
},
},
Packages: dnfjson_mock.BaseDeps(),
}
@ -1707,6 +1755,16 @@ func TestComposePOST_ImageTypeDenylist(t *testing.T) {
QueueStatus: common.IBWaiting,
ImageType: imgType2,
Manifest: manifest,
Targets: []*target.Target{
{
ImageName: imgType2.Filename(),
OsbuildArtifact: target.OsbuildArtifact{
ExportFilename: imgType2.Filename(),
},
Name: target.TargetNameWorkerServer,
Options: &target.WorkerServerTargetOptions{},
},
},
},
Packages: dnfjson_mock.BaseDeps(),
}