From 7586be010b05216743c6bf23aa5a14f69fbbc5a0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Mon, 14 Feb 2022 18:01:32 +0100 Subject: [PATCH] API changes for sending task updates to the Manager --- pkg/api/flamenco-manager.yaml | 42 +++++++++- pkg/api/openapi_client.gen.go | 146 ++++++++++++++++++++++++++++++++++ pkg/api/openapi_server.gen.go | 22 +++++ pkg/api/openapi_spec.gen.go | 106 ++++++++++++------------ pkg/api/openapi_types.gen.go | 17 +++- 5 files changed, 279 insertions(+), 54 deletions(-) diff --git a/pkg/api/flamenco-manager.yaml b/pkg/api/flamenco-manager.yaml index 0c39e0a4..fb6819b9 100644 --- a/pkg/api/flamenco-manager.yaml +++ b/pkg/api/flamenco-manager.yaml @@ -157,6 +157,37 @@ paths: schema: $ref: "#/components/schemas/WorkerStateChange" + /api/worker/task/{task_id}: + summary: Workers send info about task progression here. + post: + operationId: taskUpdate + summary: Update the task, typically to indicate progress, completion, or failure. + security: [{worker_auth: []}] + tags: [worker] + parameters: + - name: task_id + in: path + required: true + schema: {type: string, format: uuid} + requestBody: + description: Task update information + required: true + content: + application/json: + schema: + $ref: "#/components/schemas/TaskUpdate" + responses: + "204": + description: The update was accepted. + "409": + description: The task is assigned to another worker, so the update was not accepted. + default: + description: unexpected error + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + /api/jobs/types: summary: Available Flamenco job types. get: @@ -278,7 +309,6 @@ components: properties: uuid: {type: string, format: uuid} job: {type: string} - user: {type: string} name: {type: string} status: {$ref: "#/components/schemas/TaskStatus"} priority: {type: integer} @@ -288,7 +318,15 @@ components: commands: type: array items: {$ref: "#/components/schemas/Command"} - required: [uuid, job, user, name, status, priority, job_priority, job_type, task_type, commands] + required: [uuid, job, name, status, priority, job_priority, job_type, task_type, commands] + + TaskUpdate: + type: object + description: TaskUpdate is sent by a Worker to update the status & logs of a task it's executing. + properties: + taskStatus: {$ref: "#/components/schemas/TaskStatus", description: The new task status.} + activity: {type: string, description: One-liner to indicate what's currently happening with the task. Overwrites previously sent activity strings.} + log: {type: string, description: Log lines for this task, will be appended to logs sent earlier.} JobStatus: type: string diff --git a/pkg/api/openapi_client.gen.go b/pkg/api/openapi_client.gen.go index fcc03763..8ad0216e 100644 --- a/pkg/api/openapi_client.gen.go +++ b/pkg/api/openapi_client.gen.go @@ -124,6 +124,11 @@ type ClientInterface interface { // ScheduleTask request ScheduleTask(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) + + // TaskUpdate request with any body + TaskUpdateWithBody(ctx context.Context, taskId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) + + TaskUpdate(ctx context.Context, taskId string, body TaskUpdateJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) } func (c *Client) SubmitJobWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { @@ -282,6 +287,30 @@ func (c *Client) ScheduleTask(ctx context.Context, reqEditors ...RequestEditorFn return c.Client.Do(req) } +func (c *Client) TaskUpdateWithBody(ctx context.Context, taskId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewTaskUpdateRequestWithBody(c.Server, taskId, contentType, body) + 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) TaskUpdate(ctx context.Context, taskId string, body TaskUpdateJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) { + req, err := NewTaskUpdateRequest(c.Server, taskId, body) + 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) +} + // NewSubmitJobRequest calls the generic SubmitJob builder with application/json body func NewSubmitJobRequest(server string, body SubmitJobJSONRequestBody) (*http.Request, error) { var bodyReader io.Reader @@ -584,6 +613,53 @@ func NewScheduleTaskRequest(server string) (*http.Request, error) { return req, nil } +// NewTaskUpdateRequest calls the generic TaskUpdate builder with application/json body +func NewTaskUpdateRequest(server string, taskId string, body TaskUpdateJSONRequestBody) (*http.Request, error) { + var bodyReader io.Reader + buf, err := json.Marshal(body) + if err != nil { + return nil, err + } + bodyReader = bytes.NewReader(buf) + return NewTaskUpdateRequestWithBody(server, taskId, "application/json", bodyReader) +} + +// NewTaskUpdateRequestWithBody generates requests for TaskUpdate with any type of body +func NewTaskUpdateRequestWithBody(server string, taskId string, contentType string, body io.Reader) (*http.Request, error) { + var err error + + var pathParam0 string + + pathParam0, err = runtime.StyleParamWithLocation("simple", false, "task_id", runtime.ParamLocationPath, taskId) + if err != nil { + return nil, err + } + + serverURL, err := url.Parse(server) + if err != nil { + return nil, err + } + + operationPath := fmt.Sprintf("/api/worker/task/%s", pathParam0) + if operationPath[0] == '/' { + operationPath = "." + operationPath + } + + queryURL, err := serverURL.Parse(operationPath) + if err != nil { + return nil, err + } + + req, err := http.NewRequest("POST", queryURL.String(), body) + if err != nil { + return nil, err + } + + req.Header.Add("Content-Type", contentType) + + return req, nil +} + func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error { for _, r := range c.RequestEditors { if err := r(ctx, req); err != nil { @@ -661,6 +737,11 @@ type ClientWithResponsesInterface interface { // ScheduleTask request ScheduleTaskWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ScheduleTaskResponse, error) + + // TaskUpdate request with any body + TaskUpdateWithBodyWithResponse(ctx context.Context, taskId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TaskUpdateResponse, error) + + TaskUpdateWithResponse(ctx context.Context, taskId string, body TaskUpdateJSONRequestBody, reqEditors ...RequestEditorFn) (*TaskUpdateResponse, error) } type SubmitJobResponse struct { @@ -867,6 +948,28 @@ func (r ScheduleTaskResponse) StatusCode() int { return 0 } +type TaskUpdateResponse struct { + Body []byte + HTTPResponse *http.Response + JSONDefault *Error +} + +// Status returns HTTPResponse.Status +func (r TaskUpdateResponse) Status() string { + if r.HTTPResponse != nil { + return r.HTTPResponse.Status + } + return http.StatusText(0) +} + +// StatusCode returns HTTPResponse.StatusCode +func (r TaskUpdateResponse) StatusCode() int { + if r.HTTPResponse != nil { + return r.HTTPResponse.StatusCode + } + return 0 +} + // SubmitJobWithBodyWithResponse request with arbitrary body returning *SubmitJobResponse func (c *ClientWithResponses) SubmitJobWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SubmitJobResponse, error) { rsp, err := c.SubmitJobWithBody(ctx, contentType, body, reqEditors...) @@ -980,6 +1083,23 @@ func (c *ClientWithResponses) ScheduleTaskWithResponse(ctx context.Context, reqE return ParseScheduleTaskResponse(rsp) } +// TaskUpdateWithBodyWithResponse request with arbitrary body returning *TaskUpdateResponse +func (c *ClientWithResponses) TaskUpdateWithBodyWithResponse(ctx context.Context, taskId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TaskUpdateResponse, error) { + rsp, err := c.TaskUpdateWithBody(ctx, taskId, contentType, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseTaskUpdateResponse(rsp) +} + +func (c *ClientWithResponses) TaskUpdateWithResponse(ctx context.Context, taskId string, body TaskUpdateJSONRequestBody, reqEditors ...RequestEditorFn) (*TaskUpdateResponse, error) { + rsp, err := c.TaskUpdate(ctx, taskId, body, reqEditors...) + if err != nil { + return nil, err + } + return ParseTaskUpdateResponse(rsp) +} + // ParseSubmitJobResponse parses an HTTP response from a SubmitJobWithResponse call func ParseSubmitJobResponse(rsp *http.Response) (*SubmitJobResponse, error) { bodyBytes, err := ioutil.ReadAll(rsp.Body) @@ -1255,3 +1375,29 @@ func ParseScheduleTaskResponse(rsp *http.Response) (*ScheduleTaskResponse, error return response, nil } + +// ParseTaskUpdateResponse parses an HTTP response from a TaskUpdateWithResponse call +func ParseTaskUpdateResponse(rsp *http.Response) (*TaskUpdateResponse, error) { + bodyBytes, err := ioutil.ReadAll(rsp.Body) + defer func() { _ = rsp.Body.Close() }() + if err != nil { + return nil, err + } + + response := &TaskUpdateResponse{ + Body: bodyBytes, + HTTPResponse: rsp, + } + + switch { + case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true: + var dest Error + if err := json.Unmarshal(bodyBytes, &dest); err != nil { + return nil, err + } + response.JSONDefault = &dest + + } + + return response, nil +} diff --git a/pkg/api/openapi_server.gen.go b/pkg/api/openapi_server.gen.go index 1e3e0c94..181ff2ec 100644 --- a/pkg/api/openapi_server.gen.go +++ b/pkg/api/openapi_server.gen.go @@ -40,6 +40,9 @@ type ServerInterface interface { // Obtain a new task to execute // (POST /api/worker/task) ScheduleTask(ctx echo.Context) error + // Update the task, typically to indicate progress, completion, or failure. + // (POST /api/worker/task/{task_id}) + TaskUpdate(ctx echo.Context, taskId string) error } // ServerInterfaceWrapper converts echo contexts to parameters. @@ -145,6 +148,24 @@ func (w *ServerInterfaceWrapper) ScheduleTask(ctx echo.Context) error { return err } +// TaskUpdate converts echo context to params. +func (w *ServerInterfaceWrapper) TaskUpdate(ctx echo.Context) error { + var err error + // ------------- Path parameter "task_id" ------------- + var taskId string + + err = runtime.BindStyledParameterWithLocation("simple", false, "task_id", runtime.ParamLocationPath, ctx.Param("task_id"), &taskId) + if err != nil { + return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter task_id: %s", err)) + } + + ctx.Set(Worker_authScopes, []string{""}) + + // Invoke the callback with all the unmarshalled arguments + err = w.Handler.TaskUpdate(ctx, taskId) + return err +} + // This is a simple interface which specifies echo.Route addition functions which // are present on both echo.Echo and echo.Group, since we want to allow using // either of them for path registration @@ -182,5 +203,6 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL router.GET(baseURL+"/api/worker/state", wrapper.WorkerState) router.POST(baseURL+"/api/worker/state-changed", wrapper.WorkerStateChanged) router.POST(baseURL+"/api/worker/task", wrapper.ScheduleTask) + router.POST(baseURL+"/api/worker/task/:task_id", wrapper.TaskUpdate) } diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 717b26ea..6295ca6e 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -18,57 +18,61 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", - "/6TghGFVLwAA", + "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", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/api/openapi_types.gen.go b/pkg/api/openapi_types.gen.go index 208d13d3..227d16f1 100644 --- a/pkg/api/openapi_types.gen.go +++ b/pkg/api/openapi_types.gen.go @@ -114,7 +114,6 @@ type AssignedTask struct { Priority int `json:"priority"` Status TaskStatus `json:"status"` TaskType string `json:"task_type"` - User string `json:"user"` Uuid string `json:"uuid"` } @@ -234,6 +233,16 @@ type SubmittedJob struct { // TaskStatus defines model for TaskStatus. type TaskStatus string +// TaskUpdate is sent by a Worker to update the status & logs of a task it's executing. +type TaskUpdate struct { + // One-liner to indicate what's currently happening with the task. Overwrites previously sent activity strings. + Activity *string `json:"activity,omitempty"` + + // Log lines for this task + Log *string `json:"log,omitempty"` + TaskStatus *TaskStatus `json:"taskStatus,omitempty"` +} + // WorkerRegistration defines model for WorkerRegistration. type WorkerRegistration struct { Nickname string `json:"nickname"` @@ -273,6 +282,9 @@ type SignOnJSONBody WorkerSignOn // WorkerStateChangedJSONBody defines parameters for WorkerStateChanged. type WorkerStateChangedJSONBody WorkerStateChanged +// TaskUpdateJSONBody defines parameters for TaskUpdate. +type TaskUpdateJSONBody TaskUpdate + // SubmitJobJSONRequestBody defines body for SubmitJob for application/json ContentType. type SubmitJobJSONRequestBody SubmitJobJSONBody @@ -285,6 +297,9 @@ type SignOnJSONRequestBody SignOnJSONBody // WorkerStateChangedJSONRequestBody defines body for WorkerStateChanged for application/json ContentType. type WorkerStateChangedJSONRequestBody WorkerStateChangedJSONBody +// TaskUpdateJSONRequestBody defines body for TaskUpdate for application/json ContentType. +type TaskUpdateJSONRequestBody TaskUpdateJSONBody + // Getter for additional properties for JobMetadata. Returns the specified // element and whether it was found func (a JobMetadata) Get(fieldName string) (value string, found bool) {