diff --git a/internal/jobqueue/fsjobqueue/fsjobqueue.go b/internal/jobqueue/fsjobqueue/fsjobqueue.go index 147adc957..d98171044 100644 --- a/internal/jobqueue/fsjobqueue/fsjobqueue.go +++ b/internal/jobqueue/fsjobqueue/fsjobqueue.go @@ -287,13 +287,16 @@ func (q *fsJobQueue) JobStatus(id uuid.UUID) (result json.RawMessage, queued, st return } -func (q *fsJobQueue) JobArgs(id uuid.UUID) (args json.RawMessage, err error) { +func (q *fsJobQueue) Job(id uuid.UUID) (jobType string, args json.RawMessage, dependencies []uuid.UUID, err error) { j, err := q.readJob(id) if err != nil { return } + jobType = j.Type args = j.Args + dependencies = j.Dependencies + return } diff --git a/internal/jobqueue/fsjobqueue/fsjobqueue_test.go b/internal/jobqueue/fsjobqueue/fsjobqueue_test.go index 354543e4b..1348e4252 100644 --- a/internal/jobqueue/fsjobqueue/fsjobqueue_test.go +++ b/internal/jobqueue/fsjobqueue/fsjobqueue_test.go @@ -103,10 +103,12 @@ func TestArgs(t *testing.T) { require.NoError(t, err) require.Equal(t, twoargs, parsedArgs) - // Read args after Dequeue - jargs, err := q.JobArgs(id) + // Read job params after Dequeue + jtype, jargs, jdeps, err := q.Job(id) require.NoError(t, err) require.Equal(t, args, jargs) + require.Equal(t, deps, jdeps) + require.Equal(t, typ, jtype) id, deps, typ, args, err = q.Dequeue(context.Background(), []string{"fish"}) require.NoError(t, err) @@ -117,12 +119,13 @@ func TestArgs(t *testing.T) { require.NoError(t, err) require.Equal(t, oneargs, parsedArgs) - // Read args directly after Dequeue - jargs, err = q.JobArgs(id) + jtype, jargs, jdeps, err = q.Job(id) require.NoError(t, err) require.Equal(t, args, jargs) + require.Equal(t, deps, jdeps) + require.Equal(t, typ, jtype) - _, err = q.JobArgs(uuid.New()) + _, _, _, err = q.Job(uuid.New()) require.Error(t, err) } diff --git a/internal/jobqueue/jobqueue.go b/internal/jobqueue/jobqueue.go index d46104c41..6330930b6 100644 --- a/internal/jobqueue/jobqueue.go +++ b/internal/jobqueue/jobqueue.go @@ -60,8 +60,8 @@ type JobQueue interface { // Lastly, the IDs of the jobs dependencies are returned. JobStatus(id uuid.UUID) (result json.RawMessage, queued, started, finished time.Time, canceled bool, deps []uuid.UUID, err error) - // Returns the job's arguments in Raw form. - JobArgs(id uuid.UUID) (args json.RawMessage, err error) + // Job returns all the parameters that define a job (everything provided during Enqueue). + Job(id uuid.UUID) (jobType string, args json.RawMessage, dependencies []uuid.UUID, err error) } var ( diff --git a/internal/kojiapi/server.go b/internal/kojiapi/server.go index 5895e5bed..f3c1f8570 100644 --- a/internal/kojiapi/server.go +++ b/internal/kojiapi/server.go @@ -405,7 +405,7 @@ func (h *apiHandlers) GetComposeIdManifests(ctx echo.Context, idstr string) erro manifests := make([]distro.Manifest, len(deps)-1) for i, id := range deps[1:] { var buildJob worker.OSBuildKojiJob - if _, err := h.server.workers.JobArgs(id, &buildJob); err != nil { + if _, _, _, err := h.server.workers.Job(id, &buildJob); err != nil { // This is a programming error. panic(err) } diff --git a/internal/worker/server.go b/internal/worker/server.go index 08193e10e..727de708a 100644 --- a/internal/worker/server.go +++ b/internal/worker/server.go @@ -121,19 +121,18 @@ func (s *Server) JobStatus(id uuid.UUID, result interface{}) (*JobStatus, []uuid }, deps, nil } -// JobArgs provides access to the arguments of a job. -func (s *Server) JobArgs(id uuid.UUID, jobArgs interface{}) (json.RawMessage, error) { - rawArgs, err := s.jobs.JobArgs(id) +// Job provides access to all the parameters of a job. +func (s *Server) Job(id uuid.UUID, job interface{}) (string, json.RawMessage, []uuid.UUID, error) { + jobType, rawArgs, deps, err := s.jobs.Job(id) if err != nil { - return nil, err + return "", nil, nil, err } - err = json.Unmarshal(rawArgs, jobArgs) - if err != nil { - return nil, fmt.Errorf("error unmarshaling arguments for job '%s': %v", id, err) + if err := json.Unmarshal(rawArgs, job); err != nil { + return "", nil, nil, fmt.Errorf("error unmarshaling arguments for job '%s': %v", id, err) } - return rawArgs, nil + return jobType, rawArgs, deps, nil } func (s *Server) Cancel(id uuid.UUID) error { diff --git a/internal/worker/server_test.go b/internal/worker/server_test.go index 59100e09a..59df3b6e0 100644 --- a/internal/worker/server_test.go +++ b/internal/worker/server_test.go @@ -8,6 +8,7 @@ import ( "os" "testing" + "github.com/google/uuid" "github.com/stretchr/testify/require" "github.com/osbuild/osbuild-composer/internal/distro" @@ -198,10 +199,12 @@ func TestArgs(t *testing.T) { require.NotNil(t, args) var jobArgs worker.OSBuildJob - rawArgs, err := server.JobArgs(jobId, &jobArgs) + jobType, rawArgs, deps, err := server.Job(jobId, &jobArgs) require.NoError(t, err) require.Equal(t, args, rawArgs) require.Equal(t, job, jobArgs) + require.Equal(t, jobType, "osbuild:"+arch.Name()) + require.Equal(t, []uuid.UUID(nil), deps) } func TestUpload(t *testing.T) {