OAPI: regenerate code

This commit is contained in:
Sybren A. Stüvel 2022-07-14 11:08:14 +02:00
parent 597e9fd5d4
commit e4a38f071c
24 changed files with 1769 additions and 162 deletions

View File

@ -10,7 +10,7 @@
"""
__version__ = "fd807980"
__version__ = "b3f245cf"
# import ApiClient
from flamenco.manager.api_client import ApiClient

View File

@ -21,10 +21,13 @@ from flamenco.manager.model_utils import ( # noqa: F401
none_type,
validate_and_convert_types
)
from flamenco.manager.model.error import Error
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
from flamenco.manager.model.path_check_input import PathCheckInput
from flamenco.manager.model.path_check_result import PathCheckResult
class MetaApi(object):
@ -38,6 +41,54 @@ class MetaApi(object):
if api_client is None:
api_client = ApiClient()
self.api_client = api_client
self.check_shared_storage_path_endpoint = _Endpoint(
settings={
'response_type': (PathCheckResult,),
'auth': [],
'endpoint_path': '/api/v3/configuration/check/shared-storage',
'operation_id': 'check_shared_storage_path',
'http_method': 'POST',
'servers': None,
},
params_map={
'all': [
'path_check_input',
],
'required': [],
'nullable': [
],
'enum': [
],
'validation': [
]
},
root_map={
'validations': {
},
'allowed_values': {
},
'openapi_types': {
'path_check_input':
(PathCheckInput,),
},
'attribute_map': {
},
'location_map': {
'path_check_input': 'body',
},
'collection_format_map': {
}
},
headers_map={
'accept': [
'application/json'
],
'content_type': [
'application/json'
]
},
api_client=api_client
)
self.get_configuration_endpoint = _Endpoint(
settings={
'response_type': (ManagerConfiguration,),
@ -80,6 +131,49 @@ class MetaApi(object):
},
api_client=api_client
)
self.get_configuration_file_endpoint = _Endpoint(
settings={
'response_type': ({str: (bool, date, datetime, dict, float, int, list, str, none_type)},),
'auth': [],
'endpoint_path': '/api/v3/configuration/file',
'operation_id': 'get_configuration_file',
'http_method': 'GET',
'servers': None,
},
params_map={
'all': [
],
'required': [],
'nullable': [
],
'enum': [
],
'validation': [
]
},
root_map={
'validations': {
},
'allowed_values': {
},
'openapi_types': {
},
'attribute_map': {
},
'location_map': {
},
'collection_format_map': {
}
},
headers_map={
'accept': [
'application/json',
'application/yaml'
],
'content_type': [],
},
api_client=api_client
)
self.get_variables_endpoint = _Endpoint(
settings={
'response_type': (ManagerVariables,),
@ -178,6 +272,79 @@ class MetaApi(object):
api_client=api_client
)
def check_shared_storage_path(
self,
**kwargs
):
"""Validate a path for use as shared storage. # noqa: E501
This method makes a synchronous HTTP request by default. To make an
asynchronous HTTP request, please pass async_req=True
>>> thread = api.check_shared_storage_path(async_req=True)
>>> result = thread.get()
Keyword Args:
path_check_input (PathCheckInput): Path to check. [optional]
_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:
PathCheckResult
If the method is called asynchronously, returns the request
thread.
"""
kwargs['async_req'] = kwargs.get(
'async_req', False
)
kwargs['_return_http_data_only'] = kwargs.get(
'_return_http_data_only', True
)
kwargs['_preload_content'] = kwargs.get(
'_preload_content', True
)
kwargs['_request_timeout'] = kwargs.get(
'_request_timeout', None
)
kwargs['_check_input_type'] = kwargs.get(
'_check_input_type', True
)
kwargs['_check_return_type'] = kwargs.get(
'_check_return_type', True
)
kwargs['_spec_property_naming'] = kwargs.get(
'_spec_property_naming', False
)
kwargs['_content_type'] = kwargs.get(
'_content_type')
kwargs['_host_index'] = kwargs.get('_host_index')
return self.check_shared_storage_path_endpoint.call_with_http_info(**kwargs)
def get_configuration(
self,
**kwargs
@ -250,6 +417,78 @@ class MetaApi(object):
kwargs['_host_index'] = kwargs.get('_host_index')
return self.get_configuration_endpoint.call_with_http_info(**kwargs)
def get_configuration_file(
self,
**kwargs
):
"""Retrieve the configuration of Flamenco Manager. # 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_configuration_file(async_req=True)
>>> result = thread.get()
Keyword Args:
_return_http_data_only (bool): response data without head status
code and headers. Default is True.
_preload_content (bool): if False, the urllib3.HTTPResponse object
will be returned without reading/decoding response data.
Default is True.
_request_timeout (int/float/tuple): timeout setting for this request. If
one number provided, it will be total request timeout. It can also
be a pair (tuple) of (connection, read) timeouts.
Default is None.
_check_input_type (bool): specifies if type checking
should be done one the data sent to the server.
Default is True.
_check_return_type (bool): specifies if type checking
should be done one the data received from the server.
Default is True.
_spec_property_naming (bool): True if the variable names in the input data
are serialized names, as specified in the OpenAPI document.
False if the variable names in the input data
are pythonic names, e.g. snake case (default)
_content_type (str/None): force body content-type.
Default is None and content-type will be predicted by allowed
content-types and body.
_host_index (int/None): specifies the index of the server
that we want to use.
Default is read from the configuration.
async_req (bool): execute request asynchronously
Returns:
{str: (bool, date, datetime, dict, float, int, list, str, none_type)}
If the method is called asynchronously, returns the request
thread.
"""
kwargs['async_req'] = kwargs.get(
'async_req', False
)
kwargs['_return_http_data_only'] = kwargs.get(
'_return_http_data_only', True
)
kwargs['_preload_content'] = kwargs.get(
'_preload_content', True
)
kwargs['_request_timeout'] = kwargs.get(
'_request_timeout', None
)
kwargs['_check_input_type'] = kwargs.get(
'_check_input_type', True
)
kwargs['_check_return_type'] = kwargs.get(
'_check_return_type', True
)
kwargs['_spec_property_naming'] = kwargs.get(
'_spec_property_naming', False
)
kwargs['_content_type'] = kwargs.get(
'_content_type')
kwargs['_host_index'] = kwargs.get('_host_index')
return self.get_configuration_file_endpoint.call_with_http_info(**kwargs)
def get_variables(
self,
audience,

View File

@ -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/fd807980 (Blender add-on)'
self.user_agent = 'Flamenco/b3f245cf (Blender add-on)'
def __enter__(self):
return self

View File

@ -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: fd807980".\
"SDK Package Version: b3f245cf".\
format(env=sys.platform, pyversion=sys.version)
def get_host_settings(self):

View File

@ -6,6 +6,7 @@ Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**storage_location** | **str** | Directory used for job file storage. |
**shaman_enabled** | **bool** | Whether the Shaman file transfer API is available. |
**is_first_run** | **bool** | Whether this is considered the first time the Manager runs. This is determined by a few factors, like a non-existent configuration file or certain settings being empty while they shouldn't be. |
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -4,11 +4,84 @@ All URIs are relative to *http://localhost*
Method | HTTP request | Description
------------- | ------------- | -------------
[**check_shared_storage_path**](MetaApi.md#check_shared_storage_path) | **POST** /api/v3/configuration/check/shared-storage | Validate a path for use as shared storage.
[**get_configuration**](MetaApi.md#get_configuration) | **GET** /api/v3/configuration | Get the configuration of this Manager.
[**get_configuration_file**](MetaApi.md#get_configuration_file) | **GET** /api/v3/configuration/file | Retrieve the configuration of Flamenco 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
# **check_shared_storage_path**
> PathCheckResult check_shared_storage_path()
Validate a path for use as shared storage.
### Example
```python
import time
import flamenco.manager
from flamenco.manager.api import meta_api
from flamenco.manager.model.error import Error
from flamenco.manager.model.path_check_result import PathCheckResult
from flamenco.manager.model.path_check_input import PathCheckInput
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)
path_check_input = PathCheckInput(
path="path_example",
) # PathCheckInput | Path to check (optional)
# example passing only required values which don't have defaults set
# and optional values
try:
# Validate a path for use as shared storage.
api_response = api_instance.check_shared_storage_path(path_check_input=path_check_input)
pprint(api_response)
except flamenco.manager.ApiException as e:
print("Exception when calling MetaApi->check_shared_storage_path: %s\n" % e)
```
### Parameters
Name | Type | Description | Notes
------------- | ------------- | ------------- | -------------
**path_check_input** | [**PathCheckInput**](PathCheckInput.md)| Path to check | [optional]
### Return type
[**PathCheckResult**](PathCheckResult.md)
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: application/json
- **Accept**: application/json
### HTTP response details
| Status code | Description | Response headers |
|-------------|-------------|------------------|
**200** | Normal response, path check went fine. | - |
**0** | Something went wrong. | - |
[[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_configuration**
> ManagerConfiguration get_configuration()
@ -70,6 +143,66 @@ 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_configuration_file**
> {str: (bool, date, datetime, dict, float, int, list, str, none_type)} get_configuration_file()
Retrieve the configuration of Flamenco Manager.
### Example
```python
import time
import flamenco.manager
from flamenco.manager.api import meta_api
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)
# example, this endpoint has no required or optional parameters
try:
# Retrieve the configuration of Flamenco Manager.
api_response = api_instance.get_configuration_file()
pprint(api_response)
except flamenco.manager.ApiException as e:
print("Exception when calling MetaApi->get_configuration_file: %s\n" % e)
```
### Parameters
This endpoint does not need any parameter.
### Return type
**{str: (bool, date, datetime, dict, float, int, list, str, none_type)}**
### Authorization
No authorization required
### HTTP request headers
- **Content-Type**: Not defined
- **Accept**: application/json, application/yaml
### 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_variables**
> ManagerVariables get_variables(audience, platform)

View File

@ -0,0 +1,12 @@
# PathCheckInput
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**path** | **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)

View File

@ -0,0 +1,14 @@
# PathCheckResult
## Properties
Name | Type | Description | Notes
------------ | ------------- | ------------- | -------------
**path** | **str** | The path that was checked. |
**is_usable** | **bool** | Whether the path is usable or not. |
**cause** | **str** | Description of why this path is not usable. |
**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional]
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)

View File

@ -83,6 +83,7 @@ class ManagerConfiguration(ModelNormal):
return {
'storage_location': (str,), # noqa: E501
'shaman_enabled': (bool,), # noqa: E501
'is_first_run': (bool,), # noqa: E501
}
@cached_property
@ -93,6 +94,7 @@ class ManagerConfiguration(ModelNormal):
attribute_map = {
'storage_location': 'storageLocation', # noqa: E501
'shaman_enabled': 'shamanEnabled', # noqa: E501
'is_first_run': 'isFirstRun', # noqa: E501
}
read_only_vars = {
@ -102,12 +104,13 @@ class ManagerConfiguration(ModelNormal):
@classmethod
@convert_js_args_to_python_args
def _from_openapi_data(cls, storage_location, shaman_enabled, *args, **kwargs): # noqa: E501
def _from_openapi_data(cls, storage_location, shaman_enabled, is_first_run, *args, **kwargs): # noqa: E501
"""ManagerConfiguration - a model defined in OpenAPI
Args:
storage_location (str): Directory used for job file storage.
shaman_enabled (bool): Whether the Shaman file transfer API is available.
is_first_run (bool): Whether this is considered the first time the Manager runs. This is determined by a few factors, like a non-existent configuration file or certain settings being empty while they shouldn't be.
Keyword Args:
_check_type (bool): if True, values for parameters in openapi_types
@ -169,6 +172,7 @@ class ManagerConfiguration(ModelNormal):
self.storage_location = storage_location
self.shaman_enabled = shaman_enabled
self.is_first_run = is_first_run
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
@ -189,12 +193,13 @@ class ManagerConfiguration(ModelNormal):
])
@convert_js_args_to_python_args
def __init__(self, storage_location, shaman_enabled, *args, **kwargs): # noqa: E501
def __init__(self, storage_location, shaman_enabled, is_first_run, *args, **kwargs): # noqa: E501
"""ManagerConfiguration - a model defined in OpenAPI
Args:
storage_location (str): Directory used for job file storage.
shaman_enabled (bool): Whether the Shaman file transfer API is available.
is_first_run (bool): Whether this is considered the first time the Manager runs. This is determined by a few factors, like a non-existent configuration file or certain settings being empty while they shouldn't be.
Keyword Args:
_check_type (bool): if True, values for parameters in openapi_types
@ -254,6 +259,7 @@ class ManagerConfiguration(ModelNormal):
self.storage_location = storage_location
self.shaman_enabled = shaman_enabled
self.is_first_run = is_first_run
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \

View File

@ -0,0 +1,261 @@
"""
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 PathCheckInput(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 {
'path': (str,), # noqa: E501
}
@cached_property
def discriminator():
return None
attribute_map = {
'path': 'path', # noqa: E501
}
read_only_vars = {
}
_composed_schemas = {}
@classmethod
@convert_js_args_to_python_args
def _from_openapi_data(cls, path, *args, **kwargs): # noqa: E501
"""PathCheckInput - a model defined in OpenAPI
Args:
path (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.path = path
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, path, *args, **kwargs): # noqa: E501
"""PathCheckInput - a model defined in OpenAPI
Args:
path (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.path = path
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
self._configuration.discard_unknown_keys and \
self.additional_properties_type is None:
# discard variable.
continue
setattr(self, var_name, var_value)
if var_name in self.read_only_vars:
raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
f"class with read only attributes.")

View File

@ -0,0 +1,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 PathCheckResult(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 {
'path': (str,), # noqa: E501
'is_usable': (bool,), # noqa: E501
'cause': (str,), # noqa: E501
}
@cached_property
def discriminator():
return None
attribute_map = {
'path': 'path', # noqa: E501
'is_usable': 'is_usable', # noqa: E501
'cause': 'cause', # noqa: E501
}
read_only_vars = {
}
_composed_schemas = {}
@classmethod
@convert_js_args_to_python_args
def _from_openapi_data(cls, path, is_usable, cause, *args, **kwargs): # noqa: E501
"""PathCheckResult - a model defined in OpenAPI
Args:
path (str): The path that was checked.
is_usable (bool): Whether the path is usable or not.
cause (str): Description of why this path is not usable.
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.path = path
self.is_usable = is_usable
self.cause = cause
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, path, is_usable, cause, *args, **kwargs): # noqa: E501
"""PathCheckResult - a model defined in OpenAPI
Args:
path (str): The path that was checked.
is_usable (bool): Whether the path is usable or not.
cause (str): Description of why this path is not usable.
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.path = path
self.is_usable = is_usable
self.cause = cause
for var_name, var_value in kwargs.items():
if var_name not in self.attribute_map and \
self._configuration is not None and \
self._configuration.discard_unknown_keys and \
self.additional_properties_type is None:
# discard variable.
continue
setattr(self, var_name, var_value)
if var_name in self.read_only_vars:
raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate "
f"class with read only attributes.")

View File

@ -36,6 +36,8 @@ 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.path_check_input import PathCheckInput
from flamenco.manager.model.path_check_result import PathCheckResult
from flamenco.manager.model.registered_worker import RegisteredWorker
from flamenco.manager.model.security_error import SecurityError
from flamenco.manager.model.shaman_checkout import ShamanCheckout

View File

@ -4,7 +4,7 @@ Render Farm manager API
The `flamenco.manager` package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project:
- API version: 1.0.0
- Package version: fd807980
- Package version: b3f245cf
- Build package: org.openapitools.codegen.languages.PythonClientCodegen
For more information, please visit [https://flamenco.io/](https://flamenco.io/)
@ -86,7 +86,9 @@ Class | Method | HTTP request | Description
*JobsApi* | [**set_job_status**](flamenco/manager/docs/JobsApi.md#set_job_status) | **POST** /api/v3/jobs/{job_id}/setstatus |
*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* | [**check_shared_storage_path**](flamenco/manager/docs/MetaApi.md#check_shared_storage_path) | **POST** /api/v3/configuration/check/shared-storage | Validate a path for use as shared storage.
*MetaApi* | [**get_configuration**](flamenco/manager/docs/MetaApi.md#get_configuration) | **GET** /api/v3/configuration | Get the configuration of this Manager.
*MetaApi* | [**get_configuration_file**](flamenco/manager/docs/MetaApi.md#get_configuration_file) | **GET** /api/v3/configuration/file | Retrieve the configuration of Flamenco 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.
@ -136,6 +138,8 @@ Class | Method | HTTP request | Description
- [ManagerVariableAudience](flamenco/manager/docs/ManagerVariableAudience.md)
- [ManagerVariables](flamenco/manager/docs/ManagerVariables.md)
- [MayKeepRunning](flamenco/manager/docs/MayKeepRunning.md)
- [PathCheckInput](flamenco/manager/docs/PathCheckInput.md)
- [PathCheckResult](flamenco/manager/docs/PathCheckResult.md)
- [RegisteredWorker](flamenco/manager/docs/RegisteredWorker.md)
- [SecurityError](flamenco/manager/docs/SecurityError.md)
- [ShamanCheckout](flamenco/manager/docs/ShamanCheckout.md)

View File

@ -36,6 +36,46 @@ func (m *MockFlamencoClient) EXPECT() *MockFlamencoClientMockRecorder {
return m.recorder
}
// CheckSharedStoragePathWithBodyWithResponse mocks base method.
func (m *MockFlamencoClient) CheckSharedStoragePathWithBodyWithResponse(arg0 context.Context, arg1 string, arg2 io.Reader, arg3 ...api.RequestEditorFn) (*api.CheckSharedStoragePathResponse, error) {
m.ctrl.T.Helper()
varargs := []interface{}{arg0, arg1, arg2}
for _, a := range arg3 {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "CheckSharedStoragePathWithBodyWithResponse", varargs...)
ret0, _ := ret[0].(*api.CheckSharedStoragePathResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// CheckSharedStoragePathWithBodyWithResponse indicates an expected call of CheckSharedStoragePathWithBodyWithResponse.
func (mr *MockFlamencoClientMockRecorder) CheckSharedStoragePathWithBodyWithResponse(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, "CheckSharedStoragePathWithBodyWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).CheckSharedStoragePathWithBodyWithResponse), varargs...)
}
// CheckSharedStoragePathWithResponse mocks base method.
func (m *MockFlamencoClient) CheckSharedStoragePathWithResponse(arg0 context.Context, arg1 api.CheckSharedStoragePathJSONRequestBody, arg2 ...api.RequestEditorFn) (*api.CheckSharedStoragePathResponse, error) {
m.ctrl.T.Helper()
varargs := []interface{}{arg0, arg1}
for _, a := range arg2 {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "CheckSharedStoragePathWithResponse", varargs...)
ret0, _ := ret[0].(*api.CheckSharedStoragePathResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// CheckSharedStoragePathWithResponse indicates an expected call of CheckSharedStoragePathWithResponse.
func (mr *MockFlamencoClientMockRecorder) CheckSharedStoragePathWithResponse(arg0, arg1 interface{}, arg2 ...interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
varargs := append([]interface{}{arg0, arg1}, arg2...)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CheckSharedStoragePathWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).CheckSharedStoragePathWithResponse), varargs...)
}
// FetchGlobalLastRenderedInfoWithResponse mocks base method.
func (m *MockFlamencoClient) FetchGlobalLastRenderedInfoWithResponse(arg0 context.Context, arg1 ...api.RequestEditorFn) (*api.FetchGlobalLastRenderedInfoResponse, error) {
m.ctrl.T.Helper()
@ -216,6 +256,26 @@ func (mr *MockFlamencoClientMockRecorder) FetchWorkersWithResponse(arg0 interfac
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "FetchWorkersWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).FetchWorkersWithResponse), varargs...)
}
// GetConfigurationFileWithResponse mocks base method.
func (m *MockFlamencoClient) GetConfigurationFileWithResponse(arg0 context.Context, arg1 ...api.RequestEditorFn) (*api.GetConfigurationFileResponse, error) {
m.ctrl.T.Helper()
varargs := []interface{}{arg0}
for _, a := range arg1 {
varargs = append(varargs, a)
}
ret := m.ctrl.Call(m, "GetConfigurationFileWithResponse", varargs...)
ret0, _ := ret[0].(*api.GetConfigurationFileResponse)
ret1, _ := ret[1].(error)
return ret0, ret1
}
// GetConfigurationFileWithResponse indicates an expected call of GetConfigurationFileWithResponse.
func (mr *MockFlamencoClientMockRecorder) GetConfigurationFileWithResponse(arg0 interface{}, arg1 ...interface{}) *gomock.Call {
mr.mock.ctrl.T.Helper()
varargs := append([]interface{}{arg0}, arg1...)
return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetConfigurationFileWithResponse", reflect.TypeOf((*MockFlamencoClient)(nil).GetConfigurationFileWithResponse), varargs...)
}
// GetConfigurationWithResponse mocks base method.
func (m *MockFlamencoClient) GetConfigurationWithResponse(arg0 context.Context, arg1 ...api.RequestEditorFn) (*api.GetConfigurationResponse, error) {
m.ctrl.T.Helper()

View File

@ -14,6 +14,8 @@ import (
"net/url"
"strings"
"gopkg.in/yaml.v2"
"github.com/deepmap/oapi-codegen/pkg/runtime"
)
@ -93,6 +95,14 @@ type ClientInterface interface {
// GetConfiguration request
GetConfiguration(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
// CheckSharedStoragePath request with any body
CheckSharedStoragePathWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error)
CheckSharedStoragePath(ctx context.Context, body CheckSharedStoragePathJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error)
// GetConfigurationFile request
GetConfigurationFile(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error)
// GetVariables request
GetVariables(ctx context.Context, audience ManagerVariableAudience, platform string, reqEditors ...RequestEditorFn) (*http.Response, error)
@ -226,6 +236,42 @@ func (c *Client) GetConfiguration(ctx context.Context, reqEditors ...RequestEdit
return c.Client.Do(req)
}
func (c *Client) CheckSharedStoragePathWithBody(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewCheckSharedStoragePathRequestWithBody(c.Server, contentType, body)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) CheckSharedStoragePath(ctx context.Context, body CheckSharedStoragePathJSONRequestBody, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewCheckSharedStoragePathRequest(c.Server, body)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) GetConfigurationFile(ctx context.Context, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewGetConfigurationFileRequest(c.Server)
if err != nil {
return nil, err
}
req = req.WithContext(ctx)
if err := c.applyEditors(ctx, req, reqEditors); err != nil {
return nil, err
}
return c.Client.Do(req)
}
func (c *Client) GetVariables(ctx context.Context, audience ManagerVariableAudience, platform string, reqEditors ...RequestEditorFn) (*http.Response, error) {
req, err := NewGetVariablesRequest(c.Server, audience, platform)
if err != nil {
@ -781,6 +827,73 @@ func NewGetConfigurationRequest(server string) (*http.Request, error) {
return req, nil
}
// NewCheckSharedStoragePathRequest calls the generic CheckSharedStoragePath builder with application/json body
func NewCheckSharedStoragePathRequest(server string, body CheckSharedStoragePathJSONRequestBody) (*http.Request, error) {
var bodyReader io.Reader
buf, err := json.Marshal(body)
if err != nil {
return nil, err
}
bodyReader = bytes.NewReader(buf)
return NewCheckSharedStoragePathRequestWithBody(server, "application/json", bodyReader)
}
// NewCheckSharedStoragePathRequestWithBody generates requests for CheckSharedStoragePath with any type of body
func NewCheckSharedStoragePathRequestWithBody(server string, contentType string, body io.Reader) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/api/v3/configuration/check/shared-storage")
if operationPath[0] == '/' {
operationPath = "." + operationPath
}
queryURL, err := serverURL.Parse(operationPath)
if err != nil {
return nil, err
}
req, err := http.NewRequest("POST", queryURL.String(), body)
if err != nil {
return nil, err
}
req.Header.Add("Content-Type", contentType)
return req, nil
}
// NewGetConfigurationFileRequest generates requests for GetConfigurationFile
func NewGetConfigurationFileRequest(server string) (*http.Request, error) {
var err error
serverURL, err := url.Parse(server)
if err != nil {
return nil, err
}
operationPath := fmt.Sprintf("/api/v3/configuration/file")
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
}
// NewGetVariablesRequest generates requests for GetVariables
func NewGetVariablesRequest(server string, audience ManagerVariableAudience, platform string) (*http.Request, error) {
var err error
@ -2020,6 +2133,14 @@ type ClientWithResponsesInterface interface {
// GetConfiguration request
GetConfigurationWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetConfigurationResponse, error)
// CheckSharedStoragePath request with any body
CheckSharedStoragePathWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CheckSharedStoragePathResponse, error)
CheckSharedStoragePathWithResponse(ctx context.Context, body CheckSharedStoragePathJSONRequestBody, reqEditors ...RequestEditorFn) (*CheckSharedStoragePathResponse, error)
// GetConfigurationFile request
GetConfigurationFileWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetConfigurationFileResponse, error)
// GetVariables request
GetVariablesWithResponse(ctx context.Context, audience ManagerVariableAudience, platform string, reqEditors ...RequestEditorFn) (*GetVariablesResponse, error)
@ -2163,6 +2284,54 @@ func (r GetConfigurationResponse) StatusCode() int {
return 0
}
type CheckSharedStoragePathResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *PathCheckResult
JSONDefault *Error
}
// Status returns HTTPResponse.Status
func (r CheckSharedStoragePathResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r CheckSharedStoragePathResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type GetConfigurationFileResponse struct {
Body []byte
HTTPResponse *http.Response
JSON200 *struct {
AdditionalProperties map[string]interface{} `json:"-"`
}
YAML200 *string
}
// Status returns HTTPResponse.Status
func (r GetConfigurationFileResponse) Status() string {
if r.HTTPResponse != nil {
return r.HTTPResponse.Status
}
return http.StatusText(0)
}
// StatusCode returns HTTPResponse.StatusCode
func (r GetConfigurationFileResponse) StatusCode() int {
if r.HTTPResponse != nil {
return r.HTTPResponse.StatusCode
}
return 0
}
type GetVariablesResponse struct {
Body []byte
HTTPResponse *http.Response
@ -2896,6 +3065,32 @@ func (c *ClientWithResponses) GetConfigurationWithResponse(ctx context.Context,
return ParseGetConfigurationResponse(rsp)
}
// CheckSharedStoragePathWithBodyWithResponse request with arbitrary body returning *CheckSharedStoragePathResponse
func (c *ClientWithResponses) CheckSharedStoragePathWithBodyWithResponse(ctx context.Context, contentType string, body io.Reader, reqEditors ...RequestEditorFn) (*CheckSharedStoragePathResponse, error) {
rsp, err := c.CheckSharedStoragePathWithBody(ctx, contentType, body, reqEditors...)
if err != nil {
return nil, err
}
return ParseCheckSharedStoragePathResponse(rsp)
}
func (c *ClientWithResponses) CheckSharedStoragePathWithResponse(ctx context.Context, body CheckSharedStoragePathJSONRequestBody, reqEditors ...RequestEditorFn) (*CheckSharedStoragePathResponse, error) {
rsp, err := c.CheckSharedStoragePath(ctx, body, reqEditors...)
if err != nil {
return nil, err
}
return ParseCheckSharedStoragePathResponse(rsp)
}
// GetConfigurationFileWithResponse request returning *GetConfigurationFileResponse
func (c *ClientWithResponses) GetConfigurationFileWithResponse(ctx context.Context, reqEditors ...RequestEditorFn) (*GetConfigurationFileResponse, error) {
rsp, err := c.GetConfigurationFile(ctx, reqEditors...)
if err != nil {
return nil, err
}
return ParseGetConfigurationFileResponse(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...)
@ -3306,6 +3501,74 @@ func ParseGetConfigurationResponse(rsp *http.Response) (*GetConfigurationRespons
return response, nil
}
// ParseCheckSharedStoragePathResponse parses an HTTP response from a CheckSharedStoragePathWithResponse call
func ParseCheckSharedStoragePathResponse(rsp *http.Response) (*CheckSharedStoragePathResponse, error) {
bodyBytes, err := ioutil.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &CheckSharedStoragePathResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest PathCheckResult
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && true:
var dest Error
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSONDefault = &dest
}
return response, nil
}
// ParseGetConfigurationFileResponse parses an HTTP response from a GetConfigurationFileWithResponse call
func ParseGetConfigurationFileResponse(rsp *http.Response) (*GetConfigurationFileResponse, error) {
bodyBytes, err := ioutil.ReadAll(rsp.Body)
defer func() { _ = rsp.Body.Close() }()
if err != nil {
return nil, err
}
response := &GetConfigurationFileResponse{
Body: bodyBytes,
HTTPResponse: rsp,
}
switch {
case strings.Contains(rsp.Header.Get("Content-Type"), "json") && rsp.StatusCode == 200:
var dest struct {
AdditionalProperties map[string]interface{} `json:"-"`
}
if err := json.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.JSON200 = &dest
case strings.Contains(rsp.Header.Get("Content-Type"), "yaml") && rsp.StatusCode == 200:
var dest string
if err := yaml.Unmarshal(bodyBytes, &dest); err != nil {
return nil, err
}
response.YAML200 = &dest
}
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)

View File

@ -16,6 +16,12 @@ type ServerInterface interface {
// Get the configuration of this Manager.
// (GET /api/v3/configuration)
GetConfiguration(ctx echo.Context) error
// Validate a path for use as shared storage.
// (POST /api/v3/configuration/check/shared-storage)
CheckSharedStoragePath(ctx echo.Context) error
// Retrieve the configuration of Flamenco Manager.
// (GET /api/v3/configuration/file)
GetConfigurationFile(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
@ -129,6 +135,24 @@ func (w *ServerInterfaceWrapper) GetConfiguration(ctx echo.Context) error {
return err
}
// CheckSharedStoragePath converts echo context to params.
func (w *ServerInterfaceWrapper) CheckSharedStoragePath(ctx echo.Context) error {
var err error
// Invoke the callback with all the unmarshalled arguments
err = w.Handler.CheckSharedStoragePath(ctx)
return err
}
// GetConfigurationFile converts echo context to params.
func (w *ServerInterfaceWrapper) GetConfigurationFile(ctx echo.Context) error {
var err error
// Invoke the callback with all the unmarshalled arguments
err = w.Handler.GetConfigurationFile(ctx)
return err
}
// GetVariables converts echo context to params.
func (w *ServerInterfaceWrapper) GetVariables(ctx echo.Context) error {
var err error
@ -647,6 +671,8 @@ func RegisterHandlersWithBaseURL(router EchoRouter, si ServerInterface, baseURL
}
router.GET(baseURL+"/api/v3/configuration", wrapper.GetConfiguration)
router.POST(baseURL+"/api/v3/configuration/check/shared-storage", wrapper.CheckSharedStoragePath)
router.GET(baseURL+"/api/v3/configuration/file", wrapper.GetConfigurationFile)
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)

View File

@ -18,158 +18,165 @@ import (
// Base64 encoded, gzipped, json marshaled Swagger object
var swaggerSpec = []string{
"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",
"cbTy12m5AAA=",
}
// GetSwagger returns the content of the embedded swagger specification file

View File

@ -323,6 +323,9 @@ type JobsQueryResult struct {
// ManagerConfiguration defines model for ManagerConfiguration.
type ManagerConfiguration struct {
// Whether this is considered the first time the Manager runs. This is determined by a few factors, like a non-existent configuration file or certain settings being empty while they shouldn't be.
IsFirstRun bool `json:"isFirstRun"`
// Whether the Shaman file transfer API is available.
ShamanEnabled bool `json:"shamanEnabled"`
@ -354,6 +357,23 @@ type MayKeepRunning struct {
StatusChangeRequested bool `json:"statusChangeRequested"`
}
// PathCheckInput defines model for PathCheckInput.
type PathCheckInput struct {
Path string `json:"path"`
}
// PathCheckResult defines model for PathCheckResult.
type PathCheckResult struct {
// Description of why this path is not usable.
Cause string `json:"cause"`
// Whether the path is usable or not.
IsUsable bool `json:"is_usable"`
// The path that was checked.
Path string `json:"path"`
}
// RegisteredWorker defines model for RegisteredWorker.
type RegisteredWorker struct {
Address string `json:"address"`
@ -658,6 +678,9 @@ type WorkerSummary struct {
Version string `json:"version"`
}
// CheckSharedStoragePathJSONBody defines parameters for CheckSharedStoragePath.
type CheckSharedStoragePathJSONBody PathCheckInput
// SubmitJobJSONBody defines parameters for SubmitJob.
type SubmitJobJSONBody SubmittedJob
@ -703,6 +726,9 @@ type WorkerStateChangedJSONBody WorkerStateChanged
// TaskUpdateJSONBody defines parameters for TaskUpdate.
type TaskUpdateJSONBody TaskUpdate
// CheckSharedStoragePathJSONRequestBody defines body for CheckSharedStoragePath for application/json ContentType.
type CheckSharedStoragePathJSONRequestBody CheckSharedStoragePathJSONBody
// SubmitJobJSONRequestBody defines body for SubmitJob for application/json ContentType.
type SubmitJobJSONRequestBody SubmitJobJSONBody

View File

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

View File

@ -36,6 +36,8 @@ import ManagerConfiguration from './model/ManagerConfiguration';
import ManagerVariable from './model/ManagerVariable';
import ManagerVariableAudience from './model/ManagerVariableAudience';
import MayKeepRunning from './model/MayKeepRunning';
import PathCheckInput from './model/PathCheckInput';
import PathCheckResult from './model/PathCheckResult';
import RegisteredWorker from './model/RegisteredWorker';
import SecurityError from './model/SecurityError';
import ShamanCheckout from './model/ShamanCheckout';
@ -254,6 +256,18 @@ export {
*/
MayKeepRunning,
/**
* The PathCheckInput model constructor.
* @property {module:model/PathCheckInput}
*/
PathCheckInput,
/**
* The PathCheckResult model constructor.
* @property {module:model/PathCheckResult}
*/
PathCheckResult,
/**
* The RegisteredWorker model constructor.
* @property {module:model/RegisteredWorker}

View File

@ -13,10 +13,13 @@
import ApiClient from "../ApiClient";
import Error from '../model/Error';
import FlamencoVersion from '../model/FlamencoVersion';
import ManagerConfiguration from '../model/ManagerConfiguration';
import ManagerVariable from '../model/ManagerVariable';
import ManagerVariableAudience from '../model/ManagerVariableAudience';
import PathCheckInput from '../model/PathCheckInput';
import PathCheckResult from '../model/PathCheckResult';
/**
* Meta service.
@ -38,6 +41,50 @@ export default class MetaApi {
/**
* Validate a path for use as shared storage.
* @param {Object} opts Optional parameters
* @param {module:model/PathCheckInput} opts.pathCheckInput Path to check
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/PathCheckResult} and HTTP response
*/
checkSharedStoragePathWithHttpInfo(opts) {
opts = opts || {};
let postBody = opts['pathCheckInput'];
let pathParams = {
};
let queryParams = {
};
let headerParams = {
};
let formParams = {
};
let authNames = [];
let contentTypes = ['application/json'];
let accepts = ['application/json'];
let returnType = PathCheckResult;
return this.apiClient.callApi(
'/api/v3/configuration/check/shared-storage', 'POST',
pathParams, queryParams, headerParams, formParams, postBody,
authNames, contentTypes, accepts, returnType, null
);
}
/**
* Validate a path for use as shared storage.
* @param {Object} opts Optional parameters
* @param {module:model/PathCheckInput} opts.pathCheckInput Path to check
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link module:model/PathCheckResult}
*/
checkSharedStoragePath(opts) {
return this.checkSharedStoragePathWithHttpInfo(opts)
.then(function(response_and_data) {
return response_and_data.data;
});
}
/**
* Get the configuration of this Manager.
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link module:model/ManagerConfiguration} and HTTP response
@ -77,6 +124,45 @@ export default class MetaApi {
}
/**
* Retrieve the configuration of Flamenco Manager.
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with an object containing data of type {@link Object.<String, {String: Object}>} and HTTP response
*/
getConfigurationFileWithHttpInfo() {
let postBody = null;
let pathParams = {
};
let queryParams = {
};
let headerParams = {
};
let formParams = {
};
let authNames = [];
let contentTypes = [];
let accepts = ['application/json', 'application/yaml'];
let returnType = {'String': Object};
return this.apiClient.callApi(
'/api/v3/configuration/file', 'GET',
pathParams, queryParams, headerParams, formParams, postBody,
authNames, contentTypes, accepts, returnType, null
);
}
/**
* Retrieve the configuration of Flamenco Manager.
* @return {Promise} a {@link https://www.promisejs.org/|Promise}, with data of type {@link Object.<String, {String: Object}>}
*/
getConfigurationFile() {
return this.getConfigurationFileWithHttpInfo()
.then(function(response_and_data) {
return response_and_data.data;
});
}
/**
* 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

View File

@ -24,10 +24,11 @@ class ManagerConfiguration {
* @alias module:model/ManagerConfiguration
* @param storageLocation {String} Directory used for job file storage.
* @param shamanEnabled {Boolean} Whether the Shaman file transfer API is available.
* @param isFirstRun {Boolean} Whether this is considered the first time the Manager runs. This is determined by a few factors, like a non-existent configuration file or certain settings being empty while they shouldn't be.
*/
constructor(storageLocation, shamanEnabled) {
constructor(storageLocation, shamanEnabled, isFirstRun) {
ManagerConfiguration.initialize(this, storageLocation, shamanEnabled);
ManagerConfiguration.initialize(this, storageLocation, shamanEnabled, isFirstRun);
}
/**
@ -35,9 +36,10 @@ class ManagerConfiguration {
* 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, storageLocation, shamanEnabled) {
static initialize(obj, storageLocation, shamanEnabled, isFirstRun) {
obj['storageLocation'] = storageLocation;
obj['shamanEnabled'] = shamanEnabled;
obj['isFirstRun'] = isFirstRun;
}
/**
@ -57,6 +59,9 @@ class ManagerConfiguration {
if (data.hasOwnProperty('shamanEnabled')) {
obj['shamanEnabled'] = ApiClient.convertToType(data['shamanEnabled'], 'Boolean');
}
if (data.hasOwnProperty('isFirstRun')) {
obj['isFirstRun'] = ApiClient.convertToType(data['isFirstRun'], 'Boolean');
}
}
return obj;
}
@ -76,6 +81,12 @@ ManagerConfiguration.prototype['storageLocation'] = undefined;
*/
ManagerConfiguration.prototype['shamanEnabled'] = undefined;
/**
* Whether this is considered the first time the Manager runs. This is determined by a few factors, like a non-existent configuration file or certain settings being empty while they shouldn't be.
* @member {Boolean} isFirstRun
*/
ManagerConfiguration.prototype['isFirstRun'] = undefined;

View File

@ -0,0 +1,73 @@
/**
* 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 PathCheckInput model module.
* @module model/PathCheckInput
* @version 0.0.0
*/
class PathCheckInput {
/**
* Constructs a new <code>PathCheckInput</code>.
* @alias module:model/PathCheckInput
* @param path {String}
*/
constructor(path) {
PathCheckInput.initialize(this, path);
}
/**
* 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, path) {
obj['path'] = path;
}
/**
* Constructs a <code>PathCheckInput</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/PathCheckInput} obj Optional instance to populate.
* @return {module:model/PathCheckInput} The populated <code>PathCheckInput</code> instance.
*/
static constructFromObject(data, obj) {
if (data) {
obj = obj || new PathCheckInput();
if (data.hasOwnProperty('path')) {
obj['path'] = ApiClient.convertToType(data['path'], 'String');
}
}
return obj;
}
}
/**
* @member {String} path
*/
PathCheckInput.prototype['path'] = undefined;
export default PathCheckInput;

View File

@ -0,0 +1,96 @@
/**
* 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 PathCheckResult model module.
* @module model/PathCheckResult
* @version 0.0.0
*/
class PathCheckResult {
/**
* Constructs a new <code>PathCheckResult</code>.
* @alias module:model/PathCheckResult
* @param path {String} The path that was checked.
* @param isUsable {Boolean} Whether the path is usable or not.
* @param cause {String} Description of why this path is not usable.
*/
constructor(path, isUsable, cause) {
PathCheckResult.initialize(this, path, isUsable, cause);
}
/**
* 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, path, isUsable, cause) {
obj['path'] = path;
obj['is_usable'] = isUsable;
obj['cause'] = cause;
}
/**
* Constructs a <code>PathCheckResult</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/PathCheckResult} obj Optional instance to populate.
* @return {module:model/PathCheckResult} The populated <code>PathCheckResult</code> instance.
*/
static constructFromObject(data, obj) {
if (data) {
obj = obj || new PathCheckResult();
if (data.hasOwnProperty('path')) {
obj['path'] = ApiClient.convertToType(data['path'], 'String');
}
if (data.hasOwnProperty('is_usable')) {
obj['is_usable'] = ApiClient.convertToType(data['is_usable'], 'Boolean');
}
if (data.hasOwnProperty('cause')) {
obj['cause'] = ApiClient.convertToType(data['cause'], 'String');
}
}
return obj;
}
}
/**
* The path that was checked.
* @member {String} path
*/
PathCheckResult.prototype['path'] = undefined;
/**
* Whether the path is usable or not.
* @member {Boolean} is_usable
*/
PathCheckResult.prototype['is_usable'] = undefined;
/**
* Description of why this path is not usable.
* @member {String} cause
*/
PathCheckResult.prototype['cause'] = undefined;
export default PathCheckResult;