OAPI: regenerate code

This commit is contained in:
Sybren A. Stüvel 2022-05-30 18:48:06 +02:00
parent 311887bff7
commit eab4fa2ca7
22 changed files with 1364 additions and 131 deletions

View File

@ -10,7 +10,7 @@
""" """
__version__ = "5f44849d" __version__ = "6dec235e"
# import ApiClient # import ApiClient
from flamenco.manager.api_client import ApiClient from flamenco.manager.api_client import ApiClient

View File

@ -0,0 +1,152 @@
"""
Flamenco manager
Render Farm manager API # noqa: E501
The version of the OpenAPI document: 1.0.0
Generated by: https://openapi-generator.tech
"""
import re # noqa: F401
import sys # noqa: F401
from flamenco.manager.api_client import ApiClient, Endpoint as _Endpoint
from flamenco.manager.model_utils import ( # noqa: F401
check_allowed_values,
check_validations,
date,
datetime,
file_type,
none_type,
validate_and_convert_types
)
from flamenco.manager.model.worker_list import WorkerList
class WorkerMgtApi(object):
"""NOTE: This class is auto generated by OpenAPI Generator
Ref: https://openapi-generator.tech
Do not edit the class manually.
"""
def __init__(self, api_client=None):
if api_client is None:
api_client = ApiClient()
self.api_client = api_client
self.fetch_workers_endpoint = _Endpoint(
settings={
'response_type': (WorkerList,),
'auth': [],
'endpoint_path': '/api/worker-mgt/workers',
'operation_id': 'fetch_workers',
'http_method': 'GET',
'servers': None,
},
params_map={
'all': [
],
'required': [],
'nullable': [
],
'enum': [
],
'validation': [
]
},
root_map={
'validations': {
},
'allowed_values': {
},
'openapi_types': {
},
'attribute_map': {
},
'location_map': {
},
'collection_format_map': {
}
},
headers_map={
'accept': [
'application/json'
],
'content_type': [],
},
api_client=api_client
)
def fetch_workers(
self,
**kwargs
):
"""Get list of workers. # noqa: E501
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please pass async_req=True
>>> thread = api.fetch_workers(async_req=True)
>>> result = thread.get()
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:
WorkerList
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')
return self.fetch_workers_endpoint.call_with_http_info(**kwargs)

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/5f44849d (Blender add-on)' self.user_agent = 'Flamenco/6dec235e (Blender add-on)'
def __enter__(self): def __enter__(self):
return self return self

View File

@ -18,3 +18,4 @@ from flamenco.manager.api.jobs_api import JobsApi
from flamenco.manager.api.meta_api import MetaApi from flamenco.manager.api.meta_api import MetaApi
from flamenco.manager.api.shaman_api import ShamanApi from flamenco.manager.api.shaman_api import ShamanApi
from flamenco.manager.api.worker_api import WorkerApi from flamenco.manager.api.worker_api import WorkerApi
from flamenco.manager.api.worker_mgt_api import WorkerMgtApi

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: 5f44849d".\ "SDK Package Version: 6dec235e".\
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

@ -0,0 +1,13 @@
# WorkerList
List of workers.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**workers** | [**[WorkerSummary]**](WorkerSummary.md) | |
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,70 @@
# flamenco.manager.WorkerMgtApi
All URIs are relative to *http://localhost*
Method | HTTP request | Description
------------- | ------------- | -------------
[**fetch_workers**](WorkerMgtApi.md#fetch_workers) | **GET** /api/worker-mgt/workers | Get list of workers.
# **fetch_workers**
> WorkerList fetch_workers()
Get list of workers.
### Example
```python
import time
import flamenco.manager
from flamenco.manager.api import worker_mgt_api
from flamenco.manager.model.worker_list import WorkerList
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"
)
# Enter a context with an instance of the API client
with flamenco.manager.ApiClient() as api_client:
# Create an instance of the API class
api_instance = worker_mgt_api.WorkerMgtApi(api_client)
# example, this endpoint has no required or optional parameters
try:
# Get list of workers.
api_response = api_instance.fetch_workers()
pprint(api_response)
except flamenco.manager.ApiException as e:
print("Exception when calling WorkerMgtApi->fetch_workers: %s\n" % e)
```
### Parameters
This endpoint does not need any parameter.
### Return type
[**WorkerList**](WorkerList.md)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**200** | Known workers | - |
[[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)

View File

@ -0,0 +1,16 @@
# WorkerSummary
Basic information about a Worker.
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**id** | **str** | |
**nickname** | **str** | |
**status** | [**WorkerStatus**](WorkerStatus.md) | |
**status_requested** | [**WorkerStatus**](WorkerStatus.md) | | [optional]
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -0,0 +1,267 @@
"""
Flamenco manager
Render Farm manager API # noqa: E501
The version of the OpenAPI document: 1.0.0
Generated by: https://openapi-generator.tech
"""
import re # noqa: F401
import sys # noqa: F401
from flamenco.manager.model_utils import ( # noqa: F401
ApiTypeError,
ModelComposed,
ModelNormal,
ModelSimple,
cached_property,
change_keys_js_to_python,
convert_js_args_to_python_args,
date,
datetime,
file_type,
none_type,
validate_get_composed_info,
OpenApiModel
)
from flamenco.manager.exceptions import ApiAttributeError
def lazy_import():
from flamenco.manager.model.worker_summary import WorkerSummary
globals()['WorkerSummary'] = WorkerSummary
class WorkerList(ModelNormal):
"""NOTE: This class is auto generated by OpenAPI Generator.
Ref: https://openapi-generator.tech
Do not edit the class manually.
Attributes:
allowed_values (dict): The key is the tuple path to the attribute
and the for var_name this is (var_name,). The value is a dict
with a capitalized key describing the allowed value and an allowed
value. These dicts store the allowed enum values.
attribute_map (dict): The key is attribute name
and the value is json key in definition.
discriminator_value_class_map (dict): A dict to go from the discriminator
variable value to the discriminator class name.
validations (dict): The key is the tuple path to the attribute
and the for var_name this is (var_name,). The value is a dict
that stores validations for max_length, min_length, max_items,
min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
inclusive_minimum, and regex.
additional_properties_type (tuple): A tuple of classes accepted
as additional properties values.
"""
allowed_values = {
}
validations = {
}
@cached_property
def additional_properties_type():
"""
This must be a method because a model may have properties that are
of type self, this must run after the class is loaded
"""
lazy_import()
return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
_nullable = False
@cached_property
def openapi_types():
"""
This must be a method because a model may have properties that are
of type self, this must run after the class is loaded
Returns
openapi_types (dict): The key is attribute name
and the value is attribute type.
"""
lazy_import()
return {
'workers': ([WorkerSummary],), # noqa: E501
}
@cached_property
def discriminator():
return None
attribute_map = {
'workers': 'workers', # noqa: E501
}
read_only_vars = {
}
_composed_schemas = {}
@classmethod
@convert_js_args_to_python_args
def _from_openapi_data(cls, workers, *args, **kwargs): # noqa: E501
"""WorkerList - a model defined in OpenAPI
Args:
workers ([WorkerSummary]):
Keyword Args:
_check_type (bool): if True, values for parameters in openapi_types
will be type checked and a TypeError will be
raised if the wrong type is input.
Defaults to True
_path_to_item (tuple/list): This is a list of keys or values to
drill down to the model in received_data
when deserializing a response
_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)
_configuration (Configuration): the instance to use when
deserializing a file_type parameter.
If passed, type conversion is attempted
If omitted no type conversion is done.
_visited_composed_classes (tuple): This stores a tuple of
classes that we have traveled through so that
if we see that class again we will not use its
discriminator again.
When traveling through a discriminator, the
composed schema that is
is traveled through is added to this set.
For example if Animal has a discriminator
petType and we pass in "Dog", and the class Dog
allOf includes Animal, we move through Animal
once using the discriminator, and pick Dog.
Then in Dog, we will make an instance of the
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
"""
_check_type = kwargs.pop('_check_type', True)
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
_path_to_item = kwargs.pop('_path_to_item', ())
_configuration = kwargs.pop('_configuration', None)
_visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
self = super(OpenApiModel, cls).__new__(cls)
if args:
raise ApiTypeError(
"Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
args,
self.__class__.__name__,
),
path_to_item=_path_to_item,
valid_classes=(self.__class__,),
)
self._data_store = {}
self._check_type = _check_type
self._spec_property_naming = _spec_property_naming
self._path_to_item = _path_to_item
self._configuration = _configuration
self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
self.workers = workers
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
self._configuration.discard_unknown_keys and \
self.additional_properties_type is None:
# discard variable.
continue
setattr(self, var_name, var_value)
return self
required_properties = set([
'_data_store',
'_check_type',
'_spec_property_naming',
'_path_to_item',
'_configuration',
'_visited_composed_classes',
])
@convert_js_args_to_python_args
def __init__(self, workers, *args, **kwargs): # noqa: E501
"""WorkerList - a model defined in OpenAPI
Args:
workers ([WorkerSummary]):
Keyword Args:
_check_type (bool): if True, values for parameters in openapi_types
will be type checked and a TypeError will be
raised if the wrong type is input.
Defaults to True
_path_to_item (tuple/list): This is a list of keys or values to
drill down to the model in received_data
when deserializing a response
_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)
_configuration (Configuration): the instance to use when
deserializing a file_type parameter.
If passed, type conversion is attempted
If omitted no type conversion is done.
_visited_composed_classes (tuple): This stores a tuple of
classes that we have traveled through so that
if we see that class again we will not use its
discriminator again.
When traveling through a discriminator, the
composed schema that is
is traveled through is added to this set.
For example if Animal has a discriminator
petType and we pass in "Dog", and the class Dog
allOf includes Animal, we move through Animal
once using the discriminator, and pick Dog.
Then in Dog, we will make an instance of the
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
"""
_check_type = kwargs.pop('_check_type', True)
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
_path_to_item = kwargs.pop('_path_to_item', ())
_configuration = kwargs.pop('_configuration', None)
_visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
if args:
raise ApiTypeError(
"Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
args,
self.__class__.__name__,
),
path_to_item=_path_to_item,
valid_classes=(self.__class__,),
)
self._data_store = {}
self._check_type = _check_type
self._spec_property_naming = _spec_property_naming
self._path_to_item = _path_to_item
self._configuration = _configuration
self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
self.workers = workers
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
self._configuration.discard_unknown_keys and \
self.additional_properties_type is None:
# discard variable.
continue
setattr(self, var_name, var_value)
if var_name in self.read_only_vars:
raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
f"class with read only attributes.")

View File

@ -0,0 +1,283 @@
"""
Flamenco manager
Render Farm manager API # noqa: E501
The version of the OpenAPI document: 1.0.0
Generated by: https://openapi-generator.tech
"""
import re # noqa: F401
import sys # noqa: F401
from flamenco.manager.model_utils import ( # noqa: F401
ApiTypeError,
ModelComposed,
ModelNormal,
ModelSimple,
cached_property,
change_keys_js_to_python,
convert_js_args_to_python_args,
date,
datetime,
file_type,
none_type,
validate_get_composed_info,
OpenApiModel
)
from flamenco.manager.exceptions import ApiAttributeError
def lazy_import():
from flamenco.manager.model.worker_status import WorkerStatus
globals()['WorkerStatus'] = WorkerStatus
class WorkerSummary(ModelNormal):
"""NOTE: This class is auto generated by OpenAPI Generator.
Ref: https://openapi-generator.tech
Do not edit the class manually.
Attributes:
allowed_values (dict): The key is the tuple path to the attribute
and the for var_name this is (var_name,). The value is a dict
with a capitalized key describing the allowed value and an allowed
value. These dicts store the allowed enum values.
attribute_map (dict): The key is attribute name
and the value is json key in definition.
discriminator_value_class_map (dict): A dict to go from the discriminator
variable value to the discriminator class name.
validations (dict): The key is the tuple path to the attribute
and the for var_name this is (var_name,). The value is a dict
that stores validations for max_length, min_length, max_items,
min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum,
inclusive_minimum, and regex.
additional_properties_type (tuple): A tuple of classes accepted
as additional properties values.
"""
allowed_values = {
}
validations = {
}
@cached_property
def additional_properties_type():
"""
This must be a method because a model may have properties that are
of type self, this must run after the class is loaded
"""
lazy_import()
return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501
_nullable = False
@cached_property
def openapi_types():
"""
This must be a method because a model may have properties that are
of type self, this must run after the class is loaded
Returns
openapi_types (dict): The key is attribute name
and the value is attribute type.
"""
lazy_import()
return {
'id': (str,), # noqa: E501
'nickname': (str,), # noqa: E501
'status': (WorkerStatus,), # noqa: E501
'status_requested': (WorkerStatus,), # noqa: E501
}
@cached_property
def discriminator():
return None
attribute_map = {
'id': 'id', # noqa: E501
'nickname': 'nickname', # noqa: E501
'status': 'status', # noqa: E501
'status_requested': 'status_requested', # noqa: E501
}
read_only_vars = {
}
_composed_schemas = {}
@classmethod
@convert_js_args_to_python_args
def _from_openapi_data(cls, id, nickname, status, *args, **kwargs): # noqa: E501
"""WorkerSummary - a model defined in OpenAPI
Args:
id (str):
nickname (str):
status (WorkerStatus):
Keyword Args:
_check_type (bool): if True, values for parameters in openapi_types
will be type checked and a TypeError will be
raised if the wrong type is input.
Defaults to True
_path_to_item (tuple/list): This is a list of keys or values to
drill down to the model in received_data
when deserializing a response
_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)
_configuration (Configuration): the instance to use when
deserializing a file_type parameter.
If passed, type conversion is attempted
If omitted no type conversion is done.
_visited_composed_classes (tuple): This stores a tuple of
classes that we have traveled through so that
if we see that class again we will not use its
discriminator again.
When traveling through a discriminator, the
composed schema that is
is traveled through is added to this set.
For example if Animal has a discriminator
petType and we pass in "Dog", and the class Dog
allOf includes Animal, we move through Animal
once using the discriminator, and pick Dog.
Then in Dog, we will make an instance of the
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
status_requested (WorkerStatus): [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
_path_to_item = kwargs.pop('_path_to_item', ())
_configuration = kwargs.pop('_configuration', None)
_visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
self = super(OpenApiModel, cls).__new__(cls)
if args:
raise ApiTypeError(
"Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
args,
self.__class__.__name__,
),
path_to_item=_path_to_item,
valid_classes=(self.__class__,),
)
self._data_store = {}
self._check_type = _check_type
self._spec_property_naming = _spec_property_naming
self._path_to_item = _path_to_item
self._configuration = _configuration
self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
self.id = id
self.nickname = nickname
self.status = status
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
self._configuration.discard_unknown_keys and \
self.additional_properties_type is None:
# discard variable.
continue
setattr(self, var_name, var_value)
return self
required_properties = set([
'_data_store',
'_check_type',
'_spec_property_naming',
'_path_to_item',
'_configuration',
'_visited_composed_classes',
])
@convert_js_args_to_python_args
def __init__(self, id, nickname, status, *args, **kwargs): # noqa: E501
"""WorkerSummary - a model defined in OpenAPI
Args:
id (str):
nickname (str):
status (WorkerStatus):
Keyword Args:
_check_type (bool): if True, values for parameters in openapi_types
will be type checked and a TypeError will be
raised if the wrong type is input.
Defaults to True
_path_to_item (tuple/list): This is a list of keys or values to
drill down to the model in received_data
when deserializing a response
_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)
_configuration (Configuration): the instance to use when
deserializing a file_type parameter.
If passed, type conversion is attempted
If omitted no type conversion is done.
_visited_composed_classes (tuple): This stores a tuple of
classes that we have traveled through so that
if we see that class again we will not use its
discriminator again.
When traveling through a discriminator, the
composed schema that is
is traveled through is added to this set.
For example if Animal has a discriminator
petType and we pass in "Dog", and the class Dog
allOf includes Animal, we move through Animal
once using the discriminator, and pick Dog.
Then in Dog, we will make an instance of the
Animal class but this time we won't travel
through its discriminator because we passed in
_visited_composed_classes = (Animal,)
status_requested (WorkerStatus): [optional] # noqa: E501
"""
_check_type = kwargs.pop('_check_type', True)
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
_path_to_item = kwargs.pop('_path_to_item', ())
_configuration = kwargs.pop('_configuration', None)
_visited_composed_classes = kwargs.pop('_visited_composed_classes', ())
if args:
raise ApiTypeError(
"Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % (
args,
self.__class__.__name__,
),
path_to_item=_path_to_item,
valid_classes=(self.__class__,),
)
self._data_store = {}
self._check_type = _check_type
self._spec_property_naming = _spec_property_naming
self._path_to_item = _path_to_item
self._configuration = _configuration
self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
self.id = id
self.nickname = nickname
self.status = status
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
self._configuration.discard_unknown_keys and \
self.additional_properties_type is None:
# discard variable.
continue
setattr(self, var_name, var_value)
if var_name in self.read_only_vars:
raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
f"class with read only attributes.")

