diff --git a/addon/flamenco/manager/docs/SocketIOWorkerUpdate.md b/addon/flamenco/manager/docs/SocketIOWorkerUpdate.md index 7e81ad9f..af535c73 100644 --- a/addon/flamenco/manager/docs/SocketIOWorkerUpdate.md +++ b/addon/flamenco/manager/docs/SocketIOWorkerUpdate.md @@ -10,6 +10,7 @@ Name | Type | Description | Notes **updated** | **datetime** | Timestamp of last update | **status** | [**WorkerStatus**](WorkerStatus.md) | | **version** | **str** | | +**can_restart** | **bool** | Whether this Worker can auto-restart. | **last_seen** | **datetime** | Last time this worker was seen by the Manager. | [optional] **previous_status** | [**WorkerStatus**](WorkerStatus.md) | | [optional] **status_change** | [**WorkerStatusChangeRequest**](WorkerStatusChangeRequest.md) | | [optional] diff --git a/addon/flamenco/manager/docs/Worker.md b/addon/flamenco/manager/docs/Worker.md index ade74dde..21704f1a 100644 --- a/addon/flamenco/manager/docs/Worker.md +++ b/addon/flamenco/manager/docs/Worker.md @@ -9,6 +9,7 @@ Name | Type | Description | Notes **name** | **str** | | **status** | [**WorkerStatus**](WorkerStatus.md) | | **version** | **str** | Version of Flamenco this Worker is running | +**can_restart** | **bool** | Whether this worker can auto-restart. | **ip_address** | **str** | IP address of the Worker | **platform** | **str** | Operating system of the Worker | **supported_task_types** | **[str]** | | diff --git a/addon/flamenco/manager/docs/WorkerApi.md b/addon/flamenco/manager/docs/WorkerApi.md index 0fbb0caf..e1562a0e 100644 --- a/addon/flamenco/manager/docs/WorkerApi.md +++ b/addon/flamenco/manager/docs/WorkerApi.md @@ -362,6 +362,7 @@ with flamenco.manager.ApiClient(configuration) as api_client: "supported_task_types_example", ], software_version="software_version_example", + can_restart=True, ) # WorkerSignOn | Worker metadata # example passing only required values which don't have defaults set diff --git a/addon/flamenco/manager/docs/WorkerSignOn.md b/addon/flamenco/manager/docs/WorkerSignOn.md index 66d06596..026a0a97 100644 --- a/addon/flamenco/manager/docs/WorkerSignOn.md +++ b/addon/flamenco/manager/docs/WorkerSignOn.md @@ -7,6 +7,7 @@ Name | Type | Description | Notes **name** | **str** | | **supported_task_types** | **[str]** | | **software_version** | **str** | | +**can_restart** | **bool** | | [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/docs/WorkerStatus.md b/addon/flamenco/manager/docs/WorkerStatus.md index f0c167a1..018a97c1 100644 --- a/addon/flamenco/manager/docs/WorkerStatus.md +++ b/addon/flamenco/manager/docs/WorkerStatus.md @@ -4,7 +4,7 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**value** | **str** | | must be one of ["starting", "awake", "asleep", "error", "testing", "offline", ] +**value** | **str** | | must be one of ["starting", "awake", "asleep", "error", "testing", "offline", "restart", ] [[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md) diff --git a/addon/flamenco/manager/docs/WorkerSummary.md b/addon/flamenco/manager/docs/WorkerSummary.md index 4e96a044..7bbbbab0 100644 --- a/addon/flamenco/manager/docs/WorkerSummary.md +++ b/addon/flamenco/manager/docs/WorkerSummary.md @@ -9,6 +9,7 @@ Name | Type | Description | Notes **name** | **str** | | **status** | [**WorkerStatus**](WorkerStatus.md) | | **version** | **str** | Version of Flamenco this Worker is running | +**can_restart** | **bool** | Whether this worker can auto-restart. | **status_change** | [**WorkerStatusChangeRequest**](WorkerStatusChangeRequest.md) | | [optional] **last_seen** | **datetime** | Last time this worker was seen by the Manager. | [optional] **any string name** | **bool, date, datetime, dict, float, int, list, str, none_type** | any string name can be used but the value must be the correct type | [optional] diff --git a/addon/flamenco/manager/model/socket_io_worker_update.py b/addon/flamenco/manager/model/socket_io_worker_update.py index 51cf07dc..b65dfe6c 100644 --- a/addon/flamenco/manager/model/socket_io_worker_update.py +++ b/addon/flamenco/manager/model/socket_io_worker_update.py @@ -94,6 +94,7 @@ class SocketIOWorkerUpdate(ModelNormal): 'updated': (datetime,), # noqa: E501 'status': (WorkerStatus,), # noqa: E501 'version': (str,), # noqa: E501 + 'can_restart': (bool,), # noqa: E501 'last_seen': (datetime,), # noqa: E501 'previous_status': (WorkerStatus,), # noqa: E501 'status_change': (WorkerStatusChangeRequest,), # noqa: E501 @@ -111,6 +112,7 @@ class SocketIOWorkerUpdate(ModelNormal): 'updated': 'updated', # noqa: E501 'status': 'status', # noqa: E501 'version': 'version', # noqa: E501 + 'can_restart': 'can_restart', # noqa: E501 'last_seen': 'last_seen', # noqa: E501 'previous_status': 'previous_status', # noqa: E501 'status_change': 'status_change', # noqa: E501 @@ -124,7 +126,7 @@ class SocketIOWorkerUpdate(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, id, name, updated, status, version, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, id, name, updated, status, version, can_restart, *args, **kwargs): # noqa: E501 """SocketIOWorkerUpdate - a model defined in OpenAPI Args: @@ -133,6 +135,7 @@ class SocketIOWorkerUpdate(ModelNormal): updated (datetime): Timestamp of last update status (WorkerStatus): version (str): + can_restart (bool): Whether this Worker can auto-restart. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -201,6 +204,7 @@ class SocketIOWorkerUpdate(ModelNormal): self.updated = updated self.status = status self.version = version + self.can_restart = can_restart for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -221,7 +225,7 @@ class SocketIOWorkerUpdate(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, id, name, updated, status, version, *args, **kwargs): # noqa: E501 + def __init__(self, id, name, updated, status, version, can_restart, *args, **kwargs): # noqa: E501 """SocketIOWorkerUpdate - a model defined in OpenAPI Args: @@ -230,6 +234,7 @@ class SocketIOWorkerUpdate(ModelNormal): updated (datetime): Timestamp of last update status (WorkerStatus): version (str): + can_restart (bool): Whether this Worker can auto-restart. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -296,6 +301,7 @@ class SocketIOWorkerUpdate(ModelNormal): self.updated = updated self.status = status self.version = version + self.can_restart = can_restart for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/addon/flamenco/manager/model/worker.py b/addon/flamenco/manager/model/worker.py index 4d48dd85..7dff6ee4 100644 --- a/addon/flamenco/manager/model/worker.py +++ b/addon/flamenco/manager/model/worker.py @@ -101,6 +101,7 @@ class Worker(ModelComposed): 'name': (str,), # noqa: E501 'status': (WorkerStatus,), # noqa: E501 'version': (str,), # noqa: E501 + 'can_restart': (bool,), # noqa: E501 'ip_address': (str,), # noqa: E501 'platform': (str,), # noqa: E501 'supported_task_types': ([str],), # noqa: E501 @@ -120,6 +121,7 @@ class Worker(ModelComposed): 'name': 'name', # noqa: E501 'status': 'status', # noqa: E501 'version': 'version', # noqa: E501 + 'can_restart': 'can_restart', # noqa: E501 'ip_address': 'ip_address', # noqa: E501 'platform': 'platform', # noqa: E501 'supported_task_types': 'supported_task_types', # noqa: E501 @@ -142,6 +144,7 @@ class Worker(ModelComposed): name (str): status (WorkerStatus): version (str): Version of Flamenco this Worker is running + can_restart (bool): Whether this worker can auto-restart. ip_address (str): IP address of the Worker platform (str): Operating system of the Worker supported_task_types ([str]): @@ -252,6 +255,7 @@ class Worker(ModelComposed): name (str): status (WorkerStatus): version (str): Version of Flamenco this Worker is running + can_restart (bool): Whether this worker can auto-restart. ip_address (str): IP address of the Worker platform (str): Operating system of the Worker supported_task_types ([str]): diff --git a/addon/flamenco/manager/model/worker_sign_on.py b/addon/flamenco/manager/model/worker_sign_on.py index 021c0c89..c8055bd9 100644 --- a/addon/flamenco/manager/model/worker_sign_on.py +++ b/addon/flamenco/manager/model/worker_sign_on.py @@ -84,6 +84,7 @@ class WorkerSignOn(ModelNormal): 'name': (str,), # noqa: E501 'supported_task_types': ([str],), # noqa: E501 'software_version': (str,), # noqa: E501 + 'can_restart': (bool,), # noqa: E501 } @cached_property @@ -95,6 +96,7 @@ class WorkerSignOn(ModelNormal): 'name': 'name', # noqa: E501 'supported_task_types': 'supported_task_types', # noqa: E501 'software_version': 'software_version', # noqa: E501 + 'can_restart': 'can_restart', # noqa: E501 } read_only_vars = { @@ -143,6 +145,7 @@ class WorkerSignOn(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + can_restart (bool): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -232,6 +235,7 @@ class WorkerSignOn(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + can_restart (bool): [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) diff --git a/addon/flamenco/manager/model/worker_status.py b/addon/flamenco/manager/model/worker_status.py index f2a2f2c5..242056c3 100644 --- a/addon/flamenco/manager/model/worker_status.py +++ b/addon/flamenco/manager/model/worker_status.py @@ -58,6 +58,7 @@ class WorkerStatus(ModelSimple): 'ERROR': "error", 'TESTING': "testing", 'OFFLINE': "offline", + 'RESTART': "restart", }, } @@ -109,10 +110,10 @@ class WorkerStatus(ModelSimple): Note that value can be passed either in args or in kwargs, but not in both. Args: - args[0] (str):, must be one of ["starting", "awake", "asleep", "error", "testing", "offline", ] # noqa: E501 + args[0] (str):, must be one of ["starting", "awake", "asleep", "error", "testing", "offline", "restart", ] # noqa: E501 Keyword Args: - value (str):, must be one of ["starting", "awake", "asleep", "error", "testing", "offline", ] # noqa: E501 + value (str):, must be one of ["starting", "awake", "asleep", "error", "testing", "offline", "restart", ] # 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. @@ -199,10 +200,10 @@ class WorkerStatus(ModelSimple): Note that value can be passed either in args or in kwargs, but not in both. Args: - args[0] (str):, must be one of ["starting", "awake", "asleep", "error", "testing", "offline", ] # noqa: E501 + args[0] (str):, must be one of ["starting", "awake", "asleep", "error", "testing", "offline", "restart", ] # noqa: E501 Keyword Args: - value (str):, must be one of ["starting", "awake", "asleep", "error", "testing", "offline", ] # noqa: E501 + value (str):, must be one of ["starting", "awake", "asleep", "error", "testing", "offline", "restart", ] # 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/worker_summary.py b/addon/flamenco/manager/model/worker_summary.py index 434c807e..c71dde94 100644 --- a/addon/flamenco/manager/model/worker_summary.py +++ b/addon/flamenco/manager/model/worker_summary.py @@ -93,6 +93,7 @@ class WorkerSummary(ModelNormal): 'name': (str,), # noqa: E501 'status': (WorkerStatus,), # noqa: E501 'version': (str,), # noqa: E501 + 'can_restart': (bool,), # noqa: E501 'status_change': (WorkerStatusChangeRequest,), # noqa: E501 'last_seen': (datetime,), # noqa: E501 } @@ -107,6 +108,7 @@ class WorkerSummary(ModelNormal): 'name': 'name', # noqa: E501 'status': 'status', # noqa: E501 'version': 'version', # noqa: E501 + 'can_restart': 'can_restart', # noqa: E501 'status_change': 'status_change', # noqa: E501 'last_seen': 'last_seen', # noqa: E501 } @@ -118,7 +120,7 @@ class WorkerSummary(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, id, name, status, version, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, id, name, status, version, can_restart, *args, **kwargs): # noqa: E501 """WorkerSummary - a model defined in OpenAPI Args: @@ -126,6 +128,7 @@ class WorkerSummary(ModelNormal): name (str): status (WorkerStatus): version (str): Version of Flamenco this Worker is running + can_restart (bool): Whether this worker can auto-restart. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -191,6 +194,7 @@ class WorkerSummary(ModelNormal): self.name = name self.status = status self.version = version + self.can_restart = can_restart for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ @@ -211,7 +215,7 @@ class WorkerSummary(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, id, name, status, version, *args, **kwargs): # noqa: E501 + def __init__(self, id, name, status, version, can_restart, *args, **kwargs): # noqa: E501 """WorkerSummary - a model defined in OpenAPI Args: @@ -219,6 +223,7 @@ class WorkerSummary(ModelNormal): name (str): status (WorkerStatus): version (str): Version of Flamenco this Worker is running + can_restart (bool): Whether this worker can auto-restart. Keyword Args: _check_type (bool): if True, values for parameters in openapi_types @@ -282,6 +287,7 @@ class WorkerSummary(ModelNormal): self.name = name self.status = status self.version = version + self.can_restart = can_restart for var_name, var_value in kwargs.items(): if var_name not in self.attribute_map and \ self._configuration is not None and \ diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 637505af..713bc4a0 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -111,130 +111,131 @@ var swaggerSpec = []string{ "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", - "0vU//fbp/wUAAP//QMYS9PwEAQA=", + "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", + "z+HS9T/99un/BQAA//+MoGf5BQYBAA==", } // 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 a73f108c..c6a274ab 100644 --- a/pkg/api/openapi_types.gen.go +++ b/pkg/api/openapi_types.gen.go @@ -139,6 +139,8 @@ const ( WorkerStatusOffline WorkerStatus = "offline" + WorkerStatusRestart WorkerStatus = "restart" + WorkerStatusStarting WorkerStatus = "starting" WorkerStatusTesting WorkerStatus = "testing" @@ -604,6 +606,9 @@ type SocketIOTaskUpdate struct { // Subset of a Worker, sent over SocketIO when a worker changes. type SocketIOWorkerUpdate struct { + // Whether this Worker can auto-restart. + CanRestart bool `json:"can_restart"` + // This is only set when the worker was deleted. DeletedAt *time.Time `json:"deleted_at,omitempty"` @@ -758,6 +763,7 @@ type WorkerRegistration struct { // WorkerSignOn defines model for WorkerSignOn. type WorkerSignOn struct { + CanRestart *bool `json:"can_restart,omitempty"` Name string `json:"name"` SoftwareVersion string `json:"software_version"` SupportedTaskTypes []string `json:"supported_task_types"` @@ -795,7 +801,9 @@ type WorkerStatusChangeRequest struct { // Basic information about a Worker. type WorkerSummary struct { - Id string `json:"id"` + // Whether this worker can auto-restart. + CanRestart bool `json:"can_restart"` + Id string `json:"id"` // Last time this worker was seen by the Manager. LastSeen *time.Time `json:"last_seen,omitempty"` diff --git a/web/app/src/manager-api/model/SocketIOWorkerUpdate.js b/web/app/src/manager-api/model/SocketIOWorkerUpdate.js index 91798f89..ea27eb71 100644 --- a/web/app/src/manager-api/model/SocketIOWorkerUpdate.js +++ b/web/app/src/manager-api/model/SocketIOWorkerUpdate.js @@ -30,10 +30,11 @@ class SocketIOWorkerUpdate { * @param updated {Date} Timestamp of last update * @param status {module:model/WorkerStatus} * @param version {String} + * @param canRestart {Boolean} Whether this Worker can auto-restart. */ - constructor(id, name, updated, status, version) { + constructor(id, name, updated, status, version, canRestart) { - SocketIOWorkerUpdate.initialize(this, id, name, updated, status, version); + SocketIOWorkerUpdate.initialize(this, id, name, updated, status, version, canRestart); } /** @@ -41,12 +42,13 @@ class SocketIOWorkerUpdate { * 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, name, updated, status, version) { + static initialize(obj, id, name, updated, status, version, canRestart) { obj['id'] = id; obj['name'] = name; obj['updated'] = updated; obj['status'] = status; obj['version'] = version; + obj['can_restart'] = canRestart; } /** @@ -87,6 +89,9 @@ class SocketIOWorkerUpdate { if (data.hasOwnProperty('deleted_at')) { obj['deleted_at'] = ApiClient.convertToType(data['deleted_at'], 'Date'); } + if (data.hasOwnProperty('can_restart')) { + obj['can_restart'] = ApiClient.convertToType(data['can_restart'], 'Boolean'); + } } return obj; } @@ -144,6 +149,12 @@ SocketIOWorkerUpdate.prototype['version'] = undefined; */ SocketIOWorkerUpdate.prototype['deleted_at'] = undefined; +/** + * Whether this Worker can auto-restart. + * @member {Boolean} can_restart + */ +SocketIOWorkerUpdate.prototype['can_restart'] = undefined; + diff --git a/web/app/src/manager-api/model/Worker.js b/web/app/src/manager-api/model/Worker.js index 4c98c19d..b734a2b6 100644 --- a/web/app/src/manager-api/model/Worker.js +++ b/web/app/src/manager-api/model/Worker.js @@ -35,13 +35,14 @@ class Worker { * @param name {String} * @param status {module:model/WorkerStatus} * @param version {String} Version of Flamenco this Worker is running + * @param canRestart {Boolean} Whether this worker can auto-restart. * @param ipAddress {String} IP address of the Worker * @param platform {String} Operating system of the Worker * @param supportedTaskTypes {Array.} */ - constructor(id, name, status, version, ipAddress, platform, supportedTaskTypes) { - WorkerSummary.initialize(this, id, name, status, version);WorkerAllOf.initialize(this, ipAddress, platform, supportedTaskTypes); - Worker.initialize(this, id, name, status, version, ipAddress, platform, supportedTaskTypes); + constructor(id, name, status, version, canRestart, ipAddress, platform, supportedTaskTypes) { + WorkerSummary.initialize(this, id, name, status, version, canRestart);WorkerAllOf.initialize(this, ipAddress, platform, supportedTaskTypes); + Worker.initialize(this, id, name, status, version, canRestart, ipAddress, platform, supportedTaskTypes); } /** @@ -49,11 +50,12 @@ class Worker { * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins). * Only for internal use. */ - static initialize(obj, id, name, status, version, ipAddress, platform, supportedTaskTypes) { + static initialize(obj, id, name, status, version, canRestart, ipAddress, platform, supportedTaskTypes) { obj['id'] = id; obj['name'] = name; obj['status'] = status; obj['version'] = version; + obj['can_restart'] = canRestart; obj['ip_address'] = ipAddress; obj['platform'] = platform; obj['supported_task_types'] = supportedTaskTypes; @@ -90,6 +92,9 @@ class Worker { if (data.hasOwnProperty('version')) { obj['version'] = ApiClient.convertToType(data['version'], 'String'); } + if (data.hasOwnProperty('can_restart')) { + obj['can_restart'] = ApiClient.convertToType(data['can_restart'], 'Boolean'); + } if (data.hasOwnProperty('ip_address')) { obj['ip_address'] = ApiClient.convertToType(data['ip_address'], 'String'); } @@ -144,6 +149,12 @@ Worker.prototype['last_seen'] = undefined; */ Worker.prototype['version'] = undefined; +/** + * Whether this worker can auto-restart. + * @member {Boolean} can_restart + */ +Worker.prototype['can_restart'] = undefined; + /** * IP address of the Worker * @member {String} ip_address @@ -200,6 +211,11 @@ WorkerSummary.prototype['last_seen'] = undefined; * @member {String} version */ WorkerSummary.prototype['version'] = undefined; +/** + * Whether this worker can auto-restart. + * @member {Boolean} can_restart + */ +WorkerSummary.prototype['can_restart'] = undefined; // Implement WorkerAllOf interface: /** * IP address of the Worker diff --git a/web/app/src/manager-api/model/WorkerSignOn.js b/web/app/src/manager-api/model/WorkerSignOn.js index e2d6ae1e..326e2f73 100644 --- a/web/app/src/manager-api/model/WorkerSignOn.js +++ b/web/app/src/manager-api/model/WorkerSignOn.js @@ -62,6 +62,9 @@ class WorkerSignOn { if (data.hasOwnProperty('software_version')) { obj['software_version'] = ApiClient.convertToType(data['software_version'], 'String'); } + if (data.hasOwnProperty('can_restart')) { + obj['can_restart'] = ApiClient.convertToType(data['can_restart'], 'Boolean'); + } } return obj; } @@ -84,6 +87,11 @@ WorkerSignOn.prototype['supported_task_types'] = undefined; */ WorkerSignOn.prototype['software_version'] = undefined; +/** + * @member {Boolean} can_restart + */ +WorkerSignOn.prototype['can_restart'] = undefined; + diff --git a/web/app/src/manager-api/model/WorkerStatus.js b/web/app/src/manager-api/model/WorkerStatus.js index 6d778f1d..a78d9146 100644 --- a/web/app/src/manager-api/model/WorkerStatus.js +++ b/web/app/src/manager-api/model/WorkerStatus.js @@ -61,6 +61,13 @@ export default class WorkerStatus { "offline" = "offline"; + /** + * value: "restart" + * @const + */ + "restart" = "restart"; + + /** * Returns a WorkerStatus enum value from a Javascript object name. diff --git a/web/app/src/manager-api/model/WorkerSummary.js b/web/app/src/manager-api/model/WorkerSummary.js index 696aeaf0..e53c14eb 100644 --- a/web/app/src/manager-api/model/WorkerSummary.js +++ b/web/app/src/manager-api/model/WorkerSummary.js @@ -29,10 +29,11 @@ class WorkerSummary { * @param name {String} * @param status {module:model/WorkerStatus} * @param version {String} Version of Flamenco this Worker is running + * @param canRestart {Boolean} Whether this worker can auto-restart. */ - constructor(id, name, status, version) { + constructor(id, name, status, version, canRestart) { - WorkerSummary.initialize(this, id, name, status, version); + WorkerSummary.initialize(this, id, name, status, version, canRestart); } /** @@ -40,11 +41,12 @@ class WorkerSummary { * This method is used by the constructors of any subclasses, in order to implement multiple inheritance (mix-ins). * Only for internal use. */ - static initialize(obj, id, name, status, version) { + static initialize(obj, id, name, status, version, canRestart) { obj['id'] = id; obj['name'] = name; obj['status'] = status; obj['version'] = version; + obj['can_restart'] = canRestart; } /** @@ -76,6 +78,9 @@ class WorkerSummary { if (data.hasOwnProperty('version')) { obj['version'] = ApiClient.convertToType(data['version'], 'String'); } + if (data.hasOwnProperty('can_restart')) { + obj['can_restart'] = ApiClient.convertToType(data['can_restart'], 'Boolean'); + } } return obj; } @@ -115,6 +120,12 @@ WorkerSummary.prototype['last_seen'] = undefined; */ WorkerSummary.prototype['version'] = undefined; +/** + * Whether this worker can auto-restart. + * @member {Boolean} can_restart + */ +WorkerSummary.prototype['can_restart'] = undefined; +