OAPI: regenerate code

This commit is contained in:
Sybren A. Stüvel 2022-06-24 16:11:33 +02:00
parent 4e9950a143
commit 167b2eaf45
12 changed files with 604 additions and 138 deletions

View File

@ -10,7 +10,7 @@
""" """
__version__ = "3582b199" __version__ = "41b0ee15"
# import ApiClient # import ApiClient
from flamenco.manager.api_client import ApiClient from flamenco.manager.api_client import ApiClient

View File

@ -285,6 +285,65 @@ class WorkerApi(object):
}, },
api_client=api_client api_client=api_client
) )
self.task_output_produced_endpoint = _Endpoint(
settings={
'response_type': None,
'auth': [
'worker_auth'
],
'endpoint_path': '/api/worker/task/{task_id}/output-produced',
'operation_id': 'task_output_produced',
'http_method': 'POST',
'servers': None,
},
params_map={
'all': [
'task_id',
'body',
],
'required': [
'task_id',
'body',
],
'nullable': [
],
'enum': [
],
'validation': [
]
},
root_map={
'validations': {
},
'allowed_values': {
},
'openapi_types': {
'task_id':
(str,),
'body':
(file_type,),
},
'attribute_map': {
'task_id': 'task_id',
},
'location_map': {
'task_id': 'path',
'body': 'body',
},
'collection_format_map': {
}
},
headers_map={
'accept': [
'application/json'
],
'content_type': [
'image/jpeg',
'image/png'
]
},
api_client=api_client
)
self.task_update_endpoint = _Endpoint( self.task_update_endpoint = _Endpoint(
settings={ settings={
'response_type': None, 'response_type': None,
@ -815,6 +874,87 @@ class WorkerApi(object):
worker_sign_on worker_sign_on
return self.sign_on_endpoint.call_with_http_info(**kwargs) return self.sign_on_endpoint.call_with_http_info(**kwargs)
def task_output_produced(
self,
task_id,
body,
**kwargs
):
"""Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned. # noqa: E501
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please pass async_req=True
>>> thread = api.task_output_produced(task_id, body, async_req=True)
>>> result = thread.get()
Args:
task_id (str):
body (file_type): Contents of the file
Keyword Args:
_return_http_data_only (bool): response data without head status
code and headers. Default is True.
_preload_content (bool): if False, the urllib3.HTTPResponse object
will be returned without reading/decoding response data.
Default is True.
_request_timeout (int/float/tuple): timeout setting for this request. If
one number provided, it will be total request timeout. It can also
be a pair (tuple) of (connection, read) timeouts.
Default is None.
_check_input_type (bool): specifies if type checking
should be done one the data sent to the server.
Default is True.
_check_return_type (bool): specifies if type checking
should be done one the data received from the server.
Default is True.
_spec_property_naming (bool): True if the variable names in the input data
are serialized names, as specified in the OpenAPI document.
False if the variable names in the input data
are pythonic names, e.g. snake case (default)
_content_type (str/None): force body content-type.
Default is None and content-type will be predicted by allowed
content-types and body.
_host_index (int/None): specifies the index of the server
that we want to use.
Default is read from the configuration.
async_req (bool): execute request asynchronously
Returns:
None
If the method is called asynchronously, returns the request
thread.
"""
kwargs['async_req'] = kwargs.get(
'async_req', False
)
kwargs['_return_http_data_only'] = kwargs.get(
'_return_http_data_only', True
)
kwargs['_preload_content'] = kwargs.get(
'_preload_content', True
)
kwargs['_request_timeout'] = kwargs.get(
'_request_timeout', None
)
kwargs['_check_input_type'] = kwargs.get(
'_check_input_type', True
)
kwargs['_check_return_type'] = kwargs.get(
'_check_return_type', True
)
kwargs['_spec_property_naming'] = kwargs.get(
'_spec_property_naming', False
)
kwargs['_content_type'] = kwargs.get(
'_content_type')
kwargs['_host_index'] = kwargs.get('_host_index')
kwargs['task_id'] = \
task_id
kwargs['body'] = \
body
return self.task_output_produced_endpoint.call_with_http_info(**kwargs)
def task_update( def task_update(
self, self,
task_id, task_id,

View File

@ -76,7 +76,7 @@ class ApiClient(object):
self.default_headers[header_name] = header_value self.default_headers[header_name] = header_value
self.cookie = cookie self.cookie = cookie
# Set default User-Agent. # Set default User-Agent.
self.user_agent = 'Flamenco/3582b199 (Blender add-on)' self.user_agent = 'Flamenco/41b0ee15 (Blender add-on)'
def __enter__(self): def __enter__(self):
return self return self

View File

@ -404,7 +404,7 @@ conf = flamenco.manager.Configuration(
"OS: {env}\n"\ "OS: {env}\n"\
"Python Version: {pyversion}\n"\ "Python Version: {pyversion}\n"\
"Version of the API: 1.0.0\n"\ "Version of the API: 1.0.0\n"\
"SDK Package Version: 3582b199".\ "SDK Package Version: 41b0ee15".\
format(env=sys.platform, pyversion=sys.version) format(env=sys.platform, pyversion=sys.version)
def get_host_settings(self): def get_host_settings(self):

View File

@ -9,6 +9,7 @@ Method | HTTP request | Description
[**schedule_task**](WorkerApi.md#schedule_task) | **POST** /api/worker/task | Obtain a new task to execute [**schedule_task**](WorkerApi.md#schedule_task) | **POST** /api/worker/task | Obtain a new task to execute
[**sign_off**](WorkerApi.md#sign_off) | **POST** /api/worker/sign-off | Mark the worker as offline [**sign_off**](WorkerApi.md#sign_off) | **POST** /api/worker/sign-off | Mark the worker as offline
[**sign_on**](WorkerApi.md#sign_on) | **POST** /api/worker/sign-on | Authenticate & sign in the worker. [**sign_on**](WorkerApi.md#sign_on) | **POST** /api/worker/sign-on | Authenticate & sign in the worker.
[**task_output_produced**](WorkerApi.md#task_output_produced) | **POST** /api/worker/task/{task_id}/output-produced | Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
[**task_update**](WorkerApi.md#task_update) | **POST** /api/worker/task/{task_id} | Update the task, typically to indicate progress, completion, or failure. [**task_update**](WorkerApi.md#task_update) | **POST** /api/worker/task/{task_id} | Update the task, typically to indicate progress, completion, or failure.
[**worker_state**](WorkerApi.md#worker_state) | **GET** /api/worker/state | [**worker_state**](WorkerApi.md#worker_state) | **GET** /api/worker/state |
[**worker_state_changed**](WorkerApi.md#worker_state_changed) | **POST** /api/worker/state-changed | Worker changed state. This could be as acknowledgement of a Manager-requested state change, or in response to worker-local signals. [**worker_state_changed**](WorkerApi.md#worker_state_changed) | **POST** /api/worker/state-changed | Worker changed state. This could be as acknowledgement of a Manager-requested state change, or in response to worker-local signals.
@ -402,6 +403,88 @@ Name | Type | Description | Notes
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md) [[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **task_output_produced**
> task_output_produced(task_id, body)
Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
### Example
* Basic Authentication (worker_auth):
```python
import time
import flamenco.manager
from flamenco.manager.api import worker_api
from flamenco.manager.model.error import Error
from pprint import pprint
# Defining the host is optional and defaults to http://localhost
# See configuration.py for a list of all supported configuration parameters.
configuration = flamenco.manager.Configuration(
host = "http://localhost"
)
# The client must configure the authentication and authorization parameters
# in accordance with the API server security policy.
# Examples for each auth method are provided below, use the example that
# satisfies your auth use case.
# Configure HTTP basic authorization: worker_auth
configuration = flamenco.manager.Configuration(
username = 'YOUR_USERNAME',
password = 'YOUR_PASSWORD'
)
# Enter a context with an instance of the API client
with flamenco.manager.ApiClient(configuration) as api_client:
# Create an instance of the API class
api_instance = worker_api.WorkerApi(api_client)
task_id = "task_id_example" # str |
body = open('/path/to/file', 'rb') # file_type | Contents of the file
# example passing only required values which don't have defaults set
try:
# Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
api_instance.task_output_produced(task_id, body)
except flamenco.manager.ApiException as e:
print("Exception when calling WorkerApi->task_output_produced: %s\n" % e)
```
### Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**task_id** | **str**| |
**body** | **file_type**| Contents of the file |
### Return type
void (empty response body)
### Authorization
[worker_auth](../README.md#worker_auth)
### HTTP request headers
- **Content-Type**: image/jpeg, image/png
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**202** | The file was accepted for processing. | - |
**411** | Length required; the client did not send a Content-Length header. | - |
**413** | Payload too large. | - |
**415** | Unsupported Media Type, the image format cannot be processed by the Manager. | - |
**429** | The client is sending too many frames, and should throttle itself. | - |
**0** | unexpected error | - |
[[Back to top]](#) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to Model list]](../README.md#documentation-for-models) [[Back to README]](../README.md)
# **task_update** # **task_update**
> task_update(task_id, task_update) > task_update(task_id, task_update)

View File

@ -4,7 +4,7 @@ Render Farm manager API
The `flamenco.manager` package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: The `flamenco.manager` package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 1.0.0 - API version: 1.0.0
- Package version: 3582b199 - Package version: 41b0ee15
- Build package: org.openapitools.codegen.languages.PythonClientCodegen - Build package: org.openapitools.codegen.languages.PythonClientCodegen
For more information, please visit [https://flamenco.io/](https://flamenco.io/) For more information, please visit [https://flamenco.io/](https://flamenco.io/)
@ -92,6 +92,7 @@ Class | Method | HTTP request | Description
*WorkerApi* | [**schedule_task**](flamenco/manager/docs/WorkerApi.md#schedule_task) | **POST** /api/worker/task | Obtain a new task to execute *WorkerApi* | [**schedule_task**](flamenco/manager/docs/WorkerApi.md#schedule_task) | **POST** /api/worker/task | Obtain a new task to execute
*WorkerApi* | [**sign_off**](flamenco/manager/docs/WorkerApi.md#sign_off) | **POST** /api/worker/sign-off | Mark the worker as offline *WorkerApi* | [**sign_off**](flamenco/manager/docs/WorkerApi.md#sign_off) | **POST** /api/worker/sign-off | Mark the worker as offline
*WorkerApi* | [**sign_on**](flamenco/manager/docs/WorkerApi.md#sign_on) | **POST** /api/worker/sign-on | Authenticate & sign in the worker. *WorkerApi* | [**sign_on**](flamenco/manager/docs/WorkerApi.md#sign_on) | **POST** /api/worker/sign-on | Authenticate & sign in the worker.
*WorkerApi* | [**task_output_produced**](flamenco/manager/docs/WorkerApi.md#task_output_produced) | **POST** /api/worker/task/{task_id}/output-produced | Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
*WorkerApi* | [**task_update**](flamenco/manager/docs/WorkerApi.md#task_update) | **POST** /api/worker/task/{task_id} | Update the task, typically to indicate progress, completion, or failure. *WorkerApi* | [**task_update**](flamenco/manager/docs/WorkerApi.md#task_update) | **POST** /api/worker/task/{task_id} | Update the task, typically to indicate progress, completion, or failure.
*WorkerApi* | [**worker_state**](flamenco/manager/docs/WorkerApi.md#worker_state) | **GET** /api/worker/state | *WorkerApi* | [**worker_state**](flamenco/manager/docs/WorkerApi.md#worker_state) | **GET** /api/worker/state |
*WorkerApi* | [**worker_state_changed**](flamenco/manager/docs/WorkerApi.md#worker_state_changed) | **POST** /api/worker/state-changed | Worker changed state. This could be as acknowledgement of a Manager-requested state change, or in response to worker-local signals. *WorkerApi* | [**worker_state_changed**](flamenco/manager/docs/WorkerApi.md#worker_state_changed) | **POST** /api/worker/state-changed | Worker changed state. This could be as acknowledgement of a Manager-requested state change, or in response to worker-local signals.

View File

@ -696,6 +696,26 @@ func (mr *MockFlamencoClientMockRecorder) SubmitJobWithResponse(arg0, arg1 inter
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubmitJobWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).SubmitJobWithResponse), varargs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "SubmitJobWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).SubmitJobWithResponse), varargs...)
} }
// TaskOutputProducedWithBodyWithResponse mocks base method.
func (m *MockFlamencoClient) TaskOutputProducedWithBodyWithResponse(arg0 context.Context, arg1, arg2 string, arg3 io.Reader, arg4 ...api.RequestEditorFn) (*api.TaskOutputProducedResponse, error) {
m.ctrl.T.Helper()
varargs := []interface{}{arg0, arg1, arg2, arg3}
for _, a := range arg4 {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "TaskOutputProducedWithBodyWithResponse", varargs...)
ret0, _ := ret[0].(*api.TaskOutputProducedResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// TaskOutputProducedWithBodyWithResponse indicates an expected call of TaskOutputProducedWithBodyWithResponse.
func (mr *MockFlamencoClientMockRecorder) TaskOutputProducedWithBodyWithResponse(arg0, arg1, arg2, arg3 interface{}, arg4 ...interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
varargs := append([]interface{}{arg0, arg1, arg2, arg3}, arg4...)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "TaskOutputProducedWithBodyWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).TaskOutputProducedWithBodyWithResponse), varargs...)
}
// TaskUpdateWithBodyWithResponse mocks base method. // TaskUpdateWithBodyWithResponse mocks base method.
func (m *MockFlamencoClient) TaskUpdateWithBodyWithResponse(arg0 context.Context, arg1, arg2 string, arg3 io.Reader, arg4 ...api.RequestEditorFn) (*api.TaskUpdateResponse, error) { func (m *MockFlamencoClient) TaskUpdateWithBodyWithResponse(arg0 context.Context, arg1, arg2 string, arg3 io.Reader, arg4 ...api.RequestEditorFn) (*api.TaskUpdateResponse, error) {
m.ctrl.T.Helper() m.ctrl.T.Helper()

View File

@ -177,6 +177,9 @@ type ClientInterface interface {
// MayWorkerRun request // MayWorkerRun request
MayWorkerRun(ctx context.Context, taskId string, reqEditors ...RequestEditorFn) (*http.Response, error) MayWorkerRun(ctx context.Context, taskId string, reqEditors ...RequestEditorFn) (*http.Response, error)
// TaskOutputProduced request with any body
TaskOutputProducedWithBody(ctx context.Context, taskId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
// ShamanCheckout request with any body // ShamanCheckout request with any body
ShamanCheckoutWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) ShamanCheckoutWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
@ -578,6 +581,18 @@ func (c *Client) MayWorkerRun(ctx context.Context, taskId string, reqEditors ...
return c.Client.Do(req) return c.Client.Do(req)
} }
func (c *Client) TaskOutputProducedWithBody(ctx context.Context, taskId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewTaskOutputProducedRequestWithBody(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) ShamanCheckoutWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) { func (c *Client) ShamanCheckoutWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewShamanCheckoutRequestWithBody(c.Server, contentType, body) req, err := NewShamanCheckoutRequestWithBody(c.Server, contentType, body)
if err != nil { if err != nil {
@ -1465,6 +1480,42 @@ func NewMayWorkerRunRequest(server string, taskId string) (*http.Request, error)
return req, nil return req, nil
} }
// NewTaskOutputProducedRequestWithBody generates requests for TaskOutputProduced with any type of body
func NewTaskOutputProducedRequestWithBody(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/output-produced", 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
}
// NewShamanCheckoutRequest calls the generic ShamanCheckout builder with application/json body // NewShamanCheckoutRequest calls the generic ShamanCheckout builder with application/json body
func NewShamanCheckoutRequest(server string, body ShamanCheckoutJSONRequestBody) (*http.Request, error) { func NewShamanCheckoutRequest(server string, body ShamanCheckoutJSONRequestBody) (*http.Request, error) {
var bodyReader io.Reader var bodyReader io.Reader
@ -1781,6 +1832,9 @@ type ClientWithResponsesInterface interface {
// MayWorkerRun request // MayWorkerRun request
MayWorkerRunWithResponse(ctx context.Context, taskId string, reqEditors ...RequestEditorFn) (*MayWorkerRunResponse, error) MayWorkerRunWithResponse(ctx context.Context, taskId string, reqEditors ...RequestEditorFn) (*MayWorkerRunResponse, error)
// TaskOutputProduced request with any body
TaskOutputProducedWithBodyWithResponse(ctx context.Context, taskId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TaskOutputProducedResponse, error)
// ShamanCheckout request with any body // ShamanCheckout request with any body
ShamanCheckoutWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ShamanCheckoutResponse, error) ShamanCheckoutWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ShamanCheckoutResponse, error)
@ -2314,6 +2368,32 @@ func (r MayWorkerRunResponse) StatusCode() int {
return 0 return 0
} }
type TaskOutputProducedResponse struct {
Body []byte
HTTPResponse *http.Response
JSON411 *Error
JSON413 *Error
JSON415 *Error
JSON429 *Error
JSONDefault *Error
}
// Status returns HTTPResponse.Status
func (r TaskOutputProducedResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r TaskOutputProducedResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type ShamanCheckoutResponse struct { type ShamanCheckoutResponse struct {
Body []byte Body []byte
HTTPResponse *http.Response HTTPResponse *http.Response
@ -2686,6 +2766,15 @@ func (c *ClientWithResponses) MayWorkerRunWithResponse(ctx context.Context, task
return ParseMayWorkerRunResponse(rsp) return ParseMayWorkerRunResponse(rsp)
} }
// TaskOutputProducedWithBodyWithResponse request with arbitrary body returning *TaskOutputProducedResponse
func (c *ClientWithResponses) TaskOutputProducedWithBodyWithResponse(ctx context.Context, taskId string, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*TaskOutputProducedResponse, error) {
rsp, err := c.TaskOutputProducedWithBody(ctx, taskId, contentType, body, reqEditors...)
if err != nil {
return nil, err
}
return ParseTaskOutputProducedResponse(rsp)
}
// ShamanCheckoutWithBodyWithResponse request with arbitrary body returning *ShamanCheckoutResponse // ShamanCheckoutWithBodyWithResponse request with arbitrary body returning *ShamanCheckoutResponse
func (c *ClientWithResponses) ShamanCheckoutWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ShamanCheckoutResponse, error) { func (c *ClientWithResponses) ShamanCheckoutWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*ShamanCheckoutResponse, error) {
rsp, err := c.ShamanCheckoutWithBody(ctx, contentType, body, reqEditors...) rsp, err := c.ShamanCheckoutWithBody(ctx, contentType, body, reqEditors...)
@ -3406,6 +3495,60 @@ func ParseMayWorkerRunResponse(rsp *http.Response) (*MayWorkerRunResponse, error
return response, nil return response, nil
} }
// ParseTaskOutputProducedResponse parses an HTTP response from a TaskOutputProducedWithResponse call
func ParseTaskOutputProducedResponse(rsp *http.Response) (*TaskOutputProducedResponse, error) {
bodyBytes, err := ioutil.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &TaskOutputProducedResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 411:
var dest Error
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON411 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 413:
var dest Error
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON413 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 415:
var dest Error
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON415 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 429:
var dest Error
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON429 = &dest
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
}
// ParseShamanCheckoutResponse parses an HTTP response from a ShamanCheckoutWithResponse call // ParseShamanCheckoutResponse parses an HTTP response from a ShamanCheckoutWithResponse call
func ParseShamanCheckoutResponse(rsp *http.Response) (*ShamanCheckoutResponse, error) { func ParseShamanCheckoutResponse(rsp *http.Response) (*ShamanCheckoutResponse, error) {
bodyBytes, err := ioutil.ReadAll(rsp.Body) bodyBytes, err := ioutil.ReadAll(rsp.Body)

View File

@ -82,6 +82,9 @@ type ServerInterface interface {
// The response indicates whether the worker is allowed to run / keep running the task. Optionally contains a queued worker status change. // The response indicates whether the worker is allowed to run / keep running the task. Optionally contains a queued worker status change.
// (GET /api/worker/task/{task_id}/may-i-run) // (GET /api/worker/task/{task_id}/may-i-run)
MayWorkerRun(ctx echo.Context, taskId string) error MayWorkerRun(ctx echo.Context, taskId string) error
// Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
// (POST /api/worker/task/{task_id}/output-produced)
TaskOutputProduced(ctx echo.Context, taskId string) error
// Create a directory, and symlink the required files into it. The files must all have been uploaded to Shaman before calling this endpoint. // Create a directory, and symlink the required files into it. The files must all have been uploaded to Shaman before calling this endpoint.
// (POST /shaman/checkout/create) // (POST /shaman/checkout/create)
ShamanCheckout(ctx echo.Context) error ShamanCheckout(ctx echo.Context) error
@ -400,6 +403,24 @@ func (w *ServerInterfaceWrapper) MayWorkerRun(ctx echo.Context) error {
return err return err
} }
// TaskOutputProduced converts echo context to params.
func (w *ServerInterfaceWrapper) TaskOutputProduced(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.TaskOutputProduced(ctx, taskId)
return err
}
// ShamanCheckout converts echo context to params. // ShamanCheckout converts echo context to params.
func (w *ServerInterfaceWrapper) ShamanCheckout(ctx echo.Context) error { func (w *ServerInterfaceWrapper) ShamanCheckout(ctx echo.Context) error {
var err error var err error
@ -552,6 +573,7 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
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) router.POST(baseURL+"/api/worker/task/:task_id", wrapper.TaskUpdate)
router.GET(baseURL+"/api/worker/task/:task_id/may-i-run", wrapper.MayWorkerRun) router.GET(baseURL+"/api/worker/task/:task_id/may-i-run", wrapper.MayWorkerRun)
router.POST(baseURL+"/api/worker/task/:task_id/output-produced", wrapper.TaskOutputProduced)
router.POST(baseURL+"/shaman/checkout/create", wrapper.ShamanCheckout) router.POST(baseURL+"/shaman/checkout/create", wrapper.ShamanCheckout)
router.POST(baseURL+"/shaman/checkout/requirements", wrapper.ShamanCheckoutRequirements) router.POST(baseURL+"/shaman/checkout/requirements", wrapper.ShamanCheckoutRequirements)
router.GET(baseURL+"/shaman/files/:checksum/:filesize", wrapper.ShamanFileStoreCheck) router.GET(baseURL+"/shaman/files/:checksum/:filesize", wrapper.ShamanFileStoreCheck)

View File

@ -18,139 +18,144 @@ 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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",
} }
// GetSwagger returns the content of the embedded swagger specification file // GetSwagger returns the content of the embedded swagger specification file

View File

@ -55,7 +55,7 @@ class ApiClient {
* @default {} * @default {}
*/ */
this.defaultHeaders = { this.defaultHeaders = {
'User-Agent': 'Flamenco/3582b199 / webbrowser' 'User-Agent': 'Flamenco/41b0ee15 / webbrowser'
}; };
/** /**

View File

@ -258,6 +258,58 @@ export default class WorkerApi {
} }
/**
* Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
* @param {String} taskId
* @param {File} body Contents of the file
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing HTTP response
*/
taskOutputProducedWithHttpInfo(taskId, body) {
let postBody = body;
// verify the required parameter 'taskId' is set
if (taskId === undefined || taskId === null) {
throw new Error("Missing the required parameter 'taskId' when calling taskOutputProduced");
}
// verify the required parameter 'body' is set
if (body === undefined || body === null) {
throw new Error("Missing the required parameter 'body' when calling taskOutputProduced");
}
let pathParams = {
'task_id': taskId
};
let queryParams = {
};
let headerParams = {
};
let formParams = {
};
let authNames = ['worker_auth'];
let contentTypes = ['image/jpeg', 'image/png'];
let accepts = ['application/json'];
let returnType = null;
return this.apiClient.callApi(
'/api/worker/task/{task_id}/output-produced', 'POST',
pathParams, queryParams, headerParams, formParams, postBody,
authNames, contentTypes, accepts, returnType, null
);
}
/**
* Store the most recently rendered frame here. Note that it is up to the Worker to ensure this is in a format that's digestable by the Manager. Currently only PNG and JPEG support is planned.
* @param {String} taskId
* @param {File} body Contents of the file
* @return {Promise} a {@link https://www.promisejs.org/|Promise}
*/
taskOutputProduced(taskId, body) {
return this.taskOutputProducedWithHttpInfo(taskId, body)
.then(function(response_and_data) {
return response_and_data.data;
});
}
/** /**
* Update the task, typically to indicate progress, completion, or failure. * Update the task, typically to indicate progress, completion, or failure.
* @param {String} taskId * @param {String} taskId