cloudapi/v2: Use manifest-id-only job

job dependencies:
depsolve -> manifest -> osbuild

This allows the compose handler to return the osbuild job id
immediately.
This commit is contained in:
sanne 2021-11-15 10:58:52 +01:00 committed by Ondřej Budai
parent ac39dacfae
commit 028eca1b26
4 changed files with 105 additions and 65 deletions

View file

@ -15,6 +15,7 @@ import (
"github.com/osbuild/osbuild-composer/internal/distro/test_distro"
distro_mock "github.com/osbuild/osbuild-composer/internal/mocks/distro"
rpmmd_mock "github.com/osbuild/osbuild-composer/internal/mocks/rpmmd"
"github.com/osbuild/osbuild-composer/internal/rpmmd"
"github.com/osbuild/osbuild-composer/internal/test"
"github.com/osbuild/osbuild-composer/internal/worker"
)
@ -39,9 +40,12 @@ func newV2Server(t *testing.T, dir string) (*v2.Server, *worker.Server, context.
if err != nil {
continue
}
rawMsg, err := json.Marshal(&worker.DepsolveJobResult{PackageSpecs: nil, Error: "", ErrorType: worker.ErrorType("")})
rawMsg, err := json.Marshal(&worker.DepsolveJobResult{PackageSpecs: map[string][]rpmmd.PackageSpec{"build": []rpmmd.PackageSpec{rpmmd.PackageSpec{Name: "pkg1"}}}, Error: "", ErrorType: worker.ErrorType("")})
require.NoError(t, err)
require.NoError(t, rpmFixture.Workers.FinishJob(token, rawMsg))
err = rpmFixture.Workers.FinishJob(token, rawMsg)
if err != nil {
return
}
select {
case <-depsolveContext.Done():
@ -272,10 +276,16 @@ func TestComposeStatusSuccess(t *testing.T) {
"kind": "ComposeId"
}`, "id")
jobId, token, jobType, _, _, err := wrksrv.RequestJob(context.Background(), test_distro.TestArch3Name, []string{"osbuild"})
jobId, token, jobType, args, dynArgs, err := wrksrv.RequestJob(context.Background(), test_distro.TestArch3Name, []string{"osbuild"})
require.NoError(t, err)
require.Equal(t, "osbuild", jobType)
var osbuildJob worker.OSBuildJob
err = json.Unmarshal(args, &osbuildJob)
require.NoError(t, err)
require.Equal(t, 0, len(osbuildJob.Manifest))
require.NotEqual(t, 0, len(dynArgs[0]))
test.TestRoute(t, srv.Handler("/api/image-builder-composer/v2"), false, "GET", fmt.Sprintf("/api/image-builder-composer/v2/composes/%v", jobId), ``, http.StatusOK, fmt.Sprintf(`
{
"href": "/api/image-builder-composer/v2/composes/%v",
@ -284,7 +294,6 @@ func TestComposeStatusSuccess(t *testing.T) {
"image_status": {"status": "building"}
}`, jobId, jobId))
// todo make it an osbuildjobresult
res, err := json.Marshal(&worker.OSBuildJobResult{
Success: true,
})
@ -308,7 +317,6 @@ func TestComposeStatusSuccess(t *testing.T) {
"code": "IMAGE-BUILDER-COMPOSER-1012",
"reason": "OSBuildJobResult does not have expected fields set"
}`, "operation_id")
}
func TestComposeStatusFailure(t *testing.T) {