View File

@ -53,8 +53,10 @@ from flamenco.manager.model.task_status_change import TaskStatusChange
from flamenco.manager.model.task_summary import TaskSummary from flamenco.manager.model.task_summary import TaskSummary
from flamenco.manager.model.task_update import TaskUpdate from flamenco.manager.model.task_update import TaskUpdate
from flamenco.manager.model.task_worker import TaskWorker from flamenco.manager.model.task_worker import TaskWorker
from flamenco.manager.model.worker_list import WorkerList
from flamenco.manager.model.worker_registration import WorkerRegistration from flamenco.manager.model.worker_registration import WorkerRegistration
from flamenco.manager.model.worker_sign_on import WorkerSignOn from flamenco.manager.model.worker_sign_on import WorkerSignOn
from flamenco.manager.model.worker_state_change import WorkerStateChange from flamenco.manager.model.worker_state_change import WorkerStateChange
from flamenco.manager.model.worker_state_changed import WorkerStateChanged from flamenco.manager.model.worker_state_changed import WorkerStateChanged
from flamenco.manager.model.worker_status import WorkerStatus from flamenco.manager.model.worker_status import WorkerStatus
from flamenco.manager.model.worker_summary import WorkerSummary

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: 5f44849d - Package version: 6dec235e
- 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/)
@ -95,6 +95,7 @@ Class | Method | HTTP request | Description
*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.
*WorkerMgtApi* | [**fetch_workers**](flamenco/manager/docs/WorkerMgtApi.md#fetch_workers) | **GET** /api/worker-mgt/workers | Get list of workers.
## Documentation For Models ## Documentation For Models
@ -143,11 +144,13 @@ Class | Method | HTTP request | Description
- [TaskSummary](flamenco/manager/docs/TaskSummary.md) - [TaskSummary](flamenco/manager/docs/TaskSummary.md)
- [TaskUpdate](flamenco/manager/docs/TaskUpdate.md) - [TaskUpdate](flamenco/manager/docs/TaskUpdate.md)
- [TaskWorker](flamenco/manager/docs/TaskWorker.md) - [TaskWorker](flamenco/manager/docs/TaskWorker.md)
- [WorkerList](flamenco/manager/docs/WorkerList.md)
- [WorkerRegistration](flamenco/manager/docs/WorkerRegistration.md) - [WorkerRegistration](flamenco/manager/docs/WorkerRegistration.md)
- [WorkerSignOn](flamenco/manager/docs/WorkerSignOn.md) - [WorkerSignOn](flamenco/manager/docs/WorkerSignOn.md)
- [WorkerStateChange](flamenco/manager/docs/WorkerStateChange.md) - [WorkerStateChange](flamenco/manager/docs/WorkerStateChange.md)
- [WorkerStateChanged](flamenco/manager/docs/WorkerStateChanged.md) - [WorkerStateChanged](flamenco/manager/docs/WorkerStateChanged.md)
- [WorkerStatus](flamenco/manager/docs/WorkerStatus.md) - [WorkerStatus](flamenco/manager/docs/WorkerStatus.md)
- [WorkerSummary](flamenco/manager/docs/WorkerSummary.md)
## Documentation For Authorization ## Documentation For Authorization

View File

@ -116,6 +116,26 @@ func (mr *MockFlamencoClientMockRecorder) FetchTaskWithResponse(arg0, arg1 inter
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchTaskWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).FetchTaskWithResponse), varargs...) return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchTaskWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).FetchTaskWithResponse), varargs...)
} }
// FetchWorkersWithResponse mocks base method.
func (m *MockFlamencoClient) FetchWorkersWithResponse(arg0 context.Context, arg1 ...api.RequestEditorFn) (*api.FetchWorkersResponse, error) {
m.ctrl.T.Helper()
varargs := []interface{}{arg0}
for _, a := range arg1 {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "FetchWorkersWithResponse", varargs...)
ret0, _ := ret[0].(*api.FetchWorkersResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// FetchWorkersWithResponse indicates an expected call of FetchWorkersWithResponse.
func (mr *MockFlamencoClientMockRecorder) FetchWorkersWithResponse(arg0 interface{}, arg1 ...interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
varargs := append([]interface{}{arg0}, arg1...)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchWorkersWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).FetchWorkersWithResponse), varargs...)
}
// GetConfigurationWithResponse mocks base method. // GetConfigurationWithResponse mocks base method.
func (m *MockFlamencoClient) GetConfigurationWithResponse(arg0 context.Context, arg1 ...api.RequestEditorFn) (*api.GetConfigurationResponse, error) { func (m *MockFlamencoClient) GetConfigurationWithResponse(arg0 context.Context, arg1 ...api.RequestEditorFn) (*api.GetConfigurationResponse, error) {
m.ctrl.T.Helper() m.ctrl.T.Helper()

View File

@ -134,6 +134,9 @@ type ClientInterface interface {
// GetVersion request // GetVersion request
GetVersion(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) GetVersion(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
// FetchWorkers request
FetchWorkers(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
// RegisterWorker request with any body // RegisterWorker request with any body
RegisterWorkerWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) RegisterWorkerWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
@ -375,6 +378,18 @@ func (c *Client) GetVersion(ctx context.Context, reqEditors ...RequestEditorFn)
return c.Client.Do(req) return c.Client.Do(req)
} }
func (c *Client) FetchWorkers(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewFetchWorkersRequest(c.Server)
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) { func (c *Client) RegisterWorkerWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewRegisterWorkerRequestWithBody(c.Server, contentType, body) req, err := NewRegisterWorkerRequestWithBody(c.Server, contentType, body)
if err != nil { if err != nil {
@ -1016,6 +1031,33 @@ func NewGetVersionRequest(server string) (*http.Request, error) {
return req, nil return req, nil
} }
// NewFetchWorkersRequest generates requests for FetchWorkers
func NewFetchWorkersRequest(server string) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/api/worker-mgt/workers")
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 // NewRegisterWorkerRequest calls the generic RegisterWorker builder with application/json body
func NewRegisterWorkerRequest(server string, body RegisterWorkerJSONRequestBody) (*http.Request, error) { func NewRegisterWorkerRequest(server string, body RegisterWorkerJSONRequestBody) (*http.Request, error) {
var bodyReader io.Reader var bodyReader io.Reader
@ -1571,6 +1613,9 @@ type ClientWithResponsesInterface interface {
// GetVersion request // GetVersion request
GetVersionWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetVersionResponse, error) GetVersionWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetVersionResponse, error)
// FetchWorkers request
FetchWorkersWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*FetchWorkersResponse, error)
// RegisterWorker request with any body // RegisterWorker request with any body
RegisterWorkerWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RegisterWorkerResponse, error) RegisterWorkerWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RegisterWorkerResponse, error)
@ -1888,6 +1933,28 @@ func (r GetVersionResponse) StatusCode() int {
return 0 return 0
} }
type FetchWorkersResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *WorkerList
}
// Status returns HTTPResponse.Status
func (r FetchWorkersResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r FetchWorkersResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type RegisterWorkerResponse struct { type RegisterWorkerResponse struct {
Body []byte Body []byte
HTTPResponse *http.Response HTTPResponse *http.Response
@ -2303,6 +2370,15 @@ func (c *ClientWithResponses) GetVersionWithResponse(ctx context.Context, reqEdi
return ParseGetVersionResponse(rsp) return ParseGetVersionResponse(rsp)
} }
// FetchWorkersWithResponse request returning *FetchWorkersResponse
func (c *ClientWithResponses) FetchWorkersWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*FetchWorkersResponse, error) {
rsp, err := c.FetchWorkers(ctx, reqEditors...)
if err != nil {
return nil, err
}
return ParseFetchWorkersResponse(rsp)
}
// RegisterWorkerWithBodyWithResponse request with arbitrary body returning *RegisterWorkerResponse // RegisterWorkerWithBodyWithResponse request with arbitrary body returning *RegisterWorkerResponse
func (c *ClientWithResponses) RegisterWorkerWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RegisterWorkerResponse, error) { func (c *ClientWithResponses) RegisterWorkerWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*RegisterWorkerResponse, error) {
rsp, err := c.RegisterWorkerWithBody(ctx, contentType, body, reqEditors...) rsp, err := c.RegisterWorkerWithBody(ctx, contentType, body, reqEditors...)
@ -2799,6 +2875,32 @@ func ParseGetVersionResponse(rsp *http.Response) (*GetVersionResponse, error) {
return response, nil return response, nil
} }
// ParseFetchWorkersResponse parses an HTTP response from a FetchWorkersWithResponse call
func ParseFetchWorkersResponse(rsp *http.Response) (*FetchWorkersResponse, error) {
bodyBytes, err := ioutil.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &FetchWorkersResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest WorkerList
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 // ParseRegisterWorkerResponse parses an HTTP response from a RegisterWorkerWithResponse call
func ParseRegisterWorkerResponse(rsp *http.Response) (*RegisterWorkerResponse, error) { func ParseRegisterWorkerResponse(rsp *http.Response) (*RegisterWorkerResponse, error) {
bodyBytes, err := ioutil.ReadAll(rsp.Body) bodyBytes, err := ioutil.ReadAll(rsp.Body)

View File

@ -49,6 +49,9 @@ type ServerInterface interface {
// Get the Flamenco version of this Manager // Get the Flamenco version of this Manager
// (GET /api/version) // (GET /api/version)
GetVersion(ctx echo.Context) error GetVersion(ctx echo.Context) error
// Get list of workers.
// (GET /api/worker-mgt/workers)
FetchWorkers(ctx echo.Context) error
// Register a new worker // Register a new worker
// (POST /api/worker/register-worker) // (POST /api/worker/register-worker)
RegisterWorker(ctx echo.Context) error RegisterWorker(ctx echo.Context) error
@ -250,6 +253,15 @@ func (w *ServerInterfaceWrapper) GetVersion(ctx echo.Context) error {
return err return err
} }
// FetchWorkers converts echo context to params.
func (w *ServerInterfaceWrapper) FetchWorkers(ctx echo.Context) error {
var err error
// Invoke the callback with all the unmarshalled arguments
err = w.Handler.FetchWorkers(ctx)
return err
}
// RegisterWorker converts echo context to params. // RegisterWorker converts echo context to params.
func (w *ServerInterfaceWrapper) RegisterWorker(ctx echo.Context) error { func (w *ServerInterfaceWrapper) RegisterWorker(ctx echo.Context) error {
var err error var err error
@ -491,6 +503,7 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
router.GET(baseURL+"/api/tasks/:task_id/logtail", wrapper.FetchTaskLogTail) router.GET(baseURL+"/api/tasks/:task_id/logtail", wrapper.FetchTaskLogTail)
router.POST(baseURL+"/api/tasks/:task_id/setstatus", wrapper.SetTaskStatus) router.POST(baseURL+"/api/tasks/:task_id/setstatus", wrapper.SetTaskStatus)
router.GET(baseURL+"/api/version", wrapper.GetVersion) router.GET(baseURL+"/api/version", wrapper.GetVersion)
router.GET(baseURL+"/api/worker-mgt/workers", wrapper.FetchWorkers)
router.POST(baseURL+"/api/worker/register-worker", wrapper.RegisterWorker) router.POST(baseURL+"/api/worker/register-worker", wrapper.RegisterWorker)
router.POST(baseURL+"/api/worker/sign-off", wrapper.SignOff) router.POST(baseURL+"/api/worker/sign-off", wrapper.SignOff)
router.POST(baseURL+"/api/worker/sign-on", wrapper.SignOn) router.POST(baseURL+"/api/worker/sign-on", wrapper.SignOn)

View File

@ -18,131 +18,133 @@ 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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",
"96/f/2cAAAD//+3OGFVziQAA", "S4BRFt3ldtuXt2qvOkXGwhooJ8NGnmFmX1f0PlfjkGqAMc/fKtACzCAqPB6slWsNWwUpJjHp49dH7dLn",
"+KZZzeeV9G2XnEjvVs7X0/tgV3cBf9/ysoaJPX59NGg+7Beng7pFqZrXbcOdrVZlgKizGGbsJYwLOrB6",
"FaTxhto8BjGe436nnv3k5sZreAK5fH/5/wMAAP//CXQJXBiNAAA=",
} }
// GetSwagger returns the content of the embedded swagger specification file // GetSwagger returns the content of the embedded swagger specification file

View File

@ -514,6 +514,11 @@ type TaskWorker struct {
Name string `json:"name"` Name string `json:"name"`
} }
// List of workers.
type WorkerList struct {
Workers []WorkerSummary `json:"workers"`
}
// WorkerRegistration defines model for WorkerRegistration. // WorkerRegistration defines model for WorkerRegistration.
type WorkerRegistration struct { type WorkerRegistration struct {
Nickname string `json:"nickname"` Nickname string `json:"nickname"`
@ -542,6 +547,14 @@ type WorkerStateChanged struct {
// WorkerStatus defines model for WorkerStatus. // WorkerStatus defines model for WorkerStatus.
type WorkerStatus string type WorkerStatus string
// Basic information about a Worker.
type WorkerSummary struct {
Id string `json:"id"`
Nickname string `json:"nickname"`
Status WorkerStatus `json:"status"`
StatusRequested *WorkerStatus `json:"status_requested,omitempty"`
}
// SubmitJobJSONBody defines parameters for SubmitJob. // SubmitJobJSONBody defines parameters for SubmitJob.
type SubmitJobJSONBody SubmittedJob type SubmitJobJSONBody SubmittedJob

View File

@ -55,7 +55,7 @@ class ApiClient {
* @default {} * @default {}
*/ */
this.defaultHeaders = { this.defaultHeaders = {
'User-Agent': 'Flamenco/5f44849d / webbrowser' 'User-Agent': 'Flamenco/6dec235e / webbrowser'
}; };
/** /**

View File

@ -55,15 +55,18 @@ import TaskStatusChange from './model/TaskStatusChange';
import TaskSummary from './model/TaskSummary'; import TaskSummary from './model/TaskSummary';
import TaskUpdate from './model/TaskUpdate'; import TaskUpdate from './model/TaskUpdate';
import TaskWorker from './model/TaskWorker'; import TaskWorker from './model/TaskWorker';
import WorkerList from './model/WorkerList';
import WorkerRegistration from './model/WorkerRegistration'; import WorkerRegistration from './model/WorkerRegistration';
import WorkerSignOn from './model/WorkerSignOn'; import WorkerSignOn from './model/WorkerSignOn';
import WorkerStateChange from './model/WorkerStateChange'; import WorkerStateChange from './model/WorkerStateChange';
import WorkerStateChanged from './model/WorkerStateChanged'; import WorkerStateChanged from './model/WorkerStateChanged';
import WorkerStatus from './model/WorkerStatus'; import WorkerStatus from './model/WorkerStatus';
import WorkerSummary from './model/WorkerSummary';
import JobsApi from './manager/JobsApi'; import JobsApi from './manager/JobsApi';
import MetaApi from './manager/MetaApi'; import MetaApi from './manager/MetaApi';
import ShamanApi from './manager/ShamanApi'; import ShamanApi from './manager/ShamanApi';
import WorkerApi from './manager/WorkerApi'; import WorkerApi from './manager/WorkerApi';
import WorkerMgtApi from './manager/WorkerMgtApi';
/** /**
@ -356,6 +359,12 @@ export {
*/ */
TaskWorker, TaskWorker,
/**
* The WorkerList model constructor.
* @property {module:model/WorkerList}
*/
WorkerList,
/** /**
* The WorkerRegistration model constructor. * The WorkerRegistration model constructor.
* @property {module:model/WorkerRegistration} * @property {module:model/WorkerRegistration}
@ -386,6 +395,12 @@ export {
*/ */
WorkerStatus, WorkerStatus,
/**
* The WorkerSummary model constructor.
* @property {module:model/WorkerSummary}
*/
WorkerSummary,
/** /**
* The JobsApi service constructor. * The JobsApi service constructor.
* @property {module:manager/JobsApi} * @property {module:manager/JobsApi}
@ -408,5 +423,11 @@ export {
* The WorkerApi service constructor. * The WorkerApi service constructor.
* @property {module:manager/WorkerApi} * @property {module:manager/WorkerApi}
*/ */
WorkerApi WorkerApi,
/**
* The WorkerMgtApi service constructor.
* @property {module:manager/WorkerMgtApi}
*/
WorkerMgtApi
}; };

View File

@ -0,0 +1,77 @@
/**
* Flamenco manager
* Render Farm manager API
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
*/
import ApiClient from "../ApiClient";
import WorkerList from '../model/WorkerList';
/**
* WorkerMgt service.
* @module manager/WorkerMgtApi
* @version 0.0.0
*/
export default class WorkerMgtApi {
/**
* Constructs a new WorkerMgtApi.
* @alias module:manager/WorkerMgtApi
* @class
* @param {module:ApiClient} [apiClient] Optional API client implementation to use,
* default to {@link module:ApiClient#instance} if unspecified.
*/
constructor(apiClient) {
this.apiClient = apiClient || ApiClient.instance;
}
/**
* Get list of workers.
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/WorkerList} and HTTP response
*/
fetchWorkersWithHttpInfo() {
let postBody = null;
let pathParams = {
};
let queryParams = {
};
let headerParams = {
};
let formParams = {
};
let authNames = [];
let contentTypes = [];
let accepts = ['application/json'];
let returnType = WorkerList;
return this.apiClient.callApi(
'/api/worker-mgt/workers', 'GET',
pathParams, queryParams, headerParams, formParams, postBody,
authNames, contentTypes, accepts, returnType, null
);
}
/**
* Get list of workers.
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/WorkerList}
*/
fetchWorkers() {
return this.fetchWorkersWithHttpInfo()
.then(function(response_and_data) {
return response_and_data.data;
});
}
}

View File

@ -0,0 +1,75 @@
/**
* Flamenco manager
* Render Farm manager API
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
*/
import ApiClient from '../ApiClient';
import WorkerSummary from './WorkerSummary';
/**
* The WorkerList model module.
* @module model/WorkerList
* @version 0.0.0
*/
class WorkerList {
/**
* Constructs a new <code>WorkerList</code>.
* List of workers.
* @alias module:model/WorkerList
* @param workers {Array.<module:model/WorkerSummary>}
*/
constructor(workers) {
WorkerList.initialize(this, workers);
}
/**
* Initializes the fields of this object.
* This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
* Only for internal use.
*/
static initialize(obj, workers) {
obj['workers'] = workers;
}
/**
* Constructs a <code>WorkerList</code> from a plain JavaScript object, optionally creating a new instance.
* Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
* @param {Object} data The plain JavaScript object bearing properties of interest.
* @param {module:model/WorkerList} obj Optional instance to populate.
* @return {module:model/WorkerList} The populated <code>WorkerList</code> instance.
*/
static constructFromObject(data, obj) {
if (data) {
obj = obj || new WorkerList();
if (data.hasOwnProperty('workers')) {
obj['workers'] = ApiClient.convertToType(data['workers'], [WorkerSummary]);
}
}
return obj;
}
}
/**
* @member {Array.<module:model/WorkerSummary>} workers
*/
WorkerList.prototype['workers'] = undefined;
export default WorkerList;

View File

@ -0,0 +1,103 @@
/**
* Flamenco manager
* Render Farm manager API
*
* The version of the OpenAPI document: 1.0.0
*
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*
*/
import ApiClient from '../ApiClient';
import WorkerStatus from './WorkerStatus';
/**
* The WorkerSummary model module.
* @module model/WorkerSummary
* @version 0.0.0
*/
class WorkerSummary {
/**
* Constructs a new <code>WorkerSummary</code>.
* Basic information about a Worker.
* @alias module:model/WorkerSummary
* @param id {String}
* @param nickname {String}
* @param status {module:model/WorkerStatus}
*/
constructor(id, nickname, status) {
WorkerSummary.initialize(this, id, nickname, status);
}
/**
* Initializes the fields of this object.
* This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins).
* Only for internal use.
*/
static initialize(obj, id, nickname, status) {
obj['id'] = id;
obj['nickname'] = nickname;
obj['status'] = status;
}
/**
* Constructs a <code>WorkerSummary</code> from a plain JavaScript object, optionally creating a new instance.
* Copies all relevant properties from <code>data</code> to <code>obj</code> if supplied or a new instance if not.
* @param {Object} data The plain JavaScript object bearing properties of interest.
* @param {module:model/WorkerSummary} obj Optional instance to populate.
* @return {module:model/WorkerSummary} The populated <code>WorkerSummary</code> instance.
*/
static constructFromObject(data, obj) {
if (data) {
obj = obj || new WorkerSummary();
if (data.hasOwnProperty('id')) {
obj['id'] = ApiClient.convertToType(data['id'], 'String');
}
if (data.hasOwnProperty('nickname')) {
obj['nickname'] = ApiClient.convertToType(data['nickname'], 'String');
}
if (data.hasOwnProperty('status')) {
obj['status'] = WorkerStatus.constructFromObject(data['status']);
}
if (data.hasOwnProperty('status_requested')) {
obj['status_requested'] = WorkerStatus.constructFromObject(data['status_requested']);
}
}
return obj;
}
}
/**
* @member {String} id
*/
WorkerSummary.prototype['id'] = undefined;
/**
* @member {String} nickname
*/
WorkerSummary.prototype['nickname'] = undefined;
/**
* @member {module:model/WorkerStatus} status
*/
WorkerSummary.prototype['status'] = undefined;
/**
* @member {module:model/WorkerStatus} status_requested
*/
WorkerSummary.prototype['status_requested'] = undefined;
export default WorkerSummary;