diff --git a/addon/flamenco/manager/__init__.py b/addon/flamenco/manager/__init__.py
index 8d62676b..a4f5a3df 100644
--- a/addon/flamenco/manager/__init__.py
+++ b/addon/flamenco/manager/__init__.py
@@ -10,7 +10,7 @@
"""
-__version__ = "40325b81"
+__version__ = "d8233363"
# import ApiClient
from flamenco.manager.api_client import ApiClient
diff --git a/addon/flamenco/manager/api_client.py b/addon/flamenco/manager/api_client.py
index fce1e1cb..0e7bb07b 100644
--- a/addon/flamenco/manager/api_client.py
+++ b/addon/flamenco/manager/api_client.py
@@ -76,7 +76,7 @@ class ApiClient(object):
self.default_headers[header_name] = header_value
self.cookie = cookie
# Set default User-Agent.
- self.user_agent = 'Flamenco/40325b81 (Blender add-on)'
+ self.user_agent = 'Flamenco/d8233363 (Blender add-on)'
def __enter__(self):
return self
diff --git a/addon/flamenco/manager/configuration.py b/addon/flamenco/manager/configuration.py
index ea0b1fa8..a2a0e35d 100644
--- a/addon/flamenco/manager/configuration.py
+++ b/addon/flamenco/manager/configuration.py
@@ -404,7 +404,7 @@ conf = flamenco.manager.Configuration(
"OS: {env}\n"\
"Python Version: {pyversion}\n"\
"Version of the API: 1.0.0\n"\
- "SDK Package Version: 40325b81".\
+ "SDK Package Version: d8233363".\
format(env=sys.platform, pyversion=sys.version)
def get_host_settings(self):
diff --git a/addon/flamenco/manager/docs/Worker.md b/addon/flamenco/manager/docs/Worker.md
index 155731de..def9d113 100644
--- a/addon/flamenco/manager/docs/Worker.md
+++ b/addon/flamenco/manager/docs/Worker.md
@@ -8,9 +8,9 @@ Name | Type | Description | Notes
**id** | **str** | |
**nickname** | **str** | |
**status** | [**WorkerStatus**](WorkerStatus.md) | |
+**version** | **str** | Version of Flamenco this Worker is running |
**ip_address** | **str** | IP address of the Worker |
**platform** | **str** | Operating system of the Worker |
-**version** | **str** | Version of Flamenco this Worker is running |
**supported_task_types** | **[str]** | |
**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]
diff --git a/addon/flamenco/manager/docs/WorkerAllOf.md b/addon/flamenco/manager/docs/WorkerAllOf.md
new file mode 100644
index 00000000..01cc0f33
--- /dev/null
+++ b/addon/flamenco/manager/docs/WorkerAllOf.md
@@ -0,0 +1,14 @@
+# WorkerAllOf
+
+
+## Properties
+Name | Type | Description | Notes
+------------ | ------------- | ------------- | -------------
+**ip_address** | **str** | IP address of the Worker |
+**platform** | **str** | Operating system of the Worker |
+**supported_task_types** | **[str]** | |
+**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)
+
+
diff --git a/addon/flamenco/manager/docs/WorkerSummary.md b/addon/flamenco/manager/docs/WorkerSummary.md
index a268402d..f83826db 100644
--- a/addon/flamenco/manager/docs/WorkerSummary.md
+++ b/addon/flamenco/manager/docs/WorkerSummary.md
@@ -8,6 +8,7 @@ Name | Type | Description | Notes
**id** | **str** | |
**nickname** | **str** | |
**status** | [**WorkerStatus**](WorkerStatus.md) | |
+**version** | **str** | Version of Flamenco this Worker is running |
**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]
diff --git a/addon/flamenco/manager/model/worker.py b/addon/flamenco/manager/model/worker.py
index 50cf1db1..392b772a 100644
--- a/addon/flamenco/manager/model/worker.py
+++ b/addon/flamenco/manager/model/worker.py
@@ -30,11 +30,15 @@ from flamenco.manager.exceptions import ApiAttributeError
def lazy_import():
+ from flamenco.manager.model.worker_all_of import WorkerAllOf
from flamenco.manager.model.worker_status import WorkerStatus
+ from flamenco.manager.model.worker_summary import WorkerSummary
+ globals()['WorkerAllOf'] = WorkerAllOf
globals()['WorkerStatus'] = WorkerStatus
+ globals()['WorkerSummary'] = WorkerSummary
-class Worker(ModelNormal):
+class Worker(ModelComposed):
"""NOTE: This class is auto generated by OpenAPI Generator.
Ref: https://openapi-generator.tech
@@ -90,9 +94,9 @@ class Worker(ModelNormal):
'id': (str,), # noqa: E501
'nickname': (str,), # noqa: E501
'status': (WorkerStatus,), # noqa: E501
+ 'version': (str,), # noqa: E501
'ip_address': (str,), # noqa: E501
'platform': (str,), # noqa: E501
- 'version': (str,), # noqa: E501
'supported_task_types': ([str],), # noqa: E501
'status_requested': (WorkerStatus,), # noqa: E501
}
@@ -106,9 +110,9 @@ class Worker(ModelNormal):
'id': 'id', # noqa: E501
'nickname': 'nickname', # noqa: E501
'status': 'status', # noqa: E501
+ 'version': 'version', # noqa: E501
'ip_address': 'ip_address', # noqa: E501
'platform': 'platform', # noqa: E501
- 'version': 'version', # noqa: E501
'supported_task_types': 'supported_task_types', # noqa: E501
'status_requested': 'status_requested', # noqa: E501
}
@@ -116,23 +120,19 @@ class Worker(ModelNormal):
read_only_vars = {
}
- _composed_schemas = {}
-
@classmethod
@convert_js_args_to_python_args
- def _from_openapi_data(cls, id, nickname, status, ip_address, platform, version, supported_task_types, *args, **kwargs): # noqa: E501
+ def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
"""Worker - a model defined in OpenAPI
- Args:
+ Keyword Args:
id (str):
nickname (str):
status (WorkerStatus):
+ version (str): Version of Flamenco this Worker is running
ip_address (str): IP address of the Worker
platform (str): Operating system of the Worker
- version (str): Version of Flamenco this Worker is running
supported_task_types ([str]):
-
- 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.
@@ -191,21 +191,29 @@ class Worker(ModelNormal):
self._configuration = _configuration
self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
- self.id = id
- self.nickname = nickname
- self.status = status
- self.ip_address = ip_address
- self.platform = platform
- self.version = version
- self.supported_task_types = supported_task_types
+ constant_args = {
+ '_check_type': _check_type,
+ '_path_to_item': _path_to_item,
+ '_spec_property_naming': _spec_property_naming,
+ '_configuration': _configuration,
+ '_visited_composed_classes': self._visited_composed_classes,
+ }
+ composed_info = validate_get_composed_info(
+ constant_args, kwargs, self)
+ self._composed_instances = composed_info[0]
+ self._var_name_to_model_instances = composed_info[1]
+ self._additional_properties_model_instances = composed_info[2]
+ discarded_args = composed_info[3]
+
for var_name, var_value in kwargs.items():
- if var_name not in self.attribute_map and \
+ if var_name in discarded_args and \
self._configuration is not None and \
self._configuration.discard_unknown_keys and \
- self.additional_properties_type is None:
+ self._additional_properties_model_instances:
# discard variable.
continue
setattr(self, var_name, var_value)
+
return self
required_properties = set([
@@ -215,22 +223,23 @@ class Worker(ModelNormal):
'_path_to_item',
'_configuration',
'_visited_composed_classes',
+ '_composed_instances',
+ '_var_name_to_model_instances',
+ '_additional_properties_model_instances',
])
@convert_js_args_to_python_args
- def __init__(self, id, nickname, status, ip_address, platform, version, supported_task_types, *args, **kwargs): # noqa: E501
+ def __init__(self, *args, **kwargs): # noqa: E501
"""Worker - a model defined in OpenAPI
- Args:
+ Keyword Args:
id (str):
nickname (str):
status (WorkerStatus):
+ version (str): Version of Flamenco this Worker is running
ip_address (str): IP address of the Worker
platform (str): Operating system of the Worker
- version (str): Version of Flamenco this Worker is running
supported_task_types ([str]):
-
- 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.
@@ -287,21 +296,49 @@ class Worker(ModelNormal):
self._configuration = _configuration
self._visited_composed_classes = _visited_composed_classes + (self.__class__,)
- self.id = id
- self.nickname = nickname
- self.status = status
- self.ip_address = ip_address
- self.platform = platform
- self.version = version
- self.supported_task_types = supported_task_types
+ constant_args = {
+ '_check_type': _check_type,
+ '_path_to_item': _path_to_item,
+ '_spec_property_naming': _spec_property_naming,
+ '_configuration': _configuration,
+ '_visited_composed_classes': self._visited_composed_classes,
+ }
+ composed_info = validate_get_composed_info(
+ constant_args, kwargs, self)
+ self._composed_instances = composed_info[0]
+ self._var_name_to_model_instances = composed_info[1]
+ self._additional_properties_model_instances = composed_info[2]
+ discarded_args = composed_info[3]
+
for var_name, var_value in kwargs.items():
- if var_name not in self.attribute_map and \
+ if var_name in discarded_args and \
self._configuration is not None and \
self._configuration.discard_unknown_keys and \
- self.additional_properties_type is None:
+ self._additional_properties_model_instances:
# 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.")
+
+ @cached_property
+ def _composed_schemas():
+ # we need this here to make our import statements work
+ # we must store _composed_schemas in here so the code is only run
+ # when we invoke this method. If we kept this at the class
+ # level we would get an error because the class level
+ # code would be run when this module is imported, and these composed
+ # classes don't exist yet because their module has not finished
+ # loading
+ lazy_import()
+ return {
+ 'anyOf': [
+ ],
+ 'allOf': [
+ WorkerAllOf,
+ WorkerSummary,
+ ],
+ 'oneOf': [
+ ],
+ }
diff --git a/addon/flamenco/manager/model/worker_all_of.py b/addon/flamenco/manager/model/worker_all_of.py
new file mode 100644
index 00000000..5494659e
--- /dev/null
+++ b/addon/flamenco/manager/model/worker_all_of.py
@@ -0,0 +1,273 @@
+"""
+ 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
+
+
+
+class WorkerAllOf(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
+ """
+ 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.
+ """
+ return {
+ 'ip_address': (str,), # noqa: E501
+ 'platform': (str,), # noqa: E501
+ 'supported_task_types': ([str],), # noqa: E501
+ }
+
+ @cached_property
+ def discriminator():
+ return None
+
+
+ attribute_map = {
+ 'ip_address': 'ip_address', # noqa: E501
+ 'platform': 'platform', # noqa: E501
+ 'supported_task_types': 'supported_task_types', # noqa: E501
+ }
+
+ read_only_vars = {
+ }
+
+ _composed_schemas = {}
+
+ @classmethod
+ @convert_js_args_to_python_args
+ def _from_openapi_data(cls, ip_address, platform, supported_task_types, *args, **kwargs): # noqa: E501
+ """WorkerAllOf - a model defined in OpenAPI
+
+ Args:
+ ip_address (str): IP address of the Worker
+ platform (str): Operating system of the Worker
+ supported_task_types ([str]):
+
+ 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.ip_address = ip_address
+ self.platform = platform
+ self.supported_task_types = supported_task_types
+ 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, ip_address, platform, supported_task_types, *args, **kwargs): # noqa: E501
+ """WorkerAllOf - a model defined in OpenAPI
+
+ Args:
+ ip_address (str): IP address of the Worker
+ platform (str): Operating system of the Worker
+ supported_task_types ([str]):
+
+ 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.ip_address = ip_address
+ self.platform = platform
+ self.supported_task_types = supported_task_types
+ 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.")
diff --git a/addon/flamenco/manager/model/worker_summary.py b/addon/flamenco/manager/model/worker_summary.py
index ae0f2dad..5783e134 100644
--- a/addon/flamenco/manager/model/worker_summary.py
+++ b/addon/flamenco/manager/model/worker_summary.py
@@ -90,6 +90,7 @@ class WorkerSummary(ModelNormal):
'id': (str,), # noqa: E501
'nickname': (str,), # noqa: E501
'status': (WorkerStatus,), # noqa: E501
+ 'version': (str,), # noqa: E501
'status_requested': (WorkerStatus,), # noqa: E501
}
@@ -102,6 +103,7 @@ class WorkerSummary(ModelNormal):
'id': 'id', # noqa: E501
'nickname': 'nickname', # noqa: E501
'status': 'status', # noqa: E501
+ 'version': 'version', # noqa: E501
'status_requested': 'status_requested', # noqa: E501
}
@@ -112,13 +114,14 @@ class WorkerSummary(ModelNormal):
@classmethod
@convert_js_args_to_python_args
- def _from_openapi_data(cls, id, nickname, status, *args, **kwargs): # noqa: E501
+ def _from_openapi_data(cls, id, nickname, status, version, *args, **kwargs): # noqa: E501
"""WorkerSummary - a model defined in OpenAPI
Args:
id (str):
nickname (str):
status (WorkerStatus):
+ version (str): Version of Flamenco this Worker is running
Keyword Args:
_check_type (bool): if True, values for parameters in openapi_types
@@ -182,6 +185,7 @@ class WorkerSummary(ModelNormal):
self.id = id
self.nickname = nickname
self.status = status
+ self.version = version
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
@@ -202,13 +206,14 @@ class WorkerSummary(ModelNormal):
])
@convert_js_args_to_python_args
- def __init__(self, id, nickname, status, *args, **kwargs): # noqa: E501
+ def __init__(self, id, nickname, status, version, *args, **kwargs): # noqa: E501
"""WorkerSummary - a model defined in OpenAPI
Args:
id (str):
nickname (str):
status (WorkerStatus):
+ version (str): Version of Flamenco this Worker is running
Keyword Args:
_check_type (bool): if True, values for parameters in openapi_types
@@ -270,6 +275,7 @@ class WorkerSummary(ModelNormal):
self.id = id
self.nickname = nickname
self.status = status
+ self.version = version
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
diff --git a/addon/flamenco/manager/models/__init__.py b/addon/flamenco/manager/models/__init__.py
index 5e1e49e9..14e808dc 100644
--- a/addon/flamenco/manager/models/__init__.py
+++ b/addon/flamenco/manager/models/__init__.py
@@ -55,6 +55,7 @@ from flamenco.manager.model.task_summary import TaskSummary
from flamenco.manager.model.task_update import TaskUpdate
from flamenco.manager.model.task_worker import TaskWorker
from flamenco.manager.model.worker import Worker
+from flamenco.manager.model.worker_all_of import WorkerAllOf
from flamenco.manager.model.worker_list import WorkerList
from flamenco.manager.model.worker_registration import WorkerRegistration
from flamenco.manager.model.worker_sign_on import WorkerSignOn
diff --git a/addon/flamenco/manager_README.md b/addon/flamenco/manager_README.md
index 6be18007..534d058f 100644
--- a/addon/flamenco/manager_README.md
+++ b/addon/flamenco/manager_README.md
@@ -4,7 +4,7 @@ Render Farm manager API
The `flamenco.manager` package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 1.0.0
-- Package version: 40325b81
+- Package version: d8233363
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
For more information, please visit [https://flamenco.io/](https://flamenco.io/)
@@ -147,6 +147,7 @@ Class | Method | HTTP request | Description
- [TaskUpdate](flamenco/manager/docs/TaskUpdate.md)
- [TaskWorker](flamenco/manager/docs/TaskWorker.md)
- [Worker](flamenco/manager/docs/Worker.md)
+ - [WorkerAllOf](flamenco/manager/docs/WorkerAllOf.md)
- [WorkerList](flamenco/manager/docs/WorkerList.md)
- [WorkerRegistration](flamenco/manager/docs/WorkerRegistration.md)
- [WorkerSignOn](flamenco/manager/docs/WorkerSignOn.md)
diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go
index a2ff50c7..20e75e34 100644
--- a/pkg/api/openapi_spec.gen.go
+++ b/pkg/api/openapi_spec.gen.go
@@ -18,137 +18,137 @@ import (
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
- "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",
+ "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",
- "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",
+ "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",
- "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",
- "AAD//+ITiwMflAAA",
+ "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",
+ "AP//3aXGoJmTAAA=",
}
// GetSwagger returns the content of the embedded swagger specification file
diff --git a/pkg/api/openapi_types.gen.go b/pkg/api/openapi_types.gen.go
index 5cc0f443..09793361 100644
--- a/pkg/api/openapi_types.gen.go
+++ b/pkg/api/openapi_types.gen.go
@@ -533,22 +533,17 @@ type TaskWorker struct {
Name string `json:"name"`
}
-// All information about a Worker
+// Worker defines model for Worker.
type Worker struct {
- Id string `json:"id"`
-
+ // Embedded struct due to allOf(#/components/schemas/WorkerSummary)
+ WorkerSummary `yaml:",inline"`
+ // Embedded fields due to inline allOf schema
// IP address of the Worker
IpAddress string `json:"ip_address"`
- Nickname string `json:"nickname"`
// Operating system of the Worker
- Platform string `json:"platform"`
- Status WorkerStatus `json:"status"`
- StatusRequested *WorkerStatus `json:"status_requested,omitempty"`
- SupportedTaskTypes []string `json:"supported_task_types"`
-
- // Version of Flamenco this Worker is running
- Version string `json:"version"`
+ Platform string `json:"platform"`
+ SupportedTaskTypes []string `json:"supported_task_types"`
}
// List of workers.
@@ -590,6 +585,9 @@ type WorkerSummary struct {
Nickname string `json:"nickname"`
Status WorkerStatus `json:"status"`
StatusRequested *WorkerStatus `json:"status_requested,omitempty"`
+
+ // Version of Flamenco this Worker is running
+ Version string `json:"version"`
}
// SubmitJobJSONBody defines parameters for SubmitJob.
diff --git a/web/app/src/manager-api/ApiClient.js b/web/app/src/manager-api/ApiClient.js
index 40a2fd90..5b758f0e 100644
--- a/web/app/src/manager-api/ApiClient.js
+++ b/web/app/src/manager-api/ApiClient.js
@@ -55,7 +55,7 @@ class ApiClient {
* @default {}
*/
this.defaultHeaders = {
- 'User-Agent': 'Flamenco/40325b81 / webbrowser'
+ 'User-Agent': 'Flamenco/d8233363 / webbrowser'
};
/**
diff --git a/web/app/src/manager-api/index.js b/web/app/src/manager-api/index.js
index 2e9e21f0..1a625f5d 100644
--- a/web/app/src/manager-api/index.js
+++ b/web/app/src/manager-api/index.js
@@ -57,6 +57,7 @@ import TaskSummary from './model/TaskSummary';
import TaskUpdate from './model/TaskUpdate';
import TaskWorker from './model/TaskWorker';
import Worker from './model/Worker';
+import WorkerAllOf from './model/WorkerAllOf';
import WorkerList from './model/WorkerList';
import WorkerRegistration from './model/WorkerRegistration';
import WorkerSignOn from './model/WorkerSignOn';
@@ -373,6 +374,12 @@ export {
*/
Worker,
+ /**
+ * The WorkerAllOf model constructor.
+ * @property {module:model/WorkerAllOf}
+ */
+ WorkerAllOf,
+
/**
* The WorkerList model constructor.
* @property {module:model/WorkerList}
diff --git a/web/app/src/manager-api/model/Worker.js b/web/app/src/manager-api/model/Worker.js
index ad514992..7a8118e7 100644
--- a/web/app/src/manager-api/model/Worker.js
+++ b/web/app/src/manager-api/model/Worker.js
@@ -12,7 +12,9 @@
*/
import ApiClient from '../ApiClient';
+import WorkerAllOf from './WorkerAllOf';
import WorkerStatus from './WorkerStatus';
+import WorkerSummary from './WorkerSummary';
/**
* The Worker model module.
@@ -24,17 +26,19 @@ class Worker {
* Constructs a new Worker
.
* All information about a Worker
* @alias module:model/Worker
+ * @implements module:model/WorkerSummary
+ * @implements module:model/WorkerAllOf
* @param id {String}
* @param nickname {String}
* @param status {module:model/WorkerStatus}
+ * @param version {String} Version of Flamenco this Worker is running
* @param ipAddress {String} IP address of the Worker
* @param platform {String} Operating system of the Worker
- * @param version {String} Version of Flamenco this Worker is running
* @param supportedTaskTypes {Array.}
*/
- constructor(id, nickname, status, ipAddress, platform, version, supportedTaskTypes) {
-
- Worker.initialize(this, id, nickname, status, ipAddress, platform, version, supportedTaskTypes);
+ constructor(id, nickname, status, version, ipAddress, platform, supportedTaskTypes) {
+ WorkerSummary.initialize(this, id, nickname, status, version);WorkerAllOf.initialize(this, ipAddress, platform, supportedTaskTypes);
+ Worker.initialize(this, id, nickname, status, version, ipAddress, platform, supportedTaskTypes);
}
/**
@@ -42,13 +46,13 @@ class Worker {
* 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, ipAddress, platform, version, supportedTaskTypes) {
+ static initialize(obj, id, nickname, status, version, ipAddress, platform, supportedTaskTypes) {
obj['id'] = id;
obj['nickname'] = nickname;
obj['status'] = status;
+ obj['version'] = version;
obj['ip_address'] = ipAddress;
obj['platform'] = platform;
- obj['version'] = version;
obj['supported_task_types'] = supportedTaskTypes;
}
@@ -62,6 +66,8 @@ class Worker {
static constructFromObject(data, obj) {
if (data) {
obj = obj || new Worker();
+ WorkerSummary.constructFromObject(data, obj);
+ WorkerAllOf.constructFromObject(data, obj);
if (data.hasOwnProperty('id')) {
obj['id'] = ApiClient.convertToType(data['id'], 'String');
@@ -75,15 +81,15 @@ class Worker {
if (data.hasOwnProperty('status_requested')) {
obj['status_requested'] = WorkerStatus.constructFromObject(data['status_requested']);
}
+ if (data.hasOwnProperty('version')) {
+ obj['version'] = ApiClient.convertToType(data['version'], 'String');
+ }
if (data.hasOwnProperty('ip_address')) {
obj['ip_address'] = ApiClient.convertToType(data['ip_address'], 'String');
}
if (data.hasOwnProperty('platform')) {
obj['platform'] = ApiClient.convertToType(data['platform'], 'String');
}
- if (data.hasOwnProperty('version')) {
- obj['version'] = ApiClient.convertToType(data['version'], 'String');
- }
if (data.hasOwnProperty('supported_task_types')) {
obj['supported_task_types'] = ApiClient.convertToType(data['supported_task_types'], ['String']);
}
@@ -114,6 +120,12 @@ Worker.prototype['status'] = undefined;
*/
Worker.prototype['status_requested'] = undefined;
+/**
+ * Version of Flamenco this Worker is running
+ * @member {String} version
+ */
+Worker.prototype['version'] = undefined;
+
/**
* IP address of the Worker
* @member {String} ip_address
@@ -126,18 +138,49 @@ Worker.prototype['ip_address'] = undefined;
*/
Worker.prototype['platform'] = undefined;
-/**
- * Version of Flamenco this Worker is running
- * @member {String} version
- */
-Worker.prototype['version'] = undefined;
-
/**
* @member {Array.} supported_task_types
*/
Worker.prototype['supported_task_types'] = undefined;
+// Implement WorkerSummary interface:
+/**
+ * @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;
+/**
+ * Version of Flamenco this Worker is running
+ * @member {String} version
+ */
+WorkerSummary.prototype['version'] = undefined;
+// Implement WorkerAllOf interface:
+/**
+ * IP address of the Worker
+ * @member {String} ip_address
+ */
+WorkerAllOf.prototype['ip_address'] = undefined;
+/**
+ * Operating system of the Worker
+ * @member {String} platform
+ */
+WorkerAllOf.prototype['platform'] = undefined;
+/**
+ * @member {Array.} supported_task_types
+ */
+WorkerAllOf.prototype['supported_task_types'] = undefined;
diff --git a/web/app/src/manager-api/model/WorkerAllOf.js b/web/app/src/manager-api/model/WorkerAllOf.js
new file mode 100644
index 00000000..7c07dced
--- /dev/null
+++ b/web/app/src/manager-api/model/WorkerAllOf.js
@@ -0,0 +1,95 @@
+/**
+ * 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';
+
+/**
+ * The WorkerAllOf model module.
+ * @module model/WorkerAllOf
+ * @version 0.0.0
+ */
+class WorkerAllOf {
+ /**
+ * Constructs a new WorkerAllOf
.
+ * @alias module:model/WorkerAllOf
+ * @param ipAddress {String} IP address of the Worker
+ * @param platform {String} Operating system of the Worker
+ * @param supportedTaskTypes {Array.}
+ */
+ constructor(ipAddress, platform, supportedTaskTypes) {
+
+ WorkerAllOf.initialize(this, ipAddress, platform, supportedTaskTypes);
+ }
+
+ /**
+ * 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, ipAddress, platform, supportedTaskTypes) {
+ obj['ip_address'] = ipAddress;
+ obj['platform'] = platform;
+ obj['supported_task_types'] = supportedTaskTypes;
+ }
+
+ /**
+ * Constructs a WorkerAllOf
from a plain JavaScript object, optionally creating a new instance.
+ * Copies all relevant properties from data
to obj
if supplied or a new instance if not.
+ * @param {Object} data The plain JavaScript object bearing properties of interest.
+ * @param {module:model/WorkerAllOf} obj Optional instance to populate.
+ * @return {module:model/WorkerAllOf} The populated WorkerAllOf
instance.
+ */
+ static constructFromObject(data, obj) {
+ if (data) {
+ obj = obj || new WorkerAllOf();
+
+ if (data.hasOwnProperty('ip_address')) {
+ obj['ip_address'] = ApiClient.convertToType(data['ip_address'], 'String');
+ }
+ if (data.hasOwnProperty('platform')) {
+ obj['platform'] = ApiClient.convertToType(data['platform'], 'String');
+ }
+ if (data.hasOwnProperty('supported_task_types')) {
+ obj['supported_task_types'] = ApiClient.convertToType(data['supported_task_types'], ['String']);
+ }
+ }
+ return obj;
+ }
+
+
+}
+
+/**
+ * IP address of the Worker
+ * @member {String} ip_address
+ */
+WorkerAllOf.prototype['ip_address'] = undefined;
+
+/**
+ * Operating system of the Worker
+ * @member {String} platform
+ */
+WorkerAllOf.prototype['platform'] = undefined;
+
+/**
+ * @member {Array.} supported_task_types
+ */
+WorkerAllOf.prototype['supported_task_types'] = undefined;
+
+
+
+
+
+
+export default WorkerAllOf;
+
diff --git a/web/app/src/manager-api/model/WorkerSummary.js b/web/app/src/manager-api/model/WorkerSummary.js
index dbf8898d..0d5bfd49 100644
--- a/web/app/src/manager-api/model/WorkerSummary.js
+++ b/web/app/src/manager-api/model/WorkerSummary.js
@@ -27,10 +27,11 @@ class WorkerSummary {
* @param id {String}
* @param nickname {String}
* @param status {module:model/WorkerStatus}
+ * @param version {String} Version of Flamenco this Worker is running
*/
- constructor(id, nickname, status) {
+ constructor(id, nickname, status, version) {
- WorkerSummary.initialize(this, id, nickname, status);
+ WorkerSummary.initialize(this, id, nickname, status, version);
}
/**
@@ -38,10 +39,11 @@ class WorkerSummary {
* 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) {
+ static initialize(obj, id, nickname, status, version) {
obj['id'] = id;
obj['nickname'] = nickname;
obj['status'] = status;
+ obj['version'] = version;
}
/**
@@ -67,6 +69,9 @@ class WorkerSummary {
if (data.hasOwnProperty('status_requested')) {
obj['status_requested'] = WorkerStatus.constructFromObject(data['status_requested']);
}
+ if (data.hasOwnProperty('version')) {
+ obj['version'] = ApiClient.convertToType(data['version'], 'String');
+ }
}
return obj;
}
@@ -94,6 +99,12 @@ WorkerSummary.prototype['status'] = undefined;
*/
WorkerSummary.prototype['status_requested'] = undefined;
+/**
+ * Version of Flamenco this Worker is running
+ * @member {String} version
+ */
+WorkerSummary.prototype['version'] = undefined;
+