From 885911a06e0e3b33d26f50a83b7d0dd4fb1eeee8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sybren=20A=2E=20St=C3=BCvel?= Date: Tue, 31 May 2022 13:16:10 +0200 Subject: [PATCH] OAPI: regenerate code --- addon/flamenco/manager/__init__.py | 2 +- addon/flamenco/manager/api_client.py | 2 +- addon/flamenco/manager/configuration.py | 2 +- .../manager/docs/SocketIOWorkerUpdate.md | 19 ++ .../manager/model/socket_io_worker_update.py | 299 ++++++++++++++++++ addon/flamenco/manager/models/__init__.py | 1 + addon/flamenco/manager_README.md | 3 +- pkg/api/openapi_spec.gen.go | 260 +++++++-------- pkg/api/openapi_types.gen.go | 16 + web/app/src/manager-api/ApiClient.js | 2 +- web/app/src/manager-api/index.js | 7 + .../manager-api/model/SocketIOWorkerUpdate.js | 134 ++++++++ 12 files changed, 613 insertions(+), 134 deletions(-) create mode 100644 addon/flamenco/manager/docs/SocketIOWorkerUpdate.md create mode 100644 addon/flamenco/manager/model/socket_io_worker_update.py create mode 100644 web/app/src/manager-api/model/SocketIOWorkerUpdate.js diff --git a/addon/flamenco/manager/__init__.py b/addon/flamenco/manager/__init__.py index 594f4d2e..6f7791e8 100644 --- a/addon/flamenco/manager/__init__.py +++ b/addon/flamenco/manager/__init__.py @@ -10,7 +10,7 @@ """ -__version__ = "ccea8869" +__version__ = "8607827c" # import ApiClient from flamenco.manager.api_client import ApiClient diff --git a/addon/flamenco/manager/api_client.py b/addon/flamenco/manager/api_client.py index 9d5e817c..0cadc392 100644 --- a/addon/flamenco/manager/api_client.py +++ b/addon/flamenco/manager/api_client.py @@ -76,7 +76,7 @@ class ApiClient(object): self.default_headers[header_name] = header_value self.cookie = cookie # Set default User-Agent. - self.user_agent = 'Flamenco/ccea8869 (Blender add-on)' + self.user_agent = 'Flamenco/8607827c (Blender add-on)' def __enter__(self): return self diff --git a/addon/flamenco/manager/configuration.py b/addon/flamenco/manager/configuration.py index 7b2aff2f..ae5a34fd 100644 --- a/addon/flamenco/manager/configuration.py +++ b/addon/flamenco/manager/configuration.py @@ -404,7 +404,7 @@ conf = flamenco.manager.Configuration( "OS: {env}\n"\ "Python Version: {pyversion}\n"\ "Version of the API: 1.0.0\n"\ - "SDK Package Version: ccea8869".\ + "SDK Package Version: 8607827c".\ format(env=sys.platform, pyversion=sys.version) def get_host_settings(self): diff --git a/addon/flamenco/manager/docs/SocketIOWorkerUpdate.md b/addon/flamenco/manager/docs/SocketIOWorkerUpdate.md new file mode 100644 index 00000000..4ba2da12 --- /dev/null +++ b/addon/flamenco/manager/docs/SocketIOWorkerUpdate.md @@ -0,0 +1,19 @@ +# SocketIOWorkerUpdate + +Subset of a Worker, sent over SocketIO when a worker changes. For new workers, `previous_status` will be excluded. + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**id** | **str** | UUID of the Worker | +**nickname** | **str** | Name of the worker | +**updated** | **datetime** | Timestamp of last update | +**status** | [**WorkerStatus**](WorkerStatus.md) | | +**version** | **str** | | +**previous_status** | [**WorkerStatus**](WorkerStatus.md) | | [optional] +**status_requested** | [**WorkerStatus**](WorkerStatus.md) | | [optional] +**any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] + +[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) + + diff --git a/addon/flamenco/manager/model/socket_io_worker_update.py b/addon/flamenco/manager/model/socket_io_worker_update.py new file mode 100644 index 00000000..afa56452 --- /dev/null +++ b/addon/flamenco/manager/model/socket_io_worker_update.py @@ -0,0 +1,299 @@ +""" + Flamenco manager + + Render Farm manager API # noqa: E501 + + The version of the OpenAPI document: 1.0.0 + Generated by: https://openapi-generator.tech +""" + + +import re # noqa: F401 +import sys # noqa: F401 + +from flamenco.manager.model_utils import ( # noqa: F401 + ApiTypeError, + ModelComposed, + ModelNormal, + ModelSimple, + cached_property, + change_keys_js_to_python, + convert_js_args_to_python_args, + date, + datetime, + file_type, + none_type, + validate_get_composed_info, + OpenApiModel +) +from flamenco.manager.exceptions import ApiAttributeError + + +def lazy_import(): + from flamenco.manager.model.worker_status import WorkerStatus + globals()['WorkerStatus'] = WorkerStatus + + +class SocketIOWorkerUpdate(ModelNormal): + """NOTE: This class is auto generated by OpenAPI Generator. + Ref: https://openapi-generator.tech + + Do not edit the class manually. + + Attributes: + allowed_values (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + with a capitalized key describing the allowed value and an allowed + value. These dicts store the allowed enum values. + attribute_map (dict): The key is attribute name + and the value is json key in definition. + discriminator_value_class_map (dict): A dict to go from the discriminator + variable value to the discriminator class name. + validations (dict): The key is the tuple path to the attribute + and the for var_name this is (var_name,). The value is a dict + that stores validations for max_length, min_length, max_items, + min_items, exclusive_maximum, inclusive_maximum, exclusive_minimum, + inclusive_minimum, and regex. + additional_properties_type (tuple): A tuple of classes accepted + as additional properties values. + """ + + allowed_values = { + } + + validations = { + } + + @cached_property + def additional_properties_type(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + """ + lazy_import() + return (bool, date, datetime, dict, float, int, list, str, none_type,) # noqa: E501 + + _nullable = False + + @cached_property + def openapi_types(): + """ + This must be a method because a model may have properties that are + of type self, this must run after the class is loaded + + Returns + openapi_types (dict): The key is attribute name + and the value is attribute type. + """ + lazy_import() + return { + 'id': (str,), # noqa: E501 + 'nickname': (str,), # noqa: E501 + 'updated': (datetime,), # noqa: E501 + 'status': (WorkerStatus,), # noqa: E501 + 'version': (str,), # noqa: E501 + 'previous_status': (WorkerStatus,), # noqa: E501 + 'status_requested': (WorkerStatus,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'id': 'id', # noqa: E501 + 'nickname': 'nickname', # noqa: E501 + 'updated': 'updated', # noqa: E501 + 'status': 'status', # noqa: E501 + 'version': 'version', # noqa: E501 + 'previous_status': 'previous_status', # noqa: E501 + 'status_requested': 'status_requested', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, id, nickname, updated, status, version, *args, **kwargs): # noqa: E501 + """SocketIOWorkerUpdate - a model defined in OpenAPI + + Args: + id (str): UUID of the Worker + nickname (str): Name of the worker + updated (datetime): Timestamp of last update + status (WorkerStatus): + version (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,) + previous_status (WorkerStatus): [optional] # noqa: E501 + status_requested (WorkerStatus): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + self = super(OpenApiModel, cls).__new__(cls) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.id = id + self.nickname = nickname + self.updated = updated + self.status = status + self.version = version + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + return self + + required_properties = set([ + '_data_store', + '_check_type', + '_spec_property_naming', + '_path_to_item', + '_configuration', + '_visited_composed_classes', + ]) + + @convert_js_args_to_python_args + def __init__(self, id, nickname, updated, status, version, *args, **kwargs): # noqa: E501 + """SocketIOWorkerUpdate - a model defined in OpenAPI + + Args: + id (str): UUID of the Worker + nickname (str): Name of the worker + updated (datetime): Timestamp of last update + status (WorkerStatus): + version (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,) + previous_status (WorkerStatus): [optional] # noqa: E501 + status_requested (WorkerStatus): [optional] # noqa: E501 + """ + + _check_type = kwargs.pop('_check_type', True) + _spec_property_naming = kwargs.pop('_spec_property_naming', False) + _path_to_item = kwargs.pop('_path_to_item', ()) + _configuration = kwargs.pop('_configuration', None) + _visited_composed_classes = kwargs.pop('_visited_composed_classes', ()) + + if args: + raise ApiTypeError( + "Invalid positional arguments=%s passed to %s. Remove those invalid positional arguments." % ( + args, + self.__class__.__name__, + ), + path_to_item=_path_to_item, + valid_classes=(self.__class__,), + ) + + self._data_store = {} + self._check_type = _check_type + self._spec_property_naming = _spec_property_naming + self._path_to_item = _path_to_item + self._configuration = _configuration + self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + + self.id = id + self.nickname = nickname + self.updated = updated + self.status = status + self.version = version + for var_name, var_value in kwargs.items(): + if var_name not in self.attribute_map and \ + self._configuration is not None and \ + self._configuration.discard_unknown_keys and \ + self.additional_properties_type is None: + # discard variable. + continue + setattr(self, var_name, var_value) + if var_name in self.read_only_vars: + raise ApiAttributeError(f"`{var_name}` is a read-only attribute. Use `from_openapi_data` to instantiate " + f"class with read only attributes.") diff --git a/addon/flamenco/manager/models/__init__.py b/addon/flamenco/manager/models/__init__.py index 6db3db68..5e1e49e9 100644 --- a/addon/flamenco/manager/models/__init__.py +++ b/addon/flamenco/manager/models/__init__.py @@ -46,6 +46,7 @@ from flamenco.manager.model.socket_io_subscription_operation import SocketIOSubs from flamenco.manager.model.socket_io_subscription_type import SocketIOSubscriptionType from flamenco.manager.model.socket_io_task_log_update import SocketIOTaskLogUpdate from flamenco.manager.model.socket_io_task_update import SocketIOTaskUpdate +from flamenco.manager.model.socket_io_worker_update import SocketIOWorkerUpdate from flamenco.manager.model.submitted_job import SubmittedJob from flamenco.manager.model.task import Task from flamenco.manager.model.task_status import TaskStatus diff --git a/addon/flamenco/manager_README.md b/addon/flamenco/manager_README.md index f1b4059c..8539271f 100644 --- a/addon/flamenco/manager_README.md +++ b/addon/flamenco/manager_README.md @@ -4,7 +4,7 @@ Render Farm manager API The `flamenco.manager` package is automatically generated by the [OpenAPI Generator](https://openapi-generator.tech) project: - API version: 1.0.0 -- Package version: ccea8869 +- Package version: 8607827c - Build package: org.openapitools.codegen.languages.PythonClientCodegen For more information, please visit [https://flamenco.io/](https://flamenco.io/) @@ -138,6 +138,7 @@ Class | Method | HTTP request | Description - [SocketIOSubscriptionType](flamenco/manager/docs/SocketIOSubscriptionType.md) - [SocketIOTaskLogUpdate](flamenco/manager/docs/SocketIOTaskLogUpdate.md) - [SocketIOTaskUpdate](flamenco/manager/docs/SocketIOTaskUpdate.md) + - [SocketIOWorkerUpdate](flamenco/manager/docs/SocketIOWorkerUpdate.md) - [SubmittedJob](flamenco/manager/docs/SubmittedJob.md) - [Task](flamenco/manager/docs/Task.md) - [TaskStatus](flamenco/manager/docs/TaskStatus.md) diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index c463bda9..cf81364d 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -18,135 +18,137 @@ import ( // Base64 encoded, gzipped, json marshaled Swagger object var swaggerSpec = []string{ - "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", + "AAA=", } // GetSwagger returns the content of the embedded swagger specification file diff --git a/pkg/api/openapi_types.gen.go b/pkg/api/openapi_types.gen.go index 5780def6..4fcfc4e3 100644 --- a/pkg/api/openapi_types.gen.go +++ b/pkg/api/openapi_types.gen.go @@ -447,6 +447,22 @@ type SocketIOTaskUpdate struct { Updated time.Time `json:"updated"` } +// Subset of a Worker, sent over SocketIO when a worker changes. For new workers, `previous_status` will be excluded. +type SocketIOWorkerUpdate struct { + // UUID of the Worker + Id string `json:"id"` + + // Name of the worker + Nickname string `json:"nickname"` + PreviousStatus *WorkerStatus `json:"previous_status,omitempty"` + Status WorkerStatus `json:"status"` + StatusRequested *WorkerStatus `json:"status_requested,omitempty"` + + // Timestamp of last update + Updated time.Time `json:"updated"` + Version string `json:"version"` +} + // Job definition submitted to Flamenco. type SubmittedJob struct { // Arbitrary metadata strings. More complex structures can be modeled by using `a.b.c` notation for the key. diff --git a/web/app/src/manager-api/ApiClient.js b/web/app/src/manager-api/ApiClient.js index bbab3fc5..9070e707 100644 --- a/web/app/src/manager-api/ApiClient.js +++ b/web/app/src/manager-api/ApiClient.js @@ -55,7 +55,7 @@ class ApiClient { * @default {} */ this.defaultHeaders = { - 'User-Agent': 'Flamenco/ccea8869 / webbrowser' + 'User-Agent': 'Flamenco/8607827c / webbrowser' }; /** diff --git a/web/app/src/manager-api/index.js b/web/app/src/manager-api/index.js index d058074f..2e9e21f0 100644 --- a/web/app/src/manager-api/index.js +++ b/web/app/src/manager-api/index.js @@ -48,6 +48,7 @@ import SocketIOSubscriptionOperation from './model/SocketIOSubscriptionOperation import SocketIOSubscriptionType from './model/SocketIOSubscriptionType'; import SocketIOTaskLogUpdate from './model/SocketIOTaskLogUpdate'; import SocketIOTaskUpdate from './model/SocketIOTaskUpdate'; +import SocketIOWorkerUpdate from './model/SocketIOWorkerUpdate'; import SubmittedJob from './model/SubmittedJob'; import Task from './model/Task'; import TaskStatus from './model/TaskStatus'; @@ -318,6 +319,12 @@ export { */ SocketIOTaskUpdate, + /** + * The SocketIOWorkerUpdate model constructor. + * @property {module:model/SocketIOWorkerUpdate} + */ + SocketIOWorkerUpdate, + /** * The SubmittedJob model constructor. * @property {module:model/SubmittedJob} diff --git a/web/app/src/manager-api/model/SocketIOWorkerUpdate.js b/web/app/src/manager-api/model/SocketIOWorkerUpdate.js new file mode 100644 index 00000000..350e7936 --- /dev/null +++ b/web/app/src/manager-api/model/SocketIOWorkerUpdate.js @@ -0,0 +1,134 @@ +/** + * Flamenco manager + * Render Farm manager API + * + * The version of the OpenAPI document: 1.0.0 + * + * + * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * https://openapi-generator.tech + * Do not edit the class manually. + * + */ + +import ApiClient from '../ApiClient'; +import WorkerStatus from './WorkerStatus'; + +/** + * The SocketIOWorkerUpdate model module. + * @module model/SocketIOWorkerUpdate + * @version 0.0.0 + */ +class SocketIOWorkerUpdate { + /** + * Constructs a new SocketIOWorkerUpdate. + * Subset of a Worker, sent over SocketIO when a worker changes. For new workers, `previous_status` will be excluded. + * @alias module:model/SocketIOWorkerUpdate + * @param id {String} UUID of the Worker + * @param nickname {String} Name of the worker + * @param updated {Date} Timestamp of last update + * @param status {module:model/WorkerStatus} + * @param version {String} + */ + constructor(id, nickname, updated, status, version) { + + SocketIOWorkerUpdate.initialize(this, id, nickname, updated, status, version); + } + + /** + * Initializes the fields of this object. + * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins). + * Only for internal use. + */ + static initialize(obj, id, nickname, updated, status, version) { + obj['id'] = id; + obj['nickname'] = nickname; + obj['updated'] = updated; + obj['status'] = status; + obj['version'] = version; + } + + /** + * Constructs a SocketIOWorkerUpdate from a plain JavaScript object, optionally creating a new instance. + * Copies all relevant properties from data to obj if supplied or a new instance if not. + * @param {Object} data The plain JavaScript object bearing properties of interest. + * @param {module:model/SocketIOWorkerUpdate} obj Optional instance to populate. + * @return {module:model/SocketIOWorkerUpdate} The populated SocketIOWorkerUpdate instance. + */ + static constructFromObject(data, obj) { + if (data) { + obj = obj || new SocketIOWorkerUpdate(); + + if (data.hasOwnProperty('id')) { + obj['id'] = ApiClient.convertToType(data['id'], 'String'); + } + if (data.hasOwnProperty('nickname')) { + obj['nickname'] = ApiClient.convertToType(data['nickname'], 'String'); + } + if (data.hasOwnProperty('updated')) { + obj['updated'] = ApiClient.convertToType(data['updated'], 'Date'); + } + if (data.hasOwnProperty('status')) { + obj['status'] = WorkerStatus.constructFromObject(data['status']); + } + if (data.hasOwnProperty('previous_status')) { + obj['previous_status'] = WorkerStatus.constructFromObject(data['previous_status']); + } + if (data.hasOwnProperty('status_requested')) { + obj['status_requested'] = WorkerStatus.constructFromObject(data['status_requested']); + } + if (data.hasOwnProperty('version')) { + obj['version'] = ApiClient.convertToType(data['version'], 'String'); + } + } + return obj; + } + + +} + +/** + * UUID of the Worker + * @member {String} id + */ +SocketIOWorkerUpdate.prototype['id'] = undefined; + +/** + * Name of the worker + * @member {String} nickname + */ +SocketIOWorkerUpdate.prototype['nickname'] = undefined; + +/** + * Timestamp of last update + * @member {Date} updated + */ +SocketIOWorkerUpdate.prototype['updated'] = undefined; + +/** + * @member {module:model/WorkerStatus} status + */ +SocketIOWorkerUpdate.prototype['status'] = undefined; + +/** + * @member {module:model/WorkerStatus} previous_status + */ +SocketIOWorkerUpdate.prototype['previous_status'] = undefined; + +/** + * @member {module:model/WorkerStatus} status_requested + */ +SocketIOWorkerUpdate.prototype['status_requested'] = undefined; + +/** + * @member {String} version + */ +SocketIOWorkerUpdate.prototype['version'] = undefined; + + + + + + +export default SocketIOWorkerUpdate; +