API changes for sending task updates to the Manager
This commit is contained in:
parent
0457809641
commit
7586be010b
@ -157,6 +157,37 @@ paths:
|
|||||||
schema:
|
schema:
|
||||||
$ref: "#/components/schemas/WorkerStateChange"
|
$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:
|
/api/jobs/types:
|
||||||
summary: Available Flamenco job types.
|
summary: Available Flamenco job types.
|
||||||
get:
|
get:
|
||||||
@ -278,7 +309,6 @@ components:
|
|||||||
properties:
|
properties:
|
||||||
uuid: {type: string, format: uuid}
|
uuid: {type: string, format: uuid}
|
||||||
job: {type: string}
|
job: {type: string}
|
||||||
user: {type: string}
|
|
||||||
name: {type: string}
|
name: {type: string}
|
||||||
status: {$ref: "#/components/schemas/TaskStatus"}
|
status: {$ref: "#/components/schemas/TaskStatus"}
|
||||||
priority: {type: integer}
|
priority: {type: integer}
|
||||||
@ -288,7 +318,15 @@ components:
|
|||||||
commands:
|
commands:
|
||||||
type: array
|
type: array
|
||||||
items: {$ref: "#/components/schemas/Command"}
|
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:
|
JobStatus:
|
||||||
type: string
|
type: string
|
||||||
|
@ -124,6 +124,11 @@ type ClientInterface interface {
|
|||||||
|
|
||||||
// ScheduleTask request
|
// ScheduleTask request
|
||||||
ScheduleTask(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
|
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) {
|
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)
|
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
|
// NewSubmitJobRequest calls the generic SubmitJob builder with application/json body
|
||||||
func NewSubmitJobRequest(server string, body SubmitJobJSONRequestBody) (*http.Request, error) {
|
func NewSubmitJobRequest(server string, body SubmitJobJSONRequestBody) (*http.Request, error) {
|
||||||
var bodyReader io.Reader
|
var bodyReader io.Reader
|
||||||
@ -584,6 +613,53 @@ func NewScheduleTaskRequest(server string) (*http.Request, error) {
|
|||||||
return req, nil
|
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 {
|
func (c *Client) applyEditors(ctx context.Context, req *http.Request, additionalEditors []RequestEditorFn) error {
|
||||||
for _, r := range c.RequestEditors {
|
for _, r := range c.RequestEditors {
|
||||||
if err := r(ctx, req); err != nil {
|
if err := r(ctx, req); err != nil {
|
||||||
@ -661,6 +737,11 @@ type ClientWithResponsesInterface interface {
|
|||||||
|
|
||||||
// ScheduleTask request
|
// ScheduleTask request
|
||||||
ScheduleTaskWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*ScheduleTaskResponse, error)
|
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 {
|
type SubmitJobResponse struct {
|
||||||
@ -867,6 +948,28 @@ func (r ScheduleTaskResponse) StatusCode() int {
|
|||||||
return 0
|
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
|
// SubmitJobWithBodyWithResponse request with arbitrary body returning *SubmitJobResponse
|
||||||
func (c *ClientWithResponses) SubmitJobWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SubmitJobResponse, error) {
|
func (c *ClientWithResponses) SubmitJobWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SubmitJobResponse, error) {
|
||||||
rsp, err := c.SubmitJobWithBody(ctx, contentType, body, reqEditors...)
|
rsp, err := c.SubmitJobWithBody(ctx, contentType, body, reqEditors...)
|
||||||
@ -980,6 +1083,23 @@ func (c *ClientWithResponses) ScheduleTaskWithResponse(ctx context.Context, reqE
|
|||||||
return ParseScheduleTaskResponse(rsp)
|
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
|
// ParseSubmitJobResponse parses an HTTP response from a SubmitJobWithResponse call
|
||||||
func ParseSubmitJobResponse(rsp *http.Response) (*SubmitJobResponse, error) {
|
func ParseSubmitJobResponse(rsp *http.Response) (*SubmitJobResponse, error) {
|
||||||
bodyBytes, err := ioutil.ReadAll(rsp.Body)
|
bodyBytes, err := ioutil.ReadAll(rsp.Body)
|
||||||
@ -1255,3 +1375,29 @@ func ParseScheduleTaskResponse(rsp *http.Response) (*ScheduleTaskResponse, error
|
|||||||
|
|
||||||
return response, nil
|
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
|
||||||
|
}
|
||||||
|
@ -40,6 +40,9 @@ type ServerInterface interface {
|
|||||||
// Obtain a new task to execute
|
// Obtain a new task to execute
|
||||||
// (POST /api/worker/task)
|
// (POST /api/worker/task)
|
||||||
ScheduleTask(ctx echo.Context) error
|
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.
|
// ServerInterfaceWrapper converts echo contexts to parameters.
|
||||||
@ -145,6 +148,24 @@ func (w *ServerInterfaceWrapper) ScheduleTask(ctx echo.Context) error {
|
|||||||
return err
|
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
|
// 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
|
// are present on both echo.Echo and echo.Group, since we want to allow using
|
||||||
// either of them for path registration
|
// 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.GET(baseURL+"/api/worker/state", wrapper.WorkerState)
|
||||||
router.POST(baseURL+"/api/worker/state-changed", wrapper.WorkerStateChanged)
|
router.POST(baseURL+"/api/worker/state-changed", wrapper.WorkerStateChanged)
|
||||||
router.POST(baseURL+"/api/worker/task", wrapper.ScheduleTask)
|
router.POST(baseURL+"/api/worker/task", wrapper.ScheduleTask)
|
||||||
|
router.POST(baseURL+"/api/worker/task/:task_id", wrapper.TaskUpdate)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -18,57 +18,61 @@ import (
|
|||||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||||
var swaggerSpec = []string{
|
var swaggerSpec = []string{
|
||||||
|
|
||||||
"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",
|
||||||
"/6TghGFVLwAA",
|
"Wh8nB5g/Bl024U9Bcg+ajx4eflrEL52bSqksUQtLuXTVsNNXTBaF9bfpVspd7JXKwZ8PglsG0htPnVb0",
|
||||||
|
"G7bb5+HO1Cb4nR4YWzQcd/LBTZ9D+z3swo3PRDfpwAPBj2/B7x7FG5LsCpFQpmD7jCz6uxS/AsRPUihp",
|
||||||
|
"bRziJZCXie7RwV+GN9jyf8wIwdx0I2+0mJhwJb2mjd7Yov97yRZv6y+IKHlM7DbnCRVi2/rgl2u10mBM",
|
||||||
|
"HG4khYvdmiwpF4WGvZBfAr0ByVrTFFR3SR3BBQuVMlL1uvRxP82eRI1aqGu8rxAo8V+Hle6KM4qwAuvG",
|
||||||
|
"XtUFqwUVC0Fb0yrjbs11BnXHR+3RZbO2UllWyPAplNu0N98c1+SDNi5PL/8bAAD//4q9w500NAAA",
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSwagger returns the content of the embedded swagger specification file
|
// GetSwagger returns the content of the embedded swagger specification file
|
||||||
|
@ -114,7 +114,6 @@ type AssignedTask struct {
|
|||||||
Priority int `json:"priority"`
|
Priority int `json:"priority"`
|
||||||
Status TaskStatus `json:"status"`
|
Status TaskStatus `json:"status"`
|
||||||
TaskType string `json:"task_type"`
|
TaskType string `json:"task_type"`
|
||||||
User string `json:"user"`
|
|
||||||
Uuid string `json:"uuid"`
|
Uuid string `json:"uuid"`
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -234,6 +233,16 @@ type SubmittedJob struct {
|
|||||||
// TaskStatus defines model for TaskStatus.
|
// TaskStatus defines model for TaskStatus.
|
||||||
type TaskStatus string
|
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.
|
// WorkerRegistration defines model for WorkerRegistration.
|
||||||
type WorkerRegistration struct {
|
type WorkerRegistration struct {
|
||||||
Nickname string `json:"nickname"`
|
Nickname string `json:"nickname"`
|
||||||
@ -273,6 +282,9 @@ type SignOnJSONBody WorkerSignOn
|
|||||||
// WorkerStateChangedJSONBody defines parameters for WorkerStateChanged.
|
// WorkerStateChangedJSONBody defines parameters for WorkerStateChanged.
|
||||||
type WorkerStateChangedJSONBody WorkerStateChanged
|
type WorkerStateChangedJSONBody WorkerStateChanged
|
||||||
|
|
||||||
|
// TaskUpdateJSONBody defines parameters for TaskUpdate.
|
||||||
|
type TaskUpdateJSONBody TaskUpdate
|
||||||
|
|
||||||
// SubmitJobJSONRequestBody defines body for SubmitJob for application/json ContentType.
|
// SubmitJobJSONRequestBody defines body for SubmitJob for application/json ContentType.
|
||||||
type SubmitJobJSONRequestBody SubmitJobJSONBody
|
type SubmitJobJSONRequestBody SubmitJobJSONBody
|
||||||
|
|
||||||
@ -285,6 +297,9 @@ type SignOnJSONRequestBody SignOnJSONBody
|
|||||||
// WorkerStateChangedJSONRequestBody defines body for WorkerStateChanged for application/json ContentType.
|
// WorkerStateChangedJSONRequestBody defines body for WorkerStateChanged for application/json ContentType.
|
||||||
type WorkerStateChangedJSONRequestBody WorkerStateChangedJSONBody
|
type WorkerStateChangedJSONRequestBody WorkerStateChangedJSONBody
|
||||||
|
|
||||||
|
// TaskUpdateJSONRequestBody defines body for TaskUpdate for application/json ContentType.
|
||||||
|
type TaskUpdateJSONRequestBody TaskUpdateJSONBody
|
||||||
|
|
||||||
// Getter for additional properties for JobMetadata. Returns the specified
|
// Getter for additional properties for JobMetadata. Returns the specified
|
||||||
// element and whether it was found
|
// element and whether it was found
|
||||||
func (a JobMetadata) Get(fieldName string) (value string, found bool) {
|
func (a JobMetadata) Get(fieldName string) (value string, found bool) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user