diff --git a/addon/flamenco/manager/docs/SocketIOSubscriptionType.md b/addon/flamenco/manager/docs/SocketIOSubscriptionType.md index 576185e1..6df6d307 100644 --- a/addon/flamenco/manager/docs/SocketIOSubscriptionType.md +++ b/addon/flamenco/manager/docs/SocketIOSubscriptionType.md @@ -5,7 +5,7 @@ What kind of thing to subscribe to / unsubscribe from. ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**value** | **str** | What kind of thing to subscribe to / unsubscribe from. | must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", ] +**value** | **str** | What kind of thing to subscribe to / unsubscribe from. | must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", "allWorkerTags", ] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/addon/flamenco/manager/docs/SocketIOWorkerTagUpdate.md b/addon/flamenco/manager/docs/SocketIOWorkerTagUpdate.md new file mode 100644 index 00000000..91c6d07a --- /dev/null +++ b/addon/flamenco/manager/docs/SocketIOWorkerTagUpdate.md @@ -0,0 +1,14 @@ +# SocketIOWorkerTagUpdate + +Worker Tag, sent over SocketIO when it changes. + +## Properties +Name | Type | Description | Notes +------------ | ------------- | ------------- | ------------- +**tag** | [**WorkerTag**](WorkerTag.md) | | +**was_deleted** | **bool** | When a tag was just deleted, this is set to `true`. | [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_subscription_type.py b/addon/flamenco/manager/model/socket_io_subscription_type.py index b03c30f7..7290b0d7 100644 --- a/addon/flamenco/manager/model/socket_io_subscription_type.py +++ b/addon/flamenco/manager/model/socket_io_subscription_type.py @@ -57,6 +57,7 @@ class SocketIOSubscriptionType(ModelSimple): 'JOB': "job", 'TASKLOG': "tasklog", 'ALLLASTRENDERED': "allLastRendered", + 'ALLWORKERTAGS': "allWorkerTags", }, } @@ -108,10 +109,10 @@ class SocketIOSubscriptionType(ModelSimple): Note that value can be passed either in args or in kwargs, but not in both. Args: - args[0] (str): What kind of thing to subscribe to / unsubscribe from.., must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", ] # noqa: E501 + args[0] (str): What kind of thing to subscribe to / unsubscribe from.., must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", "allWorkerTags", ] # noqa: E501 Keyword Args: - value (str): What kind of thing to subscribe to / unsubscribe from.., must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", ] # noqa: E501 + value (str): What kind of thing to subscribe to / unsubscribe from.., must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", "allWorkerTags", ] # 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. @@ -198,10 +199,10 @@ class SocketIOSubscriptionType(ModelSimple): Note that value can be passed either in args or in kwargs, but not in both. Args: - args[0] (str): What kind of thing to subscribe to / unsubscribe from.., must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", ] # noqa: E501 + args[0] (str): What kind of thing to subscribe to / unsubscribe from.., must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", "allWorkerTags", ] # noqa: E501 Keyword Args: - value (str): What kind of thing to subscribe to / unsubscribe from.., must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", ] # noqa: E501 + value (str): What kind of thing to subscribe to / unsubscribe from.., must be one of ["allJobs", "allWorkers", "job", "tasklog", "allLastRendered", "allWorkerTags", ] # 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. diff --git a/addon/flamenco/manager/model/socket_io_worker_tag_update.py b/addon/flamenco/manager/model/socket_io_worker_tag_update.py new file mode 100644 index 00000000..0ebdd199 --- /dev/null +++ b/addon/flamenco/manager/model/socket_io_worker_tag_update.py @@ -0,0 +1,271 @@ +""" + 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_tag import WorkerTag + globals()['WorkerTag'] = WorkerTag + + +class SocketIOWorkerTagUpdate(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 { + 'tag': (WorkerTag,), # noqa: E501 + 'was_deleted': (bool,), # noqa: E501 + } + + @cached_property + def discriminator(): + return None + + + attribute_map = { + 'tag': 'tag', # noqa: E501 + 'was_deleted': 'was_deleted', # noqa: E501 + } + + read_only_vars = { + } + + _composed_schemas = {} + + @classmethod + @convert_js_args_to_python_args + def _from_openapi_data(cls, tag, *args, **kwargs): # noqa: E501 + """SocketIOWorkerTagUpdate - a model defined in OpenAPI + + Args: + tag (WorkerTag): + + 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,) + was_deleted (bool): When a tag was just deleted, this is set to `true`.. [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.tag = tag + 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, tag, *args, **kwargs): # noqa: E501 + """SocketIOWorkerTagUpdate - a model defined in OpenAPI + + Args: + tag (WorkerTag): + + 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,) + was_deleted (bool): When a tag was just deleted, this is set to `true`.. [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.tag = tag + 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 46f96d3f..ce7dd74c 100644 --- a/addon/flamenco/manager/models/__init__.py +++ b/addon/flamenco/manager/models/__init__.py @@ -64,6 +64,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_tag_update import SocketIOWorkerTagUpdate 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 diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 713bc4a0..107cd70b 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -108,134 +108,135 @@ var swaggerSpec = []string{ "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", - "z+HS9T/99un/BQAA//+MoGf5BQYBAA==", + "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", + "AP//gDoBPDoHAQA=", } // 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 c6a274ab..84fbd6b4 100644 --- a/pkg/api/openapi_types.gen.go +++ b/pkg/api/openapi_types.gen.go @@ -105,6 +105,8 @@ const ( SocketIOSubscriptionTypeAllLastRendered SocketIOSubscriptionType = "allLastRendered" + SocketIOSubscriptionTypeAllWorkerTags SocketIOSubscriptionType = "allWorkerTags" + SocketIOSubscriptionTypeAllWorkers SocketIOSubscriptionType = "allWorkers" SocketIOSubscriptionTypeJob SocketIOSubscriptionType = "job" @@ -604,6 +606,15 @@ type SocketIOTaskUpdate struct { Updated time.Time `json:"updated"` } +// Worker Tag, sent over SocketIO when it changes. +type SocketIOWorkerTagUpdate struct { + // Tag of workers. A job can optionally specify which tag it should be limited to. Workers can be part of multiple tags simultaneously. + Tag WorkerTag `json:"tag"` + + // When a tag was just deleted, this is set to `true`. + WasDeleted *bool `json:"was_deleted,omitempty"` +} + // Subset of a Worker, sent over SocketIO when a worker changes. type SocketIOWorkerUpdate struct { // Whether this Worker can auto-restart. diff --git a/web/app/src/manager-api/model/SocketIOSubscriptionType.js b/web/app/src/manager-api/model/SocketIOSubscriptionType.js index 36656047..12827e9e 100644 --- a/web/app/src/manager-api/model/SocketIOSubscriptionType.js +++ b/web/app/src/manager-api/model/SocketIOSubscriptionType.js @@ -54,6 +54,13 @@ export default class SocketIOSubscriptionType { "allLastRendered" = "allLastRendered"; + /** + * value: "allWorkerTags" + * @const + */ + "allWorkerTags" = "allWorkerTags"; + + /** * Returns a SocketIOSubscriptionType enum value from a Javascript object name. diff --git a/web/app/src/manager-api/model/SocketIOWorkerTagUpdate.js b/web/app/src/manager-api/model/SocketIOWorkerTagUpdate.js new file mode 100644 index 00000000..14c86f5b --- /dev/null +++ b/web/app/src/manager-api/model/SocketIOWorkerTagUpdate.js @@ -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'; +import WorkerTag from './WorkerTag'; + +/** + * The SocketIOWorkerTagUpdate model module. + * @module model/SocketIOWorkerTagUpdate + * @version 0.0.0 + */ +class SocketIOWorkerTagUpdate { + /** + * Constructs a new SocketIOWorkerTagUpdate. + * Worker Tag, sent over SocketIO when it changes. + * @alias module:model/SocketIOWorkerTagUpdate + * @param tag {module:model/WorkerTag} + */ + constructor(tag) { + + SocketIOWorkerTagUpdate.initialize(this, tag); + } + + /** + * 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, tag) { + obj['tag'] = tag; + } + + /** + * Constructs a SocketIOWorkerTagUpdate 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/SocketIOWorkerTagUpdate} obj Optional instance to populate. + * @return {module:model/SocketIOWorkerTagUpdate} The populated SocketIOWorkerTagUpdate instance. + */ + static constructFromObject(data, obj) { + if (data) { + obj = obj || new SocketIOWorkerTagUpdate(); + + if (data.hasOwnProperty('tag')) { + obj['tag'] = WorkerTag.constructFromObject(data['tag']); + } + if (data.hasOwnProperty('was_deleted')) { + obj['was_deleted'] = ApiClient.convertToType(data['was_deleted'], 'Boolean'); + } + } + return obj; + } + + +} + +/** + * @member {module:model/WorkerTag} tag + */ +SocketIOWorkerTagUpdate.prototype['tag'] = undefined; + +/** + * When a tag was just deleted, this is set to `true`. + * @member {Boolean} was_deleted + */ +SocketIOWorkerTagUpdate.prototype['was_deleted'] = undefined; + + + + + + +export default SocketIOWorkerTagUpdate; +