API: add Fetch Job endpoint
This is made with plain sqlite. It's probably a good idea to move to something like GORM instead.
This commit is contained in:
parent
f0ae7d33e9
commit
54933d0262
@ -37,6 +37,7 @@ type Flamenco struct {
|
||||
type JobPersistenceService interface {
|
||||
// StoreJob stores a job in the persistence layer.
|
||||
StoreJob(ctx context.Context, authoredJob job_compilers.AuthoredJob) error
|
||||
FetchJob(ctx context.Context, jobID string) (*api.Job, error)
|
||||
}
|
||||
|
||||
type JobCompiler interface {
|
||||
|
@ -75,3 +75,22 @@ func (f *Flamenco) SubmitJob(e echo.Context) error {
|
||||
|
||||
return e.JSON(http.StatusOK, authoredJob)
|
||||
}
|
||||
|
||||
func (f *Flamenco) FetchJob(e echo.Context, jobId string) error {
|
||||
// TODO: move this into some middleware.
|
||||
logger := log.With().
|
||||
Str("ip", e.RealIP()).
|
||||
Str("job_id", jobId).
|
||||
Logger()
|
||||
|
||||
logger.Debug().Msg("fetching job")
|
||||
|
||||
ctx := e.Request().Context()
|
||||
job, err := f.persist.FetchJob(ctx, jobId)
|
||||
if err != nil {
|
||||
logger.Warn().Err(err).Msg("cannot fetch job")
|
||||
return sendAPIError(e, http.StatusNotFound, fmt.Sprintf("job %+v not found", jobId))
|
||||
}
|
||||
|
||||
return e.JSON(http.StatusOK, job)
|
||||
}
|
||||
|
@ -30,6 +30,7 @@ import (
|
||||
_ "modernc.org/sqlite"
|
||||
|
||||
"gitlab.com/blender/flamenco-goja-test/internal/manager/job_compilers"
|
||||
"gitlab.com/blender/flamenco-goja-test/pkg/api"
|
||||
)
|
||||
|
||||
// TODO : have this configurable from the CLI.
|
||||
@ -102,3 +103,61 @@ func (db *DB) StoreJob(ctx context.Context, authoredJob job_compilers.AuthoredJo
|
||||
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
func (db *DB) FetchJob(ctx context.Context, jobID string) (*api.Job, error) {
|
||||
job := api.Job{}
|
||||
|
||||
err := db.sqldb.
|
||||
QueryRowContext(ctx, `SELECT * FROM jobs j where j.uuid=?`, jobID).
|
||||
Scan(&job.Id, &job.Name, &job.Type, &job.Priority, &job.Created, &job.Updated)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// TODO: make settings and metadata an explicit type.
|
||||
settings := make(map[string]interface{})
|
||||
metadata := make(map[string]interface{})
|
||||
|
||||
rows, err := db.sqldb.QueryContext(ctx, "SELECT key, value FROM job_settings WHERE job_id=?", jobID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var key, value string
|
||||
if err := rows.Scan(&key, &value); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
settings[key] = value
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
rows, err = db.sqldb.QueryContext(ctx, "SELECT key, value FROM job_metadata WHERE job_id=?", jobID)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer rows.Close()
|
||||
for rows.Next() {
|
||||
var key, value string
|
||||
if err := rows.Scan(&key, &value); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
metadata[key] = value
|
||||
}
|
||||
if err := rows.Close(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if err := rows.Err(); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
job.Settings = &settings
|
||||
job.Metadata = &metadata
|
||||
|
||||
return &job, nil
|
||||
}
|
||||
|
@ -79,7 +79,6 @@ paths:
|
||||
operationId: submitJob
|
||||
summary: Submit a new job for Flamenco Manager to execute.
|
||||
tags: [jobs]
|
||||
# TODO: Security!
|
||||
requestBody:
|
||||
description: Job to submit
|
||||
required: true
|
||||
@ -99,6 +98,24 @@ paths:
|
||||
application/json:
|
||||
schema: {$ref: "#/components/schemas/Error"}
|
||||
|
||||
/api/jobs/{job_id}:
|
||||
summary: Job info and management
|
||||
get:
|
||||
operationId: fetchJob
|
||||
summary: Fetch info about the job.
|
||||
tags: [jobs]
|
||||
parameters:
|
||||
- name: job_id
|
||||
in: path
|
||||
required: true
|
||||
schema: {type: string}
|
||||
responses:
|
||||
"200":
|
||||
description: Job info
|
||||
content:
|
||||
application/json:
|
||||
schema: {$ref: "#/components/schemas/Job"}
|
||||
|
||||
tags:
|
||||
- name: jobs
|
||||
description: Blablabla for users to get job metadata balbla
|
||||
@ -242,7 +259,6 @@ components:
|
||||
type: object
|
||||
description: Job definition submitted to Flamenco.
|
||||
properties:
|
||||
"id": {type: string}
|
||||
"name": {type: string}
|
||||
"type": {type: string}
|
||||
"status": {$ref: "#/components/schemas/JobStatus"}
|
||||
@ -271,6 +287,22 @@ components:
|
||||
"user.name": "Sybren Stüvel"
|
||||
"user.email": "sybren@blender.org"
|
||||
project: "Sprite Fright"
|
||||
Job:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/SubmittedJob'
|
||||
- properties:
|
||||
id:
|
||||
type: string
|
||||
description: UUID of the Job
|
||||
created:
|
||||
type: string
|
||||
format: date-time
|
||||
description: Creation timestamp
|
||||
updated:
|
||||
type: string
|
||||
format: date-time
|
||||
description: Creation timestamp
|
||||
required: [id, created, updated]
|
||||
|
||||
|
||||
Error:
|
||||
|
@ -13,6 +13,8 @@ import (
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/deepmap/oapi-codegen/pkg/runtime"
|
||||
)
|
||||
|
||||
// RequestEditorFn is the function signature for the RequestEditor callback function
|
||||
@ -96,6 +98,9 @@ type ClientInterface interface {
|
||||
// GetJobTypes request
|
||||
GetJobTypes(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
|
||||
|
||||
// FetchJob request
|
||||
FetchJob(ctx context.Context, jobId string, reqEditors ...RequestEditorFn) (*http.Response, error)
|
||||
|
||||
// RegisterWorker request with any body
|
||||
RegisterWorkerWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
|
||||
|
||||
@ -141,6 +146,18 @@ func (c *Client) GetJobTypes(ctx context.Context, reqEditors ...RequestEditorFn)
|
||||
return c.Client.Do(req)
|
||||
}
|
||||
|
||||
func (c *Client) FetchJob(ctx context.Context, jobId string, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
||||
req, err := NewFetchJobRequest(c.Server, jobId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
req = req.WithContext(ctx)
|
||||
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return c.Client.Do(req)
|
||||
}
|
||||
|
||||
func (c *Client) RegisterWorkerWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
||||
req, err := NewRegisterWorkerRequestWithBody(c.Server, contentType, body)
|
||||
if err != nil {
|
||||
@ -244,6 +261,40 @@ func NewGetJobTypesRequest(server string) (*http.Request, error) {
|
||||
return req, nil
|
||||
}
|
||||
|
||||
// NewFetchJobRequest generates requests for FetchJob
|
||||
func NewFetchJobRequest(server string, jobId string) (*http.Request, error) {
|
||||
var err error
|
||||
|
||||
var pathParam0 string
|
||||
|
||||
pathParam0, err = runtime.StyleParamWithLocation("simple", false, "job_id", runtime.ParamLocationPath, jobId)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
serverURL, err := url.Parse(server)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
operationPath := fmt.Sprintf("/api/jobs/%s", pathParam0)
|
||||
if operationPath[0] == '/' {
|
||||
operationPath = "." + operationPath
|
||||
}
|
||||
|
||||
queryURL, err := serverURL.Parse(operationPath)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
req, err := http.NewRequest("GET", queryURL.String(), nil)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return req, nil
|
||||
}
|
||||
|
||||
// NewRegisterWorkerRequest calls the generic RegisterWorker builder with application/json body
|
||||
func NewRegisterWorkerRequest(server string, body RegisterWorkerJSONRequestBody) (*http.Request, error) {
|
||||
var bodyReader io.Reader
|
||||
@ -362,6 +413,9 @@ type ClientWithResponsesInterface interface {
|
||||
// GetJobTypes request
|
||||
GetJobTypesWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetJobTypesResponse, error)
|
||||
|
||||
// FetchJob request
|
||||
FetchJobWithResponse(ctx context.Context, jobId string, reqEditors ...RequestEditorFn) (*FetchJobResponse, error)
|
||||
|
||||
// RegisterWorker request with any body
|
||||
RegisterWorkerWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RegisterWorkerResponse, error)
|
||||
|
||||
@ -416,6 +470,28 @@ func (r GetJobTypesResponse) StatusCode() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
type FetchJobResponse struct {
|
||||
Body []byte
|
||||
HTTPResponse *http.Response
|
||||
JSON200 *Job
|
||||
}
|
||||
|
||||
// Status returns HTTPResponse.Status
|
||||
func (r FetchJobResponse) Status() string {
|
||||
if r.HTTPResponse != nil {
|
||||
return r.HTTPResponse.Status
|
||||
}
|
||||
return http.StatusText(0)
|
||||
}
|
||||
|
||||
// StatusCode returns HTTPResponse.StatusCode
|
||||
func (r FetchJobResponse) StatusCode() int {
|
||||
if r.HTTPResponse != nil {
|
||||
return r.HTTPResponse.StatusCode
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type RegisterWorkerResponse struct {
|
||||
Body []byte
|
||||
HTTPResponse *http.Response
|
||||
@ -488,6 +564,15 @@ func (c *ClientWithResponses) GetJobTypesWithResponse(ctx context.Context, reqEd
|
||||
return ParseGetJobTypesResponse(rsp)
|
||||
}
|
||||
|
||||
// FetchJobWithResponse request returning *FetchJobResponse
|
||||
func (c *ClientWithResponses) FetchJobWithResponse(ctx context.Context, jobId string, reqEditors ...RequestEditorFn) (*FetchJobResponse, error) {
|
||||
rsp, err := c.FetchJob(ctx, jobId, reqEditors...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ParseFetchJobResponse(rsp)
|
||||
}
|
||||
|
||||
// RegisterWorkerWithBodyWithResponse request with arbitrary body returning *RegisterWorkerResponse
|
||||
func (c *ClientWithResponses) RegisterWorkerWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RegisterWorkerResponse, error) {
|
||||
rsp, err := c.RegisterWorkerWithBody(ctx, contentType, body, reqEditors...)
|
||||
@ -573,6 +658,32 @@ func ParseGetJobTypesResponse(rsp *http.Response) (*GetJobTypesResponse, error)
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// ParseFetchJobResponse parses an HTTP response from a FetchJobWithResponse call
|
||||
func ParseFetchJobResponse(rsp *http.Response) (*FetchJobResponse, error) {
|
||||
bodyBytes, err := ioutil.ReadAll(rsp.Body)
|
||||
defer func() { _ = rsp.Body.Close() }()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
response := &FetchJobResponse{
|
||||
Body: bodyBytes,
|
||||
HTTPResponse: rsp,
|
||||
}
|
||||
|
||||
switch {
|
||||
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
||||
var dest Job
|
||||
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.JSON200 = &dest
|
||||
|
||||
}
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// ParseRegisterWorkerResponse parses an HTTP response from a RegisterWorkerWithResponse call
|
||||
func ParseRegisterWorkerResponse(rsp *http.Response) (*RegisterWorkerResponse, error) {
|
||||
bodyBytes, err := ioutil.ReadAll(rsp.Body)
|
||||
|
@ -4,6 +4,10 @@
|
||||
package api
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
|
||||
"github.com/deepmap/oapi-codegen/pkg/runtime"
|
||||
"github.com/labstack/echo/v4"
|
||||
)
|
||||
|
||||
@ -15,6 +19,9 @@ type ServerInterface interface {
|
||||
// Get list of job types and their parameters.
|
||||
// (GET /api/jobs/types)
|
||||
GetJobTypes(ctx echo.Context) error
|
||||
// Fetch info about the job.
|
||||
// (GET /api/jobs/{job_id})
|
||||
FetchJob(ctx echo.Context, jobId string) error
|
||||
// Register a new worker
|
||||
// (POST /api/worker/register-worker)
|
||||
RegisterWorker(ctx echo.Context) error
|
||||
@ -46,6 +53,22 @@ func (w *ServerInterfaceWrapper) GetJobTypes(ctx echo.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// FetchJob converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) FetchJob(ctx echo.Context) error {
|
||||
var err error
|
||||
// ------------- Path parameter "job_id" -------------
|
||||
var jobId string
|
||||
|
||||
err = runtime.BindStyledParameterWithLocation("simple", false, "job_id", runtime.ParamLocationPath, ctx.Param("job_id"), &jobId)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter job_id: %s", err))
|
||||
}
|
||||
|
||||
// Invoke the callback with all the unmarshalled arguments
|
||||
err = w.Handler.FetchJob(ctx, jobId)
|
||||
return err
|
||||
}
|
||||
|
||||
// RegisterWorker converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) RegisterWorker(ctx echo.Context) error {
|
||||
var err error
|
||||
@ -96,6 +119,7 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
|
||||
|
||||
router.POST(baseURL+"/api/jobs", wrapper.SubmitJob)
|
||||
router.GET(baseURL+"/api/jobs/types", wrapper.GetJobTypes)
|
||||
router.GET(baseURL+"/api/jobs/:job_id", wrapper.FetchJob)
|
||||
router.POST(baseURL+"/api/worker/register-worker", wrapper.RegisterWorker)
|
||||
router.POST(baseURL+"/api/worker/task", wrapper.ScheduleTask)
|
||||
|
||||
|
@ -18,46 +18,48 @@ import (
|
||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||
var swaggerSpec = []string{
|
||||
|
||||
"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",
|
||||
"HgAA",
|
||||
"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",
|
||||
"e3e++28AAAD//9hZQfR1IQAA",
|
||||
}
|
||||
|
||||
// GetSwagger returns the content of the embedded swagger specification file
|
||||
|
@ -3,6 +3,10 @@
|
||||
// Code generated by github.com/deepmap/oapi-codegen version v1.9.0 DO NOT EDIT.
|
||||
package api
|
||||
|
||||
import (
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
Worker_authScopes = "worker_auth.Scopes"
|
||||
)
|
||||
@ -154,6 +158,21 @@ type Error struct {
|
||||
Message string `json:"message"`
|
||||
}
|
||||
|
||||
// Job defines model for Job.
|
||||
type Job struct {
|
||||
// Embedded struct due to allOf(#/components/schemas/SubmittedJob)
|
||||
SubmittedJob `yaml:",inline"`
|
||||
// Embedded fields due to inline allOf schema
|
||||
// Creation timestamp
|
||||
Created time.Time `json:"created"`
|
||||
|
||||
// UUID of the Job
|
||||
Id string `json:"id"`
|
||||
|
||||
// Creation timestamp
|
||||
Updated time.Time `json:"updated"`
|
||||
}
|
||||
|
||||
// JobStatus defines model for JobStatus.
|
||||
type JobStatus string
|
||||
|
||||
@ -176,7 +195,6 @@ type SecurityError struct {
|
||||
|
||||
// Job definition submitted to Flamenco.
|
||||
type SubmittedJob struct {
|
||||
Id *string `json:"id,omitempty"`
|
||||
Metadata *map[string]interface{} `json:"metadata,omitempty"`
|
||||
Name string `json:"name"`
|
||||
Priority int `json:"priority"`
|
||||
|
Loading…
x
Reference in New Issue
Block a user