OAPI: regenerate code
This commit is contained in:
parent
f9acb3f413
commit
ae2cb281b4
@ -10,7 +10,7 @@
|
||||
"""
|
||||
|
||||
|
||||
__version__ = "b34fee51"
|
||||
__version__ = "fd807980"
|
||||
|
||||
# import ApiClient
|
||||
from flamenco.manager.api_client import ApiClient
|
||||
|
@ -23,6 +23,8 @@ from flamenco.manager.model_utils import ( # noqa: F401
|
||||
)
|
||||
from flamenco.manager.model.flamenco_version import FlamencoVersion
|
||||
from flamenco.manager.model.manager_configuration import ManagerConfiguration
|
||||
from flamenco.manager.model.manager_variable_audience import ManagerVariableAudience
|
||||
from flamenco.manager.model.manager_variables import ManagerVariables
|
||||
|
||||
|
||||
class MetaApi(object):
|
||||
@ -78,6 +80,61 @@ class MetaApi(object):
|
||||
},
|
||||
api_client=api_client
|
||||
)
|
||||
self.get_variables_endpoint = _Endpoint(
|
||||
settings={
|
||||
'response_type': (ManagerVariables,),
|
||||
'auth': [],
|
||||
'endpoint_path': '/api/v3/configuration/variables/{audience}/{platform}',
|
||||
'operation_id': 'get_variables',
|
||||
'http_method': 'GET',
|
||||
'servers': None,
|
||||
},
|
||||
params_map={
|
||||
'all': [
|
||||
'audience',
|
||||
'platform',
|
||||
],
|
||||
'required': [
|
||||
'audience',
|
||||
'platform',
|
||||
],
|
||||
'nullable': [
|
||||
],
|
||||
'enum': [
|
||||
],
|
||||
'validation': [
|
||||
]
|
||||
},
|
||||
root_map={
|
||||
'validations': {
|
||||
},
|
||||
'allowed_values': {
|
||||
},
|
||||
'openapi_types': {
|
||||
'audience':
|
||||
(ManagerVariableAudience,),
|
||||
'platform':
|
||||
(str,),
|
||||
},
|
||||
'attribute_map': {
|
||||
'audience': 'audience',
|
||||
'platform': 'platform',
|
||||
},
|
||||
'location_map': {
|
||||
'audience': 'path',
|
||||
'platform': 'path',
|
||||
},
|
||||
'collection_format_map': {
|
||||
}
|
||||
},
|
||||
headers_map={
|
||||
'accept': [
|
||||
'application/json'
|
||||
],
|
||||
'content_type': [],
|
||||
},
|
||||
api_client=api_client
|
||||
)
|
||||
self.get_version_endpoint = _Endpoint(
|
||||
settings={
|
||||
'response_type': (FlamencoVersion,),
|
||||
@ -193,6 +250,87 @@ class MetaApi(object):
|
||||
kwargs['_host_index'] = kwargs.get('_host_index')
|
||||
return self.get_configuration_endpoint.call_with_http_info(**kwargs)
|
||||
|
||||
def get_variables(
|
||||
self,
|
||||
audience,
|
||||
platform,
|
||||
**kwargs
|
||||
):
|
||||
"""Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform. # noqa: E501
|
||||
|
||||
This method makes a synchronous HTTP request by default. To make an
|
||||
asynchronous HTTP request, please pass async_req=True
|
||||
|
||||
>>> thread = api.get_variables(audience, platform, async_req=True)
|
||||
>>> result = thread.get()
|
||||
|
||||
Args:
|
||||
audience (ManagerVariableAudience):
|
||||
platform (str):
|
||||
|
||||
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:
|
||||
ManagerVariables
|
||||
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['audience'] = \
|
||||
audience
|
||||
kwargs['platform'] = \
|
||||
platform
|
||||
return self.get_variables_endpoint.call_with_http_info(**kwargs)
|
||||
|
||||
def get_version(
|
||||
self,
|
||||
**kwargs
|
||||
|
@ -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/b34fee51 (Blender add-on)'
|
||||
self.user_agent = 'Flamenco/fd807980 (Blender add-on)'
|
||||
|
||||
def __enter__(self):
|
||||
return self
|
||||
|
@ -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: b34fee51".\
|
||||
"SDK Package Version: fd807980".\
|
||||
format(env=sys.platform, pyversion=sys.version)
|
||||
|
||||
def get_host_settings(self):
|
||||
|
13
addon/flamenco/manager/docs/ManagerVariable.md
Normal file
13
addon/flamenco/manager/docs/ManagerVariable.md
Normal file
@ -0,0 +1,13 @@
|
||||
# ManagerVariable
|
||||
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**value** | **str** | |
|
||||
**is_twoway** | **bool** | One-way variables are the most common one, and are simple replacement from `{name}` to their value, which happens when a Task is given to a Worker. Two-way variables are also replaced when submitting a job, where the platform-specific value is replaced by `{name}`. |
|
||||
**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)
|
||||
|
||||
|
11
addon/flamenco/manager/docs/ManagerVariableAudience.md
Normal file
11
addon/flamenco/manager/docs/ManagerVariableAudience.md
Normal file
@ -0,0 +1,11 @@
|
||||
# ManagerVariableAudience
|
||||
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**value** | **str** | | must be one of ["workers", "users", ]
|
||||
|
||||
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||
|
||||
|
12
addon/flamenco/manager/docs/ManagerVariables.md
Normal file
12
addon/flamenco/manager/docs/ManagerVariables.md
Normal file
@ -0,0 +1,12 @@
|
||||
# ManagerVariables
|
||||
|
||||
Mapping from variable name to its properties.
|
||||
|
||||
## Properties
|
||||
Name | Type | Description | Notes
|
||||
------------ | ------------- | ------------- | -------------
|
||||
**any string name** | [**ManagerVariable**](ManagerVariable.md) | 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)
|
||||
|
||||
|
@ -5,6 +5,7 @@ All URIs are relative to *http://localhost*
|
||||
Method | HTTP request | Description
|
||||
------------- | ------------- | -------------
|
||||
[**get_configuration**](MetaApi.md#get_configuration) | **GET** /api/v3/configuration | Get the configuration of this Manager.
|
||||
[**get_variables**](MetaApi.md#get_variables) | **GET** /api/v3/configuration/variables/{audience}/{platform} | Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
[**get_version**](MetaApi.md#get_version) | **GET** /api/v3/version | Get the Flamenco version of this Manager
|
||||
|
||||
|
||||
@ -69,6 +70,74 @@ No authorization required
|
||||
|
||||
[[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)
|
||||
|
||||
# **get_variables**
|
||||
> ManagerVariables get_variables(audience, platform)
|
||||
|
||||
Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
|
||||
### Example
|
||||
|
||||
|
||||
```python
|
||||
import time
|
||||
import flamenco.manager
|
||||
from flamenco.manager.api import meta_api
|
||||
from flamenco.manager.model.manager_variable_audience import ManagerVariableAudience
|
||||
from flamenco.manager.model.manager_variables import ManagerVariables
|
||||
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 = meta_api.MetaApi(api_client)
|
||||
audience = ManagerVariableAudience("workers") # ManagerVariableAudience |
|
||||
platform = "platform_example" # str |
|
||||
|
||||
# example passing only required values which don't have defaults set
|
||||
try:
|
||||
# Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
api_response = api_instance.get_variables(audience, platform)
|
||||
pprint(api_response)
|
||||
except flamenco.manager.ApiException as e:
|
||||
print("Exception when calling MetaApi->get_variables: %s\n" % e)
|
||||
```
|
||||
|
||||
|
||||
### Parameters
|
||||
|
||||
Name | Type | Description | Notes
|
||||
------------- | ------------- | ------------- | -------------
|
||||
**audience** | **ManagerVariableAudience**| |
|
||||
**platform** | **str**| |
|
||||
|
||||
### Return type
|
||||
|
||||
[**ManagerVariables**](ManagerVariables.md)
|
||||
|
||||
### Authorization
|
||||
|
||||
No authorization required
|
||||
|
||||
### HTTP request headers
|
||||
|
||||
- **Content-Type**: Not defined
|
||||
- **Accept**: application/json
|
||||
|
||||
|
||||
### HTTP response details
|
||||
|
||||
| Status code | Description | Response headers |
|
||||
|-------------|-------------|------------------|
|
||||
**200** | Normal response. | - |
|
||||
|
||||
[[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)
|
||||
|
||||
# **get_version**
|
||||
> FlamencoVersion get_version()
|
||||
|
||||
|
267
addon/flamenco/manager/model/manager_variable.py
Normal file
267
addon/flamenco/manager/model/manager_variable.py
Normal 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
|
||||
|
||||
|
||||
|
||||
class ManagerVariable(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 {
|
||||
'value': (str,), # noqa: E501
|
||||
'is_twoway': (bool,), # noqa: E501
|
||||
}
|
||||
|
||||
@cached_property
|
||||
def discriminator():
|
||||
return None
|
||||
|
||||
|
||||
attribute_map = {
|
||||
'value': 'value', # noqa: E501
|
||||
'is_twoway': 'is_twoway', # noqa: E501
|
||||
}
|
||||
|
||||
read_only_vars = {
|
||||
}
|
||||
|
||||
_composed_schemas = {}
|
||||
|
||||
@classmethod
|
||||
@convert_js_args_to_python_args
|
||||
def _from_openapi_data(cls, value, is_twoway, *args, **kwargs): # noqa: E501
|
||||
"""ManagerVariable - a model defined in OpenAPI
|
||||
|
||||
Args:
|
||||
value (str):
|
||||
is_twoway (bool): One-way variables are the most common one, and are simple replacement from `{name}` to their value, which happens when a Task is given to a Worker. Two-way variables are also replaced when submitting a job, where the platform-specific value is replaced by `{name}`.
|
||||
|
||||
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.value = value
|
||||
self.is_twoway = is_twoway
|
||||
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, value, is_twoway, *args, **kwargs): # noqa: E501
|
||||
"""ManagerVariable - a model defined in OpenAPI
|
||||
|
||||
Args:
|
||||
value (str):
|
||||
is_twoway (bool): One-way variables are the most common one, and are simple replacement from `{name}` to their value, which happens when a Task is given to a Worker. Two-way variables are also replaced when submitting a job, where the platform-specific value is replaced by `{name}`.
|
||||
|
||||
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.value = value
|
||||
self.is_twoway = is_twoway
|
||||
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.")
|
282
addon/flamenco/manager/model/manager_variable_audience.py
Normal file
282
addon/flamenco/manager/model/manager_variable_audience.py
Normal file
@ -0,0 +1,282 @@
|
||||
"""
|
||||
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 ManagerVariableAudience(ModelSimple):
|
||||
"""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.
|
||||
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 = {
|
||||
('value',): {
|
||||
'WORKERS': "workers",
|
||||
'USERS': "users",
|
||||
},
|
||||
}
|
||||
|
||||
validations = {
|
||||
}
|
||||
|
||||
additional_properties_type = None
|
||||
|
||||
_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 {
|
||||
'value': (str,),
|
||||
}
|
||||
|
||||
@cached_property
|
||||
def discriminator():
|
||||
return None
|
||||
|
||||
|
||||
attribute_map = {}
|
||||
|
||||
read_only_vars = set()
|
||||
|
||||
_composed_schemas = None
|
||||
|
||||
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, *args, **kwargs):
|
||||
"""ManagerVariableAudience - a model defined in OpenAPI
|
||||
|
||||
Note that value can be passed either in args or in kwargs, but not in both.
|
||||
|
||||
Args:
|
||||
args[0] (str):, must be one of ["workers", "users", ] # noqa: E501
|
||||
|
||||
Keyword Args:
|
||||
value (str):, must be one of ["workers", "users", ] # noqa: E501
|
||||
_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,)
|
||||
"""
|
||||
# required up here when default value is not given
|
||||
_path_to_item = kwargs.pop('_path_to_item', ())
|
||||
|
||||
if 'value' in kwargs:
|
||||
value = kwargs.pop('value')
|
||||
elif args:
|
||||
args = list(args)
|
||||
value = args.pop(0)
|
||||
else:
|
||||
raise ApiTypeError(
|
||||
"value is required, but not passed in args or kwargs and doesn't have default",
|
||||
path_to_item=_path_to_item,
|
||||
valid_classes=(self.__class__,),
|
||||
)
|
||||
|
||||
_check_type = kwargs.pop('_check_type', True)
|
||||
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
|
||||
_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.value = value
|
||||
if kwargs:
|
||||
raise ApiTypeError(
|
||||
"Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
|
||||
kwargs,
|
||||
self.__class__.__name__,
|
||||
),
|
||||
path_to_item=_path_to_item,
|
||||
valid_classes=(self.__class__,),
|
||||
)
|
||||
|
||||
@classmethod
|
||||
@convert_js_args_to_python_args
|
||||
def _from_openapi_data(cls, *args, **kwargs):
|
||||
"""ManagerVariableAudience - a model defined in OpenAPI
|
||||
|
||||
Note that value can be passed either in args or in kwargs, but not in both.
|
||||
|
||||
Args:
|
||||
args[0] (str):, must be one of ["workers", "users", ] # noqa: E501
|
||||
|
||||
Keyword Args:
|
||||
value (str):, must be one of ["workers", "users", ] # noqa: E501
|
||||
_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,)
|
||||
"""
|
||||
# required up here when default value is not given
|
||||
_path_to_item = kwargs.pop('_path_to_item', ())
|
||||
|
||||
self = super(OpenApiModel, cls).__new__(cls)
|
||||
|
||||
if 'value' in kwargs:
|
||||
value = kwargs.pop('value')
|
||||
elif args:
|
||||
args = list(args)
|
||||
value = args.pop(0)
|
||||
else:
|
||||
raise ApiTypeError(
|
||||
"value is required, but not passed in args or kwargs and doesn't have default",
|
||||
path_to_item=_path_to_item,
|
||||
valid_classes=(self.__class__,),
|
||||
)
|
||||
|
||||
_check_type = kwargs.pop('_check_type', True)
|
||||
_spec_property_naming = kwargs.pop('_spec_property_naming', False)
|
||||
_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.value = value
|
||||
if kwargs:
|
||||
raise ApiTypeError(
|
||||
"Invalid named arguments=%s passed to %s. Remove those invalid named arguments." % (
|
||||
kwargs,
|
||||
self.__class__.__name__,
|
||||
),
|
||||
path_to_item=_path_to_item,
|
||||
valid_classes=(self.__class__,),
|
||||
)
|
||||
|
||||
return self
|
257
addon/flamenco/manager/model/manager_variables.py
Normal file
257
addon/flamenco/manager/model/manager_variables.py
Normal file
@ -0,0 +1,257 @@
|
||||
"""
|
||||
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.manager_variable import ManagerVariable
|
||||
globals()['ManagerVariable'] = ManagerVariable
|
||||
|
||||
|
||||
class ManagerVariables(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 (ManagerVariable,) # 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 {
|
||||
}
|
||||
|
||||
@cached_property
|
||||
def discriminator():
|
||||
return None
|
||||
|
||||
|
||||
attribute_map = {
|
||||
}
|
||||
|
||||
read_only_vars = {
|
||||
}
|
||||
|
||||
_composed_schemas = {}
|
||||
|
||||
@classmethod
|
||||
@convert_js_args_to_python_args
|
||||
def _from_openapi_data(cls, *args, **kwargs): # noqa: E501
|
||||
"""ManagerVariables - a model defined in OpenAPI
|
||||
|
||||
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__,)
|
||||
|
||||
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, *args, **kwargs): # noqa: E501
|
||||
"""ManagerVariables - a model defined in OpenAPI
|
||||
|
||||
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__,)
|
||||
|
||||
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.")
|
@ -32,6 +32,9 @@ from flamenco.manager.model.job_tasks_summary import JobTasksSummary
|
||||
from flamenco.manager.model.jobs_query import JobsQuery
|
||||
from flamenco.manager.model.jobs_query_result import JobsQueryResult
|
||||
from flamenco.manager.model.manager_configuration import ManagerConfiguration
|
||||
from flamenco.manager.model.manager_variable import ManagerVariable
|
||||
from flamenco.manager.model.manager_variable_audience import ManagerVariableAudience
|
||||
from flamenco.manager.model.manager_variables import ManagerVariables
|
||||
from flamenco.manager.model.may_keep_running import MayKeepRunning
|
||||
from flamenco.manager.model.registered_worker import RegisteredWorker
|
||||
from flamenco.manager.model.security_error import SecurityError
|
||||
|
@ -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: b34fee51
|
||||
- Package version: fd807980
|
||||
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
|
||||
For more information, please visit [https://flamenco.io/](https://flamenco.io/)
|
||||
|
||||
@ -87,6 +87,7 @@ Class | Method | HTTP request | Description
|
||||
*JobsApi* | [**set_task_status**](flamenco/manager/docs/JobsApi.md#set_task_status) | **POST** /api/v3/tasks/{task_id}/setstatus |
|
||||
*JobsApi* | [**submit_job**](flamenco/manager/docs/JobsApi.md#submit_job) | **POST** /api/v3/jobs | Submit a new job for Flamenco Manager to execute.
|
||||
*MetaApi* | [**get_configuration**](flamenco/manager/docs/MetaApi.md#get_configuration) | **GET** /api/v3/configuration | Get the configuration of this Manager.
|
||||
*MetaApi* | [**get_variables**](flamenco/manager/docs/MetaApi.md#get_variables) | **GET** /api/v3/configuration/variables/{audience}/{platform} | Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
*MetaApi* | [**get_version**](flamenco/manager/docs/MetaApi.md#get_version) | **GET** /api/v3/version | Get the Flamenco version of this Manager
|
||||
*ShamanApi* | [**shaman_checkout**](flamenco/manager/docs/ShamanApi.md#shaman_checkout) | **POST** /api/v3/shaman/checkout/create | Create a directory, and symlink the required files into it. The files must all have been uploaded to Shaman before calling this endpoint.
|
||||
*ShamanApi* | [**shaman_checkout_requirements**](flamenco/manager/docs/ShamanApi.md#shaman_checkout_requirements) | **POST** /api/v3/shaman/checkout/requirements | Checks a Shaman Requirements file, and reports which files are unknown.
|
||||
@ -131,6 +132,9 @@ Class | Method | HTTP request | Description
|
||||
- [JobsQuery](flamenco/manager/docs/JobsQuery.md)
|
||||
- [JobsQueryResult](flamenco/manager/docs/JobsQueryResult.md)
|
||||
- [ManagerConfiguration](flamenco/manager/docs/ManagerConfiguration.md)
|
||||
- [ManagerVariable](flamenco/manager/docs/ManagerVariable.md)
|
||||
- [ManagerVariableAudience](flamenco/manager/docs/ManagerVariableAudience.md)
|
||||
- [ManagerVariables](flamenco/manager/docs/ManagerVariables.md)
|
||||
- [MayKeepRunning](flamenco/manager/docs/MayKeepRunning.md)
|
||||
- [RegisteredWorker](flamenco/manager/docs/RegisteredWorker.md)
|
||||
- [SecurityError](flamenco/manager/docs/SecurityError.md)
|
||||
|
@ -276,6 +276,26 @@ func (mr *MockFlamencoClientMockRecorder) GetJobTypesWithResponse(arg0 interface
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetJobTypesWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).GetJobTypesWithResponse), varargs...)
|
||||
}
|
||||
|
||||
// GetVariablesWithResponse mocks base method.
|
||||
func (m *MockFlamencoClient) GetVariablesWithResponse(arg0 context.Context, arg1 api.ManagerVariableAudience, arg2 string, arg3 ...api.RequestEditorFn) (*api.GetVariablesResponse, error) {
|
||||
m.ctrl.T.Helper()
|
||||
varargs := []interface{}{arg0, arg1, arg2}
|
||||
for _, a := range arg3 {
|
||||
varargs = append(varargs, a)
|
||||
}
|
||||
ret := m.ctrl.Call(m, "GetVariablesWithResponse", varargs...)
|
||||
ret0, _ := ret[0].(*api.GetVariablesResponse)
|
||||
ret1, _ := ret[1].(error)
|
||||
return ret0, ret1
|
||||
}
|
||||
|
||||
// GetVariablesWithResponse indicates an expected call of GetVariablesWithResponse.
|
||||
func (mr *MockFlamencoClientMockRecorder) GetVariablesWithResponse(arg0, arg1, arg2 interface{}, arg3 ...interface{}) *gomock.Call {
|
||||
mr.mock.ctrl.T.Helper()
|
||||
varargs := append([]interface{}{arg0, arg1, arg2}, arg3...)
|
||||
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetVariablesWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).GetVariablesWithResponse), varargs...)
|
||||
}
|
||||
|
||||
// GetVersionWithResponse mocks base method.
|
||||
func (m *MockFlamencoClient) GetVersionWithResponse(arg0 context.Context, arg1 ...api.RequestEditorFn) (*api.GetVersionResponse, error) {
|
||||
m.ctrl.T.Helper()
|
||||
|
@ -93,6 +93,9 @@ type ClientInterface interface {
|
||||
// GetConfiguration request
|
||||
GetConfiguration(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
|
||||
|
||||
// GetVariables request
|
||||
GetVariables(ctx context.Context, audience ManagerVariableAudience, platform string, reqEditors ...RequestEditorFn) (*http.Response, error)
|
||||
|
||||
// SubmitJob request with any body
|
||||
SubmitJobWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
|
||||
|
||||
@ -223,6 +226,18 @@ func (c *Client) GetConfiguration(ctx context.Context, reqEditors ...RequestEdit
|
||||
return c.Client.Do(req)
|
||||
}
|
||||
|
||||
func (c *Client) GetVariables(ctx context.Context, audience ManagerVariableAudience, platform string, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
||||
req, err := NewGetVariablesRequest(c.Server, audience, platform)
|
||||
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) SubmitJobWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
|
||||
req, err := NewSubmitJobRequestWithBody(c.Server, contentType, body)
|
||||
if err != nil {
|
||||
@ -766,6 +781,47 @@ func NewGetConfigurationRequest(server string) (*http.Request, error) {
|
||||
return req, nil
|
||||
}
|
||||
|
||||
// NewGetVariablesRequest generates requests for GetVariables
|
||||
func NewGetVariablesRequest(server string, audience ManagerVariableAudience, platform string) (*http.Request, error) {
|
||||
var err error
|
||||
|
||||
var pathParam0 string
|
||||
|
||||
pathParam0, err = runtime.StyleParamWithLocation("simple", false, "audience", runtime.ParamLocationPath, audience)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var pathParam1 string
|
||||
|
||||
pathParam1, err = runtime.StyleParamWithLocation("simple", false, "platform", runtime.ParamLocationPath, platform)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
serverURL, err := url.Parse(server)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
operationPath := fmt.Sprintf("/api/v3/configuration/variables/%s/%s", pathParam0, pathParam1)
|
||||
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
|
||||
}
|
||||
|
||||
// NewSubmitJobRequest calls the generic SubmitJob builder with application/json body
|
||||
func NewSubmitJobRequest(server string, body SubmitJobJSONRequestBody) (*http.Request, error) {
|
||||
var bodyReader io.Reader
|
||||
@ -1964,6 +2020,9 @@ type ClientWithResponsesInterface interface {
|
||||
// GetConfiguration request
|
||||
GetConfigurationWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetConfigurationResponse, error)
|
||||
|
||||
// GetVariables request
|
||||
GetVariablesWithResponse(ctx context.Context, audience ManagerVariableAudience, platform string, reqEditors ...RequestEditorFn) (*GetVariablesResponse, error)
|
||||
|
||||
// SubmitJob request with any body
|
||||
SubmitJobWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SubmitJobResponse, error)
|
||||
|
||||
@ -2104,6 +2163,28 @@ func (r GetConfigurationResponse) StatusCode() int {
|
||||
return 0
|
||||
}
|
||||
|
||||
type GetVariablesResponse struct {
|
||||
Body []byte
|
||||
HTTPResponse *http.Response
|
||||
JSON200 *ManagerVariables
|
||||
}
|
||||
|
||||
// Status returns HTTPResponse.Status
|
||||
func (r GetVariablesResponse) Status() string {
|
||||
if r.HTTPResponse != nil {
|
||||
return r.HTTPResponse.Status
|
||||
}
|
||||
return http.StatusText(0)
|
||||
}
|
||||
|
||||
// StatusCode returns HTTPResponse.StatusCode
|
||||
func (r GetVariablesResponse) StatusCode() int {
|
||||
if r.HTTPResponse != nil {
|
||||
return r.HTTPResponse.StatusCode
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type SubmitJobResponse struct {
|
||||
Body []byte
|
||||
HTTPResponse *http.Response
|
||||
@ -2815,6 +2896,15 @@ func (c *ClientWithResponses) GetConfigurationWithResponse(ctx context.Context,
|
||||
return ParseGetConfigurationResponse(rsp)
|
||||
}
|
||||
|
||||
// GetVariablesWithResponse request returning *GetVariablesResponse
|
||||
func (c *ClientWithResponses) GetVariablesWithResponse(ctx context.Context, audience ManagerVariableAudience, platform string, reqEditors ...RequestEditorFn) (*GetVariablesResponse, error) {
|
||||
rsp, err := c.GetVariables(ctx, audience, platform, reqEditors...)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ParseGetVariablesResponse(rsp)
|
||||
}
|
||||
|
||||
// SubmitJobWithBodyWithResponse request with arbitrary body returning *SubmitJobResponse
|
||||
func (c *ClientWithResponses) SubmitJobWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*SubmitJobResponse, error) {
|
||||
rsp, err := c.SubmitJobWithBody(ctx, contentType, body, reqEditors...)
|
||||
@ -3216,6 +3306,32 @@ func ParseGetConfigurationResponse(rsp *http.Response) (*GetConfigurationRespons
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// ParseGetVariablesResponse parses an HTTP response from a GetVariablesWithResponse call
|
||||
func ParseGetVariablesResponse(rsp *http.Response) (*GetVariablesResponse, error) {
|
||||
bodyBytes, err := ioutil.ReadAll(rsp.Body)
|
||||
defer func() { _ = rsp.Body.Close() }()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
response := &GetVariablesResponse{
|
||||
Body: bodyBytes,
|
||||
HTTPResponse: rsp,
|
||||
}
|
||||
|
||||
switch {
|
||||
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
|
||||
var dest ManagerVariables
|
||||
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
response.JSON200 = &dest
|
||||
|
||||
}
|
||||
|
||||
return response, nil
|
||||
}
|
||||
|
||||
// ParseSubmitJobResponse parses an HTTP response from a SubmitJobWithResponse call
|
||||
func ParseSubmitJobResponse(rsp *http.Response) (*SubmitJobResponse, error) {
|
||||
bodyBytes, err := ioutil.ReadAll(rsp.Body)
|
||||
|
@ -16,6 +16,9 @@ type ServerInterface interface {
|
||||
// Get the configuration of this Manager.
|
||||
// (GET /api/v3/configuration)
|
||||
GetConfiguration(ctx echo.Context) error
|
||||
// Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
// (GET /api/v3/configuration/variables/{audience}/{platform})
|
||||
GetVariables(ctx echo.Context, audience ManagerVariableAudience, platform string) error
|
||||
// Submit a new job for Flamenco Manager to execute.
|
||||
// (POST /api/v3/jobs)
|
||||
SubmitJob(ctx echo.Context) error
|
||||
@ -126,6 +129,30 @@ func (w *ServerInterfaceWrapper) GetConfiguration(ctx echo.Context) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// GetVariables converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) GetVariables(ctx echo.Context) error {
|
||||
var err error
|
||||
// ------------- Path parameter "audience" -------------
|
||||
var audience ManagerVariableAudience
|
||||
|
||||
err = runtime.BindStyledParameterWithLocation("simple", false, "audience", runtime.ParamLocationPath, ctx.Param("audience"), &audience)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter audience: %s", err))
|
||||
}
|
||||
|
||||
// ------------- Path parameter "platform" -------------
|
||||
var platform string
|
||||
|
||||
err = runtime.BindStyledParameterWithLocation("simple", false, "platform", runtime.ParamLocationPath, ctx.Param("platform"), &platform)
|
||||
if err != nil {
|
||||
return echo.NewHTTPError(http.StatusBadRequest, fmt.Sprintf("Invalid format for parameter platform: %s", err))
|
||||
}
|
||||
|
||||
// Invoke the callback with all the unmarshalled arguments
|
||||
err = w.Handler.GetVariables(ctx, audience, platform)
|
||||
return err
|
||||
}
|
||||
|
||||
// SubmitJob converts echo context to params.
|
||||
func (w *ServerInterfaceWrapper) SubmitJob(ctx echo.Context) error {
|
||||
var err error
|
||||
@ -620,6 +647,7 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
|
||||
}
|
||||
|
||||
router.GET(baseURL+"/api/v3/configuration", wrapper.GetConfiguration)
|
||||
router.GET(baseURL+"/api/v3/configuration/variables/:audience/:platform", wrapper.GetVariables)
|
||||
router.POST(baseURL+"/api/v3/jobs", wrapper.SubmitJob)
|
||||
router.GET(baseURL+"/api/v3/jobs/last-rendered", wrapper.FetchGlobalLastRenderedInfo)
|
||||
router.POST(baseURL+"/api/v3/jobs/query", wrapper.QueryJobs)
|
||||
|
@ -18,153 +18,158 @@ import (
|
||||
// Base64 encoded, gzipped, json marshaled Swagger object
|
||||
var swaggerSpec = []string{
|
||||
|
||||
"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",
|
||||
}
|
||||
|
||||
// GetSwagger returns the content of the embedded swagger specification file
|
||||
|
@ -73,6 +73,13 @@ const (
|
||||
JobStatusUnderConstruction JobStatus = "under-construction"
|
||||
)
|
||||
|
||||
// Defines values for ManagerVariableAudience.
|
||||
const (
|
||||
ManagerVariableAudienceUsers ManagerVariableAudience = "users"
|
||||
|
||||
ManagerVariableAudienceWorkers ManagerVariableAudience = "workers"
|
||||
)
|
||||
|
||||
// Defines values for ShamanFileStatus.
|
||||
const (
|
||||
ShamanFileStatusStored ShamanFileStatus = "stored"
|
||||
@ -323,6 +330,21 @@ type ManagerConfiguration struct {
|
||||
StorageLocation string `json:"storageLocation"`
|
||||
}
|
||||
|
||||
// ManagerVariable defines model for ManagerVariable.
|
||||
type ManagerVariable struct {
|
||||
// One-way variables are the most common one, and are simple replacement from `{name}` to their value, which happens when a Task is given to a Worker. Two-way variables are also replaced when submitting a job, where the platform-specific value is replaced by `{name}`.
|
||||
IsTwoway bool `json:"is_twoway"`
|
||||
Value string `json:"value"`
|
||||
}
|
||||
|
||||
// ManagerVariableAudience defines model for ManagerVariableAudience.
|
||||
type ManagerVariableAudience string
|
||||
|
||||
// Mapping from variable name to its properties.
|
||||
type ManagerVariables struct {
|
||||
AdditionalProperties map[string]ManagerVariable `json:"-"`
|
||||
}
|
||||
|
||||
// Indicates whether the worker may keep running the task.
|
||||
type MayKeepRunning struct {
|
||||
MayKeepRunning bool `json:"mayKeepRunning"`
|
||||
@ -928,3 +950,56 @@ func (a JobsQuery_Settings) MarshalJSON() ([]byte, error) {
|
||||
}
|
||||
return json.Marshal(object)
|
||||
}
|
||||
|
||||
// Getter for additional properties for ManagerVariables. Returns the specified
|
||||
// element and whether it was found
|
||||
func (a ManagerVariables) Get(fieldName string) (value ManagerVariable, found bool) {
|
||||
if a.AdditionalProperties != nil {
|
||||
value, found = a.AdditionalProperties[fieldName]
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// Setter for additional properties for ManagerVariables
|
||||
func (a *ManagerVariables) Set(fieldName string, value ManagerVariable) {
|
||||
if a.AdditionalProperties == nil {
|
||||
a.AdditionalProperties = make(map[string]ManagerVariable)
|
||||
}
|
||||
a.AdditionalProperties[fieldName] = value
|
||||
}
|
||||
|
||||
// Override default JSON handling for ManagerVariables to handle AdditionalProperties
|
||||
func (a *ManagerVariables) UnmarshalJSON(b []byte) error {
|
||||
object := make(map[string]json.RawMessage)
|
||||
err := json.Unmarshal(b, &object)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(object) != 0 {
|
||||
a.AdditionalProperties = make(map[string]ManagerVariable)
|
||||
for fieldName, fieldBuf := range object {
|
||||
var fieldVal ManagerVariable
|
||||
err := json.Unmarshal(fieldBuf, &fieldVal)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error unmarshaling field %s: %w", fieldName, err)
|
||||
}
|
||||
a.AdditionalProperties[fieldName] = fieldVal
|
||||
}
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// Override default JSON handling for ManagerVariables to handle AdditionalProperties
|
||||
func (a ManagerVariables) MarshalJSON() ([]byte, error) {
|
||||
var err error
|
||||
object := make(map[string]json.RawMessage)
|
||||
|
||||
for fieldName, field := range a.AdditionalProperties {
|
||||
object[fieldName], err = json.Marshal(field)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error marshaling '%s': %w", fieldName, err)
|
||||
}
|
||||
}
|
||||
return json.Marshal(object)
|
||||
}
|
||||
|
@ -55,7 +55,7 @@ class ApiClient {
|
||||
* @default {}
|
||||
*/
|
||||
this.defaultHeaders = {
|
||||
'User-Agent': 'Flamenco/b34fee51 / webbrowser'
|
||||
'User-Agent': 'Flamenco/fd807980 / webbrowser'
|
||||
};
|
||||
|
||||
/**
|
||||
|
@ -33,6 +33,8 @@ import JobTasksSummary from './model/JobTasksSummary';
|
||||
import JobsQuery from './model/JobsQuery';
|
||||
import JobsQueryResult from './model/JobsQueryResult';
|
||||
import ManagerConfiguration from './model/ManagerConfiguration';
|
||||
import ManagerVariable from './model/ManagerVariable';
|
||||
import ManagerVariableAudience from './model/ManagerVariableAudience';
|
||||
import MayKeepRunning from './model/MayKeepRunning';
|
||||
import RegisteredWorker from './model/RegisteredWorker';
|
||||
import SecurityError from './model/SecurityError';
|
||||
@ -234,6 +236,18 @@ export {
|
||||
*/
|
||||
ManagerConfiguration,
|
||||
|
||||
/**
|
||||
* The ManagerVariable model constructor.
|
||||
* @property {module:model/ManagerVariable}
|
||||
*/
|
||||
ManagerVariable,
|
||||
|
||||
/**
|
||||
* The ManagerVariableAudience model constructor.
|
||||
* @property {module:model/ManagerVariableAudience}
|
||||
*/
|
||||
ManagerVariableAudience,
|
||||
|
||||
/**
|
||||
* The MayKeepRunning model constructor.
|
||||
* @property {module:model/MayKeepRunning}
|
||||
|
@ -15,6 +15,8 @@
|
||||
import ApiClient from "../ApiClient";
|
||||
import FlamencoVersion from '../model/FlamencoVersion';
|
||||
import ManagerConfiguration from '../model/ManagerConfiguration';
|
||||
import ManagerVariable from '../model/ManagerVariable';
|
||||
import ManagerVariableAudience from '../model/ManagerVariableAudience';
|
||||
|
||||
/**
|
||||
* Meta service.
|
||||
@ -75,6 +77,59 @@ export default class MetaApi {
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
* @param {module:model/ManagerVariableAudience} audience
|
||||
* @param {String} platform
|
||||
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Object.<String, module:model/{String: ManagerVariable}>} and HTTP response
|
||||
*/
|
||||
getVariablesWithHttpInfo(audience, platform) {
|
||||
let postBody = null;
|
||||
// verify the required parameter 'audience' is set
|
||||
if (audience === undefined || audience === null) {
|
||||
throw new Error("Missing the required parameter 'audience' when calling getVariables");
|
||||
}
|
||||
// verify the required parameter 'platform' is set
|
||||
if (platform === undefined || platform === null) {
|
||||
throw new Error("Missing the required parameter 'platform' when calling getVariables");
|
||||
}
|
||||
|
||||
let pathParams = {
|
||||
'audience': audience,
|
||||
'platform': platform
|
||||
};
|
||||
let queryParams = {
|
||||
};
|
||||
let headerParams = {
|
||||
};
|
||||
let formParams = {
|
||||
};
|
||||
|
||||
let authNames = [];
|
||||
let contentTypes = [];
|
||||
let accepts = ['application/json'];
|
||||
let returnType = {'String': ManagerVariable};
|
||||
return this.apiClient.callApi(
|
||||
'/api/v3/configuration/variables/{audience}/{platform}', 'GET',
|
||||
pathParams, queryParams, headerParams, formParams, postBody,
|
||||
authNames, contentTypes, accepts, returnType, null
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the variables of this Manager. Used by the Blender add-on to recognise two-way variables, and for the web interface to do variable replacement based on the browser's platform.
|
||||
* @param {module:model/ManagerVariableAudience} audience
|
||||
* @param {String} platform
|
||||
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Object.<String, module:model/{String: ManagerVariable}>}
|
||||
*/
|
||||
getVariables(audience, platform) {
|
||||
return this.getVariablesWithHttpInfo(audience, platform)
|
||||
.then(function(response_and_data) {
|
||||
return response_and_data.data;
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Get the Flamenco version of this Manager
|
||||
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/FlamencoVersion} and HTTP response
|
||||
|
84
web/app/src/manager-api/model/ManagerVariable.js
Normal file
84
web/app/src/manager-api/model/ManagerVariable.js
Normal file
@ -0,0 +1,84 @@
|
||||
/**
|
||||
* 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 ManagerVariable model module.
|
||||
* @module model/ManagerVariable
|
||||
* @version 0.0.0
|
||||
*/
|
||||
class ManagerVariable {
|
||||
/**
|
||||
* Constructs a new <code>ManagerVariable</code>.
|
||||
* @alias module:model/ManagerVariable
|
||||
* @param value {String}
|
||||
* @param isTwoway {Boolean} One-way variables are the most common one, and are simple replacement from `{name}` to their value, which happens when a Task is given to a Worker. Two-way variables are also replaced when submitting a job, where the platform-specific value is replaced by `{name}`.
|
||||
*/
|
||||
constructor(value, isTwoway) {
|
||||
|
||||
ManagerVariable.initialize(this, value, isTwoway);
|
||||
}
|
||||
|
||||
/**
|
||||
* 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, value, isTwoway) {
|
||||
obj['value'] = value;
|
||||
obj['is_twoway'] = isTwoway;
|
||||
}
|
||||
|
||||
/**
|
||||
* Constructs a <code>ManagerVariable</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/ManagerVariable} obj Optional instance to populate.
|
||||
* @return {module:model/ManagerVariable} The populated <code>ManagerVariable</code> instance.
|
||||
*/
|
||||
static constructFromObject(data, obj) {
|
||||
if (data) {
|
||||
obj = obj || new ManagerVariable();
|
||||
|
||||
if (data.hasOwnProperty('value')) {
|
||||
obj['value'] = ApiClient.convertToType(data['value'], 'String');
|
||||
}
|
||||
if (data.hasOwnProperty('is_twoway')) {
|
||||
obj['is_twoway'] = ApiClient.convertToType(data['is_twoway'], 'Boolean');
|
||||
}
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* @member {String} value
|
||||
*/
|
||||
ManagerVariable.prototype['value'] = undefined;
|
||||
|
||||
/**
|
||||
* One-way variables are the most common one, and are simple replacement from `{name}` to their value, which happens when a Task is given to a Worker. Two-way variables are also replaced when submitting a job, where the platform-specific value is replaced by `{name}`.
|
||||
* @member {Boolean} is_twoway
|
||||
*/
|
||||
ManagerVariable.prototype['is_twoway'] = undefined;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
export default ManagerVariable;
|
||||
|
46
web/app/src/manager-api/model/ManagerVariableAudience.js
Normal file
46
web/app/src/manager-api/model/ManagerVariableAudience.js
Normal file
@ -0,0 +1,46 @@
|
||||
/**
|
||||
* 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';
|
||||
/**
|
||||
* Enum class ManagerVariableAudience.
|
||||
* @enum {}
|
||||
* @readonly
|
||||
*/
|
||||
export default class ManagerVariableAudience {
|
||||
|
||||
/**
|
||||
* value: "workers"
|
||||
* @const
|
||||
*/
|
||||
"workers" = "workers";
|
||||
|
||||
|
||||
/**
|
||||
* value: "users"
|
||||
* @const
|
||||
*/
|
||||
"users" = "users";
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Returns a <code>ManagerVariableAudience</code> enum value from a Javascript object name.
|
||||
* @param {Object} data The plain JavaScript object containing the name of the enum value.
|
||||
* @return {module:model/ManagerVariableAudience} The enum <code>ManagerVariableAudience</code> value.
|
||||
*/
|
||||
static constructFromObject(object) {
|
||||
return object;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user