From 9c6c0595207c696ae9d5fd4336d13ccacdefef85 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Sat, 11 May 2024 17:56:23 -0300 Subject: [PATCH 01/28] Manager: allow setup to finish without Blender Update the step where the Manager cannot find blender with an option to skip. If skipped, the end configuration file will have the blender variable set to just "blender". --- web/app/src/views/SetupAssistantView.vue | 78 ++++++++++++++++++------ 1 file changed, 60 insertions(+), 18 deletions(-) diff --git a/web/app/src/views/SetupAssistantView.vue b/web/app/src/views/SetupAssistantView.vue index 29d1751c..62d45c1d 100644 --- a/web/app/src/views/SetupAssistantView.vue +++ b/web/app/src/views/SetupAssistantView.vue @@ -101,7 +101,9 @@ v-show="currentSetupStep == 3" @next-clicked="nextStepAfterCheckBlenderExePath" @back-clicked="prevStep" - :is-next-clickable="selectedBlender != null || customBlenderExe != (null || '')" + :is-next-clickable=" + selectedBlender != null || customBlenderExe != (null || '') || skipCustomBlenderExe + " title="Blender">
Looking for Blender installs...
@@ -193,23 +195,48 @@ -
- +
+
+ + + + " as found on $PATH (currently "{{ selectedBlender.path }}") -
+
The command you provided: "{{ selectedBlender.path }}"
+
+ You have choosen to skip adding a blender path. +

@@ -286,6 +316,7 @@ export default { selectedBlender: null, // the chosen api.BlenderPathCheckResult customBlenderExe: '', + skipCustomBlenderExe: false, isBlenderExeChecking: false, blenderExeCheckResult: null, // api.BlenderPathCheckResult sourceLabels: { @@ -387,6 +418,17 @@ export default { }, checkBlenderExePath() { + if (this.skipCustomBlenderExe) { + this.selectedBlender = { + input: 'blender', + path: 'blender', + source: 'input_path', + is_usable: true, + cause: 'blender', + }; + return; + } + const exeToTry = this.cleanCustomBlenderExe; if (exeToTry == '') { // Just erase any previously-found custom Blender executable. -- 2.30.2 From 4cd8ed55210d15257f7cc51d2cbea19ff87d324d Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Thu, 16 May 2024 20:16:29 -0300 Subject: [PATCH 02/28] OAPI: Add default blender source --- pkg/api/flamenco-openapi.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/api/flamenco-openapi.yaml b/pkg/api/flamenco-openapi.yaml index 22b64271..7bdbbbab 100644 --- a/pkg/api/flamenco-openapi.yaml +++ b/pkg/api/flamenco-openapi.yaml @@ -1539,6 +1539,8 @@ components: - path_envvar # The input path was used as-is, as it points to an existing binary. - input_path + # The input path was not provided, use whatever blender is available. + - default WorkerRegistration: type: object -- 2.30.2 From 95734e41b411b52827c3231bab61502e6abdf152 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Thu, 16 May 2024 20:20:41 -0300 Subject: [PATCH 03/28] OAPI: Regenerate code --- .../manager/docs/BlenderPathSource.md | 2 +- .../manager/model/blender_path_source.py | 9 +- pkg/api/openapi_spec.gen.go | 392 +++++++++--------- pkg/api/openapi_types.gen.go | 2 + .../manager-api/model/BlenderPathSource.js | 7 + 5 files changed, 211 insertions(+), 201 deletions(-) diff --git a/addon/flamenco/manager/docs/BlenderPathSource.md b/addon/flamenco/manager/docs/BlenderPathSource.md index c0150a8a..67985dfd 100644 --- a/addon/flamenco/manager/docs/BlenderPathSource.md +++ b/addon/flamenco/manager/docs/BlenderPathSource.md @@ -4,7 +4,7 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**value** | **str** | | must be one of ["file_association", "path_envvar", "input_path", ] +**value** | **str** | | must be one of ["file_association", "path_envvar", "input_path", "default", ] [[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/blender_path_source.py b/addon/flamenco/manager/model/blender_path_source.py index 134c535b..e045544b 100644 --- a/addon/flamenco/manager/model/blender_path_source.py +++ b/addon/flamenco/manager/model/blender_path_source.py @@ -55,6 +55,7 @@ class BlenderPathSource(ModelSimple): 'FILE_ASSOCIATION': "file_association", 'PATH_ENVVAR': "path_envvar", 'INPUT_PATH': "input_path", + 'DEFAULT': "default", }, } @@ -106,10 +107,10 @@ class BlenderPathSource(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 ["file_association", "path_envvar", "input_path", ] # noqa: E501 + args[0] (str):, must be one of ["file_association", "path_envvar", "input_path", "default", ] # noqa: E501 Keyword Args: - value (str):, must be one of ["file_association", "path_envvar", "input_path", ] # noqa: E501 + value (str):, must be one of ["file_association", "path_envvar", "input_path", "default", ] # 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. @@ -196,10 +197,10 @@ class BlenderPathSource(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 ["file_association", "path_envvar", "input_path", ] # noqa: E501 + args[0] (str):, must be one of ["file_association", "path_envvar", "input_path", "default", ] # noqa: E501 Keyword Args: - value (str):, must be one of ["file_association", "path_envvar", "input_path", ] # noqa: E501 + value (str):, must be one of ["file_association", "path_envvar", "input_path", "default", ] # 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/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 11a214c4..3a406668 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -50,202 +50,202 @@ var swaggerSpec = []string{ "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", } // 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 80b49695..221e1cc2 100644 --- a/pkg/api/openapi_types.gen.go +++ b/pkg/api/openapi_types.gen.go @@ -48,6 +48,8 @@ const ( // Defines values for BlenderPathSource. const ( + BlenderPathSourceDefault BlenderPathSource = "default" + BlenderPathSourceFileAssociation BlenderPathSource = "file_association" BlenderPathSourceInputPath BlenderPathSource = "input_path" diff --git a/web/app/src/manager-api/model/BlenderPathSource.js b/web/app/src/manager-api/model/BlenderPathSource.js index 5d2a1366..3fd9b922 100644 --- a/web/app/src/manager-api/model/BlenderPathSource.js +++ b/web/app/src/manager-api/model/BlenderPathSource.js @@ -40,6 +40,13 @@ export default class BlenderPathSource { "input_path" = "input_path"; + /** + * value: "default" + * @const + */ + "default" = "default"; + + /** * Returns a BlenderPathSource enum value from a Javascript object name. -- 2.30.2 From 07988f872913491e38222372467d7e7e38d313c6 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Thu, 16 May 2024 22:01:29 -0300 Subject: [PATCH 04/28] Webapp: Refactor blender skip logic to use the new "default" source --- web/app/src/views/SetupAssistantView.vue | 52 +++++++++++------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/web/app/src/views/SetupAssistantView.vue b/web/app/src/views/SetupAssistantView.vue index 668ad211..a721e2b2 100644 --- a/web/app/src/views/SetupAssistantView.vue +++ b/web/app/src/views/SetupAssistantView.vue @@ -101,9 +101,7 @@ v-show="currentSetupStep == 3" @next-clicked="nextStepAfterCheckBlenderExePath" @back-clicked="prevStep" - :is-next-clickable=" - selectedBlender != null || customBlenderExe != '' || skipCustomBlenderExe - " + :is-next-clickable="selectedBlender != null || customBlenderExe != ''" title="Blender">

Looking for Blender installs...
@@ -196,15 +194,15 @@
-
@@ -263,11 +261,11 @@ >" as found on $PATH (currently "{{ selectedBlender.path }}") -
+
The command you provided: "{{ selectedBlender.path }}"
-
+
You have choosen to skip adding a blender path.
@@ -316,13 +314,13 @@ export default { selectedBlender: null, // the chosen api.BlenderPathCheckResult customBlenderExe: '', - skipCustomBlenderExe: false, isBlenderExeChecking: false, blenderExeCheckResult: null, // api.BlenderPathCheckResult sourceLabels: { file_association: 'Blender that runs when you double-click a .blend file:', path_envvar: 'Blender found on the $PATH environment:', - input_path: 'Another Blender executable:', + input_path: 'Specify a Blender executable:', + default: 'Skip, let the Workers use whatever Blender is available.', }, isConfirming: false, isConfirmed: false, @@ -355,6 +353,15 @@ export default { blenderFromInputPath() { return this.allBlenders.find((b) => b.source === 'input_path'); }, + blenderFromDefaultSource() { + return { + input: 'blender', + path: 'blender', + source: 'default', + is_usable: true, + cause: 'blender', + }; + }, setupConfirmIsClickable() { if (this.isConfirming || this.isConfirmed) { return false; @@ -418,17 +425,6 @@ export default { }, checkBlenderExePath() { - if (this.skipCustomBlenderExe) { - this.selectedBlender = { - input: 'blender', - path: 'blender', - source: 'input_path', - is_usable: true, - cause: 'blender', - }; - return; - } - const exeToTry = this.cleanCustomBlenderExe; if (exeToTry == '') { // Just erase any previously-found custom Blender executable. -- 2.30.2 From 0261e0f157d62443488dab444c1b9a1b9280bb6b Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 7 Jun 2024 19:02:39 -0300 Subject: [PATCH 05/28] OAPI: Regenerate code --- pkg/api/openapi_spec.gen.go | 392 ++++++++++++++++++------------------ 1 file changed, 196 insertions(+), 196 deletions(-) diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 671be5ea..09111db2 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -50,202 +50,202 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file -- 2.30.2 From 34d91a7797193d91abffbbe36a44e680b4393c18 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 7 Jun 2024 21:43:11 -0300 Subject: [PATCH 06/28] Implement handling for default source --- internal/manager/api_impl/meta.go | 8 +++++--- web/app/src/views/SetupAssistantView.vue | 6 +++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index 000bd5de..4fdb91b9 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -265,9 +265,11 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() - if setupAssistantCfg.StorageLocation == "" || + isConfigIncomplete := setupAssistantCfg.StorageLocation == "" || !setupAssistantCfg.BlenderExecutable.IsUsable || - setupAssistantCfg.BlenderExecutable.Path == "" { + setupAssistantCfg.BlenderExecutable.Path == "" + + if isConfigIncomplete && setupAssistantCfg.BlenderExecutable.Source != "default" { logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept") return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete") } @@ -277,7 +279,7 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { var executable string switch setupAssistantCfg.BlenderExecutable.Source { - case api.BlenderPathSourceFileAssociation: + case api.BlenderPathSourceFileAssociation, api.BlenderPathSourceDefault: // The Worker will try to use the file association when the command is set // to the string "blender". executable = "blender" diff --git a/web/app/src/views/SetupAssistantView.vue b/web/app/src/views/SetupAssistantView.vue index a721e2b2..80622907 100644 --- a/web/app/src/views/SetupAssistantView.vue +++ b/web/app/src/views/SetupAssistantView.vue @@ -355,11 +355,11 @@ export default { }, blenderFromDefaultSource() { return { - input: 'blender', - path: 'blender', + input: '', + path: '', source: 'default', is_usable: true, - cause: 'blender', + cause: '', }; }, setupConfirmIsClickable() { -- 2.30.2 From a229360d921bde41c0e160195287ec6886181fe6 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 21 Jun 2024 19:38:54 -0300 Subject: [PATCH 07/28] OAPI: Make only source required in BlenderPathCheckResult --- pkg/api/flamenco-openapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/api/flamenco-openapi.yaml b/pkg/api/flamenco-openapi.yaml index c2eab16f..58d3fada 100644 --- a/pkg/api/flamenco-openapi.yaml +++ b/pkg/api/flamenco-openapi.yaml @@ -1527,7 +1527,7 @@ components: "cause": description: Description of why this path is (not) usable. type: string - required: [input, path, source, is_usable, cause] + required: [source] BlenderPathSource: type: string -- 2.30.2 From 1f1f5ff5f4d4467eff35bec84df5f6373a92615b Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 21 Jun 2024 19:41:09 -0300 Subject: [PATCH 08/28] OAPI: Regenerate code --- .../manager/docs/BlenderPathCheckResult.md | 8 +- .../model/blender_path_check_result.py | 32 +- pkg/api/openapi_spec.gen.go | 394 +++++++++--------- pkg/api/openapi_types.gen.go | 8 +- .../model/BlenderPathCheckResult.js | 14 +- 5 files changed, 220 insertions(+), 236 deletions(-) diff --git a/addon/flamenco/manager/docs/BlenderPathCheckResult.md b/addon/flamenco/manager/docs/BlenderPathCheckResult.md index a21772f3..2e173697 100644 --- a/addon/flamenco/manager/docs/BlenderPathCheckResult.md +++ b/addon/flamenco/manager/docs/BlenderPathCheckResult.md @@ -4,11 +4,11 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- -**input** | **str** | The input that was given to find this Blender. | -**path** | **str** | The path that was found. | **source** | [**BlenderPathSource**](BlenderPathSource.md) | | -**is_usable** | **bool** | Whether the path is usable or not. | -**cause** | **str** | Description of why this path is (not) usable. | +**input** | **str** | The input that was given to find this Blender. | [optional] +**path** | **str** | The path that was found. | [optional] +**is_usable** | **bool** | Whether the path is usable or not. | [optional] +**cause** | **str** | Description of why this path is (not) usable. | [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/blender_path_check_result.py b/addon/flamenco/manager/model/blender_path_check_result.py index 8256064d..22b252ae 100644 --- a/addon/flamenco/manager/model/blender_path_check_result.py +++ b/addon/flamenco/manager/model/blender_path_check_result.py @@ -87,9 +87,9 @@ class BlenderPathCheckResult(ModelNormal): """ lazy_import() return { + 'source': (BlenderPathSource,), # noqa: E501 'input': (str,), # noqa: E501 'path': (str,), # noqa: E501 - 'source': (BlenderPathSource,), # noqa: E501 'is_usable': (bool,), # noqa: E501 'cause': (str,), # noqa: E501 } @@ -100,9 +100,9 @@ class BlenderPathCheckResult(ModelNormal): attribute_map = { + 'source': 'source', # noqa: E501 'input': 'input', # noqa: E501 'path': 'path', # noqa: E501 - 'source': 'source', # noqa: E501 'is_usable': 'is_usable', # noqa: E501 'cause': 'cause', # noqa: E501 } @@ -114,15 +114,11 @@ class BlenderPathCheckResult(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, input, path, source, is_usable, cause, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, source, *args, **kwargs): # noqa: E501 """BlenderPathCheckResult - a model defined in OpenAPI Args: - input (str): The input that was given to find this Blender. - path (str): The path that was found. source (BlenderPathSource): - 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 @@ -155,6 +151,10 @@ class BlenderPathCheckResult(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + input (str): The input that was given to find this Blender.. [optional] # noqa: E501 + path (str): The path that was found.. [optional] # noqa: E501 + is_usable (bool): Whether the path is usable or not.. [optional] # noqa: E501 + cause (str): Description of why this path is (not) usable.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -182,11 +182,7 @@ class BlenderPathCheckResult(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.input = input - self.path = path self.source = source - 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 \ @@ -207,15 +203,11 @@ class BlenderPathCheckResult(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, input, path, source, is_usable, cause, *args, **kwargs): # noqa: E501 + def __init__(self, source, *args, **kwargs): # noqa: E501 """BlenderPathCheckResult - a model defined in OpenAPI Args: - input (str): The input that was given to find this Blender. - path (str): The path that was found. source (BlenderPathSource): - 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 @@ -248,6 +240,10 @@ class BlenderPathCheckResult(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) + input (str): The input that was given to find this Blender.. [optional] # noqa: E501 + path (str): The path that was found.. [optional] # noqa: E501 + is_usable (bool): Whether the path is usable or not.. [optional] # noqa: E501 + cause (str): Description of why this path is (not) usable.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -273,11 +269,7 @@ class BlenderPathCheckResult(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) - self.input = input - self.path = path self.source = source - 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 \ diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 09111db2..9984284f 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -49,203 +49,203 @@ var swaggerSpec = []string{ "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", } // 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 221e1cc2..e0c74147 100644 --- a/pkg/api/openapi_types.gen.go +++ b/pkg/api/openapi_types.gen.go @@ -265,16 +265,16 @@ type AvailableJobTypes struct { // BlenderPathCheckResult defines model for BlenderPathCheckResult. type BlenderPathCheckResult struct { // Description of why this path is (not) usable. - Cause string `json:"cause"` + Cause *string `json:"cause,omitempty"` // The input that was given to find this Blender. - Input string `json:"input"` + Input *string `json:"input,omitempty"` // Whether the path is usable or not. - IsUsable bool `json:"is_usable"` + IsUsable *bool `json:"is_usable,omitempty"` // The path that was found. - Path string `json:"path"` + Path *string `json:"path,omitempty"` Source BlenderPathSource `json:"source"` } diff --git a/web/app/src/manager-api/model/BlenderPathCheckResult.js b/web/app/src/manager-api/model/BlenderPathCheckResult.js index 8e545f86..2bcec7c3 100644 --- a/web/app/src/manager-api/model/BlenderPathCheckResult.js +++ b/web/app/src/manager-api/model/BlenderPathCheckResult.js @@ -23,15 +23,11 @@ class BlenderPathCheckResult { /** * Constructs a new BlenderPathCheckResult. * @alias module:model/BlenderPathCheckResult - * @param input {String} The input that was given to find this Blender. - * @param path {String} The path that was found. * @param source {module:model/BlenderPathSource} - * @param isUsable {Boolean} Whether the path is usable or not. - * @param cause {String} Description of why this path is (not) usable. */ - constructor(input, path, source, isUsable, cause) { + constructor(source) { - BlenderPathCheckResult.initialize(this, input, path, source, isUsable, cause); + BlenderPathCheckResult.initialize(this, source); } /** @@ -39,12 +35,8 @@ class BlenderPathCheckResult { * 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, input, path, source, isUsable, cause) { - obj['input'] = input; - obj['path'] = path; + static initialize(obj, source) { obj['source'] = source; - obj['is_usable'] = isUsable; - obj['cause'] = cause; } /** -- 2.30.2 From d5148f24e1f4ee39f5de30a8d3f029cda5174ce1 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 21 Jun 2024 19:42:27 -0300 Subject: [PATCH 09/28] Webapp: Reduce the Setup Assistant API payload for 'default' source --- web/app/src/views/SetupAssistantView.vue | 3 --- 1 file changed, 3 deletions(-) diff --git a/web/app/src/views/SetupAssistantView.vue b/web/app/src/views/SetupAssistantView.vue index 80622907..27a5dd6e 100644 --- a/web/app/src/views/SetupAssistantView.vue +++ b/web/app/src/views/SetupAssistantView.vue @@ -355,11 +355,8 @@ export default { }, blenderFromDefaultSource() { return { - input: '', - path: '', source: 'default', is_usable: true, - cause: '', }; }, setupConfirmIsClickable() { -- 2.30.2 From c6888518d6f7e33dc9c483782f8ac2a82fbe639d Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 21 Jun 2024 19:48:43 -0300 Subject: [PATCH 10/28] Manager: Update API operation for optional fields from Setup Assistant --- internal/manager/api_impl/meta.go | 60 ++++++++++++++++++------------- 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index 4fdb91b9..edbc0211 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -182,11 +182,12 @@ func (f *Flamenco) FindBlenderExePath(e echo.Context) error { logger.Warn().AnErr("cause", err).Msg("there was an issue finding Blender") return sendAPIError(e, http.StatusInternalServerError, "there was an issue finding Blender: %v", err) default: + isUsable := true response = append(response, api.BlenderPathCheckResult{ - IsUsable: true, - Input: result.Input, - Path: result.FoundLocation, - Cause: result.BlenderVersion, + IsUsable: &isUsable, + Input: &result.Input, + Path: &result.FoundLocation, + Cause: &result.BlenderVersion, Source: result.Source, }) } @@ -200,11 +201,12 @@ func (f *Flamenco) FindBlenderExePath(e echo.Context) error { case err != nil: logger.Info().AnErr("cause", err).Msg("there was an issue finding Blender as 'blender' on $PATH") default: + isUsable := true response = append(response, api.BlenderPathCheckResult{ - IsUsable: true, - Input: result.Input, - Path: result.FoundLocation, - Cause: result.BlenderVersion, + IsUsable: &isUsable, + Input: &result.Input, + Path: &result.FoundLocation, + Cause: &result.BlenderVersion, Source: result.Source, }) } @@ -223,32 +225,39 @@ func (f *Flamenco) CheckBlenderExePath(e echo.Context) error { } command := toCheck.Path + var cause string + var isUsable bool + var path string + logger = logger.With().Str("command", command).Logger() logger.Info().Msg("checking whether this command leads to Blender") ctx := e.Request().Context() checkResult, err := find_blender.CheckBlender(ctx, command) response := api.BlenderPathCheckResult{ - Input: command, - Source: checkResult.Source, + Input: &command, + Source: checkResult.Source, + Path: &path, + IsUsable: &isUsable, + Cause: &cause, } switch { case errors.Is(err, exec.ErrNotFound): - response.Cause = "Blender could not be found" + *response.Cause = "Blender could not be found" case err != nil: - response.Cause = fmt.Sprintf("There was an error running the command: %v", err) + *response.Cause = fmt.Sprintf("There was an error running the command: %v", err) default: - response.IsUsable = true - response.Path = checkResult.FoundLocation - response.Cause = fmt.Sprintf("Found %v", checkResult.BlenderVersion) + *response.IsUsable = true + *response.Path = checkResult.FoundLocation + *response.Cause = fmt.Sprintf("Found %v", checkResult.BlenderVersion) } logger.Info(). - Str("input", response.Input). - Str("foundLocation", response.Path). - Str("result", response.Cause). - Bool("isUsable", response.IsUsable). + Str("input", *response.Input). + Str("foundLocation", *response.Path). + Str("result", *response.Cause). + Bool("isUsable", *response.IsUsable). Msg("result of command check") return e.JSON(http.StatusOK, response) @@ -265,11 +274,12 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() - isConfigIncomplete := setupAssistantCfg.StorageLocation == "" || - !setupAssistantCfg.BlenderExecutable.IsUsable || - setupAssistantCfg.BlenderExecutable.Path == "" + isConfigIncomplete := setupAssistantCfg.BlenderExecutable.Cause == nil || + setupAssistantCfg.BlenderExecutable.Input == nil || + setupAssistantCfg.BlenderExecutable.IsUsable == nil || + setupAssistantCfg.BlenderExecutable.Path == nil - if isConfigIncomplete && setupAssistantCfg.BlenderExecutable.Source != "default" { + if setupAssistantCfg.BlenderExecutable.Source != "default" && isConfigIncomplete { logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept") return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete") } @@ -286,10 +296,10 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { case api.BlenderPathSourcePathEnvvar: // The input command can be found on $PATH, and thus we don't need to save // the absolute path to Blender here. - executable = setupAssistantCfg.BlenderExecutable.Input + executable = *setupAssistantCfg.BlenderExecutable.Input case api.BlenderPathSourceInputPath: // The path should be used as-is. - executable = setupAssistantCfg.BlenderExecutable.Path + executable = *setupAssistantCfg.BlenderExecutable.Path } if commandNeedsQuoting(executable) { executable = strconv.Quote(executable) -- 2.30.2 From 30aa46862138ae71f85e1144db4cea01c5b4bfb5 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Sun, 23 Jun 2024 17:43:29 -0300 Subject: [PATCH 11/28] Manager: Fix conditional statement edge case --- internal/manager/api_impl/meta.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index edbc0211..c7387600 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -274,14 +274,15 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() - isConfigIncomplete := setupAssistantCfg.BlenderExecutable.Cause == nil || - setupAssistantCfg.BlenderExecutable.Input == nil || - setupAssistantCfg.BlenderExecutable.IsUsable == nil || - setupAssistantCfg.BlenderExecutable.Path == nil + isConfigInvalid := setupAssistantCfg.StorageLocation == "" || + setupAssistantCfg.BlenderExecutable.IsUsable == nil - if setupAssistantCfg.BlenderExecutable.Source != "default" && isConfigIncomplete { - logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept") - return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete") + isConfigIncomplete := setupAssistantCfg.BlenderExecutable.Path == nil || + setupAssistantCfg.BlenderExecutable.Input == nil + + if isConfigInvalid || setupAssistantCfg.BlenderExecutable.Source != "default" && isConfigIncomplete { + logger.Warn().Msg("setup assistant: configuration is invalid or incomplete, unable to accept") + return sendAPIError(e, http.StatusBadRequest, "configuration is invalid or incomplete") } conf := f.config.Get() -- 2.30.2 From 50d113db4f6a3d0dbc16d5fb5c88f09dd4e2418d Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Sun, 23 Jun 2024 17:47:12 -0300 Subject: [PATCH 12/28] Manager tests: Update and include new test for 'default' blender source --- internal/manager/api_impl/meta_test.go | 86 ++++++++++++++++++++++---- 1 file changed, 74 insertions(+), 12 deletions(-) diff --git a/internal/manager/api_impl/meta_test.go b/internal/manager/api_impl/meta_test.go index 78581804..a2d6f43b 100644 --- a/internal/manager/api_impl/meta_test.go +++ b/internal/manager/api_impl/meta_test.go @@ -297,13 +297,25 @@ func TestSaveSetupAssistantConfig(t *testing.T) { // Test situation where file association with .blend files resulted in a blender executable. { + mockedPayload := struct { + IsUsable bool + Input string + Path string + Source api.BlenderPathSource + }{ + IsUsable: true, + Input: "", + Path: "/path/to/blender", + Source: api.BlenderPathSourceFileAssociation, + } + savedConfig := doTest(api.SetupAssistantConfig{ StorageLocation: mf.tempdir, BlenderExecutable: api.BlenderPathCheckResult{ - IsUsable: true, - Input: "", - Path: "/path/to/blender", - Source: api.BlenderPathSourceFileAssociation, + IsUsable: &mockedPayload.IsUsable, + Input: &mockedPayload.Input, + Path: &mockedPayload.Path, + Source: mockedPayload.Source, }, }) assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) @@ -320,13 +332,24 @@ func TestSaveSetupAssistantConfig(t *testing.T) { // Test situation where the given command could be found on $PATH. { + mockedPayload := struct { + IsUsable bool + Input string + Path string + Source api.BlenderPathSource + }{ + IsUsable: true, + Input: "kitty", + Path: "/path/to/kitty", + Source: api.BlenderPathSourcePathEnvvar, + } savedConfig := doTest(api.SetupAssistantConfig{ StorageLocation: mf.tempdir, BlenderExecutable: api.BlenderPathCheckResult{ - IsUsable: true, - Input: "kitty", - Path: "/path/to/kitty", - Source: api.BlenderPathSourcePathEnvvar, + IsUsable: &mockedPayload.IsUsable, + Input: &mockedPayload.Input, + Path: &mockedPayload.Path, + Source: mockedPayload.Source, }, }) assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) @@ -343,13 +366,24 @@ func TestSaveSetupAssistantConfig(t *testing.T) { // Test a custom command given with the full path. { + mockedPayload := struct { + IsUsable bool + Input string + Path string + Source api.BlenderPathSource + }{ + IsUsable: true, + Input: "/bin/cat", + Path: "/bin/cat", + Source: api.BlenderPathSourceInputPath, + } savedConfig := doTest(api.SetupAssistantConfig{ StorageLocation: mf.tempdir, BlenderExecutable: api.BlenderPathCheckResult{ - IsUsable: true, - Input: "/bin/cat", - Path: "/bin/cat", - Source: api.BlenderPathSourceInputPath, + IsUsable: &mockedPayload.IsUsable, + Input: &mockedPayload.Input, + Path: &mockedPayload.Path, + Source: mockedPayload.Source, }, }) assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) @@ -363,6 +397,34 @@ func TestSaveSetupAssistantConfig(t *testing.T) { assert.Equal(t, expectBlenderVar, savedConfig.Variables["blender"]) assert.Equal(t, defaultBlenderArgsVar, savedConfig.Variables["blenderArgs"]) } + + // Test situation where adding a blender executable was skipped. + { + mockedPayload := struct { + IsUsable bool + Source api.BlenderPathSource + }{ + IsUsable: true, + Source: api.BlenderPathSourceDefault, + } + savedConfig := doTest(api.SetupAssistantConfig{ + StorageLocation: mf.tempdir, + BlenderExecutable: api.BlenderPathCheckResult{ + IsUsable: &mockedPayload.IsUsable, + Source: mockedPayload.Source, + }, + }) + assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) + expectBlenderVar := config.Variable{ + Values: config.VariableValues{ + {Platform: "linux", Value: "blender"}, + {Platform: "windows", Value: "blender"}, + {Platform: "darwin", Value: "blender"}, + }, + } + assert.Equal(t, expectBlenderVar, savedConfig.Variables["blender"]) + assert.Equal(t, defaultBlenderArgsVar, savedConfig.Variables["blenderArgs"]) + } } func metaTestFixtures(t *testing.T) (mockedFlamenco, func()) { -- 2.30.2 From 5c95eede16f5c9723121dd29239f4ae4f09c2d84 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 28 Jun 2024 20:09:02 -0300 Subject: [PATCH 13/28] Revert "OAPI: Make only source required in BlenderPathCheckResult" This reverts commit a229360d921bde41c0e160195287ec6886181fe6. --- pkg/api/flamenco-openapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/api/flamenco-openapi.yaml b/pkg/api/flamenco-openapi.yaml index 58d3fada..c2eab16f 100644 --- a/pkg/api/flamenco-openapi.yaml +++ b/pkg/api/flamenco-openapi.yaml @@ -1527,7 +1527,7 @@ components: "cause": description: Description of why this path is (not) usable. type: string - required: [source] + required: [input, path, source, is_usable, cause] BlenderPathSource: type: string -- 2.30.2 From 6d745ce0b45b54be3b043a96991de034b8d8e95e Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 28 Jun 2024 20:11:07 -0300 Subject: [PATCH 14/28] Revert "Manager: Update API operation for optional fields from Setup Assistant" This reverts commit c6888518d6f7e33dc9c483782f8ac2a82fbe639d. --- internal/manager/api_impl/meta.go | 65 +++++++++++++------------------ 1 file changed, 27 insertions(+), 38 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index c7387600..4fdb91b9 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -182,12 +182,11 @@ func (f *Flamenco) FindBlenderExePath(e echo.Context) error { logger.Warn().AnErr("cause", err).Msg("there was an issue finding Blender") return sendAPIError(e, http.StatusInternalServerError, "there was an issue finding Blender: %v", err) default: - isUsable := true response = append(response, api.BlenderPathCheckResult{ - IsUsable: &isUsable, - Input: &result.Input, - Path: &result.FoundLocation, - Cause: &result.BlenderVersion, + IsUsable: true, + Input: result.Input, + Path: result.FoundLocation, + Cause: result.BlenderVersion, Source: result.Source, }) } @@ -201,12 +200,11 @@ func (f *Flamenco) FindBlenderExePath(e echo.Context) error { case err != nil: logger.Info().AnErr("cause", err).Msg("there was an issue finding Blender as 'blender' on $PATH") default: - isUsable := true response = append(response, api.BlenderPathCheckResult{ - IsUsable: &isUsable, - Input: &result.Input, - Path: &result.FoundLocation, - Cause: &result.BlenderVersion, + IsUsable: true, + Input: result.Input, + Path: result.FoundLocation, + Cause: result.BlenderVersion, Source: result.Source, }) } @@ -225,39 +223,32 @@ func (f *Flamenco) CheckBlenderExePath(e echo.Context) error { } command := toCheck.Path - var cause string - var isUsable bool - var path string - logger = logger.With().Str("command", command).Logger() logger.Info().Msg("checking whether this command leads to Blender") ctx := e.Request().Context() checkResult, err := find_blender.CheckBlender(ctx, command) response := api.BlenderPathCheckResult{ - Input: &command, - Source: checkResult.Source, - Path: &path, - IsUsable: &isUsable, - Cause: &cause, + Input: command, + Source: checkResult.Source, } switch { case errors.Is(err, exec.ErrNotFound): - *response.Cause = "Blender could not be found" + response.Cause = "Blender could not be found" case err != nil: - *response.Cause = fmt.Sprintf("There was an error running the command: %v", err) + response.Cause = fmt.Sprintf("There was an error running the command: %v", err) default: - *response.IsUsable = true - *response.Path = checkResult.FoundLocation - *response.Cause = fmt.Sprintf("Found %v", checkResult.BlenderVersion) + response.IsUsable = true + response.Path = checkResult.FoundLocation + response.Cause = fmt.Sprintf("Found %v", checkResult.BlenderVersion) } logger.Info(). - Str("input", *response.Input). - Str("foundLocation", *response.Path). - Str("result", *response.Cause). - Bool("isUsable", *response.IsUsable). + Str("input", response.Input). + Str("foundLocation", response.Path). + Str("result", response.Cause). + Bool("isUsable", response.IsUsable). Msg("result of command check") return e.JSON(http.StatusOK, response) @@ -274,15 +265,13 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() - isConfigInvalid := setupAssistantCfg.StorageLocation == "" || - setupAssistantCfg.BlenderExecutable.IsUsable == nil + isConfigIncomplete := setupAssistantCfg.StorageLocation == "" || + !setupAssistantCfg.BlenderExecutable.IsUsable || + setupAssistantCfg.BlenderExecutable.Path == "" - isConfigIncomplete := setupAssistantCfg.BlenderExecutable.Path == nil || - setupAssistantCfg.BlenderExecutable.Input == nil - - if isConfigInvalid || setupAssistantCfg.BlenderExecutable.Source != "default" && isConfigIncomplete { - logger.Warn().Msg("setup assistant: configuration is invalid or incomplete, unable to accept") - return sendAPIError(e, http.StatusBadRequest, "configuration is invalid or incomplete") + if isConfigIncomplete && setupAssistantCfg.BlenderExecutable.Source != "default" { + logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept") + return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete") } conf := f.config.Get() @@ -297,10 +286,10 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { case api.BlenderPathSourcePathEnvvar: // The input command can be found on $PATH, and thus we don't need to save // the absolute path to Blender here. - executable = *setupAssistantCfg.BlenderExecutable.Input + executable = setupAssistantCfg.BlenderExecutable.Input case api.BlenderPathSourceInputPath: // The path should be used as-is. - executable = *setupAssistantCfg.BlenderExecutable.Path + executable = setupAssistantCfg.BlenderExecutable.Path } if commandNeedsQuoting(executable) { executable = strconv.Quote(executable) -- 2.30.2 From dc48a713e62652553ad179bed992ca63316b3be4 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 28 Jun 2024 20:11:30 -0300 Subject: [PATCH 15/28] Revert "Manager tests: Update and include new test for 'default' blender source" This reverts commit 50d113db4f6a3d0dbc16d5fb5c88f09dd4e2418d. --- internal/manager/api_impl/meta_test.go | 86 ++++---------------------- 1 file changed, 12 insertions(+), 74 deletions(-) diff --git a/internal/manager/api_impl/meta_test.go b/internal/manager/api_impl/meta_test.go index a2d6f43b..78581804 100644 --- a/internal/manager/api_impl/meta_test.go +++ b/internal/manager/api_impl/meta_test.go @@ -297,25 +297,13 @@ func TestSaveSetupAssistantConfig(t *testing.T) { // Test situation where file association with .blend files resulted in a blender executable. { - mockedPayload := struct { - IsUsable bool - Input string - Path string - Source api.BlenderPathSource - }{ - IsUsable: true, - Input: "", - Path: "/path/to/blender", - Source: api.BlenderPathSourceFileAssociation, - } - savedConfig := doTest(api.SetupAssistantConfig{ StorageLocation: mf.tempdir, BlenderExecutable: api.BlenderPathCheckResult{ - IsUsable: &mockedPayload.IsUsable, - Input: &mockedPayload.Input, - Path: &mockedPayload.Path, - Source: mockedPayload.Source, + IsUsable: true, + Input: "", + Path: "/path/to/blender", + Source: api.BlenderPathSourceFileAssociation, }, }) assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) @@ -332,24 +320,13 @@ func TestSaveSetupAssistantConfig(t *testing.T) { // Test situation where the given command could be found on $PATH. { - mockedPayload := struct { - IsUsable bool - Input string - Path string - Source api.BlenderPathSource - }{ - IsUsable: true, - Input: "kitty", - Path: "/path/to/kitty", - Source: api.BlenderPathSourcePathEnvvar, - } savedConfig := doTest(api.SetupAssistantConfig{ StorageLocation: mf.tempdir, BlenderExecutable: api.BlenderPathCheckResult{ - IsUsable: &mockedPayload.IsUsable, - Input: &mockedPayload.Input, - Path: &mockedPayload.Path, - Source: mockedPayload.Source, + IsUsable: true, + Input: "kitty", + Path: "/path/to/kitty", + Source: api.BlenderPathSourcePathEnvvar, }, }) assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) @@ -366,24 +343,13 @@ func TestSaveSetupAssistantConfig(t *testing.T) { // Test a custom command given with the full path. { - mockedPayload := struct { - IsUsable bool - Input string - Path string - Source api.BlenderPathSource - }{ - IsUsable: true, - Input: "/bin/cat", - Path: "/bin/cat", - Source: api.BlenderPathSourceInputPath, - } savedConfig := doTest(api.SetupAssistantConfig{ StorageLocation: mf.tempdir, BlenderExecutable: api.BlenderPathCheckResult{ - IsUsable: &mockedPayload.IsUsable, - Input: &mockedPayload.Input, - Path: &mockedPayload.Path, - Source: mockedPayload.Source, + IsUsable: true, + Input: "/bin/cat", + Path: "/bin/cat", + Source: api.BlenderPathSourceInputPath, }, }) assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) @@ -397,34 +363,6 @@ func TestSaveSetupAssistantConfig(t *testing.T) { assert.Equal(t, expectBlenderVar, savedConfig.Variables["blender"]) assert.Equal(t, defaultBlenderArgsVar, savedConfig.Variables["blenderArgs"]) } - - // Test situation where adding a blender executable was skipped. - { - mockedPayload := struct { - IsUsable bool - Source api.BlenderPathSource - }{ - IsUsable: true, - Source: api.BlenderPathSourceDefault, - } - savedConfig := doTest(api.SetupAssistantConfig{ - StorageLocation: mf.tempdir, - BlenderExecutable: api.BlenderPathCheckResult{ - IsUsable: &mockedPayload.IsUsable, - Source: mockedPayload.Source, - }, - }) - assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) - expectBlenderVar := config.Variable{ - Values: config.VariableValues{ - {Platform: "linux", Value: "blender"}, - {Platform: "windows", Value: "blender"}, - {Platform: "darwin", Value: "blender"}, - }, - } - assert.Equal(t, expectBlenderVar, savedConfig.Variables["blender"]) - assert.Equal(t, defaultBlenderArgsVar, savedConfig.Variables["blenderArgs"]) - } } func metaTestFixtures(t *testing.T) (mockedFlamenco, func()) { -- 2.30.2 From a861ddb710d8262cb8574a3b59b651178c28255a Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 28 Jun 2024 20:13:01 -0300 Subject: [PATCH 16/28] Revert "Webapp: Reduce the Setup Assistant API payload for 'default' source" This reverts commit d5148f24e1f4ee39f5de30a8d3f029cda5174ce1. --- web/app/src/views/SetupAssistantView.vue | 3 +++ 1 file changed, 3 insertions(+) diff --git a/web/app/src/views/SetupAssistantView.vue b/web/app/src/views/SetupAssistantView.vue index 27a5dd6e..80622907 100644 --- a/web/app/src/views/SetupAssistantView.vue +++ b/web/app/src/views/SetupAssistantView.vue @@ -355,8 +355,11 @@ export default { }, blenderFromDefaultSource() { return { + input: '', + path: '', source: 'default', is_usable: true, + cause: '', }; }, setupConfirmIsClickable() { -- 2.30.2 From b8def30d0bf23f429468983ea27c7c9f91ea80b3 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Fri, 28 Jun 2024 20:14:25 -0300 Subject: [PATCH 17/28] OAPI: Regenerate code --- .../manager/docs/BlenderPathCheckResult.md | 8 +- .../model/blender_path_check_result.py | 32 +- pkg/api/openapi_spec.gen.go | 394 +++++++++--------- pkg/api/openapi_types.gen.go | 8 +- .../model/BlenderPathCheckResult.js | 14 +- 5 files changed, 236 insertions(+), 220 deletions(-) diff --git a/addon/flamenco/manager/docs/BlenderPathCheckResult.md b/addon/flamenco/manager/docs/BlenderPathCheckResult.md index 2e173697..a21772f3 100644 --- a/addon/flamenco/manager/docs/BlenderPathCheckResult.md +++ b/addon/flamenco/manager/docs/BlenderPathCheckResult.md @@ -4,11 +4,11 @@ ## Properties Name | Type | Description | Notes ------------ | ------------- | ------------- | ------------- +**input** | **str** | The input that was given to find this Blender. | +**path** | **str** | The path that was found. | **source** | [**BlenderPathSource**](BlenderPathSource.md) | | -**input** | **str** | The input that was given to find this Blender. | [optional] -**path** | **str** | The path that was found. | [optional] -**is_usable** | **bool** | Whether the path is usable or not. | [optional] -**cause** | **str** | Description of why this path is (not) usable. | [optional] +**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) diff --git a/addon/flamenco/manager/model/blender_path_check_result.py b/addon/flamenco/manager/model/blender_path_check_result.py index 22b252ae..8256064d 100644 --- a/addon/flamenco/manager/model/blender_path_check_result.py +++ b/addon/flamenco/manager/model/blender_path_check_result.py @@ -87,9 +87,9 @@ class BlenderPathCheckResult(ModelNormal): """ lazy_import() return { - 'source': (BlenderPathSource,), # noqa: E501 'input': (str,), # noqa: E501 'path': (str,), # noqa: E501 + 'source': (BlenderPathSource,), # noqa: E501 'is_usable': (bool,), # noqa: E501 'cause': (str,), # noqa: E501 } @@ -100,9 +100,9 @@ class BlenderPathCheckResult(ModelNormal): attribute_map = { - 'source': 'source', # noqa: E501 'input': 'input', # noqa: E501 'path': 'path', # noqa: E501 + 'source': 'source', # noqa: E501 'is_usable': 'is_usable', # noqa: E501 'cause': 'cause', # noqa: E501 } @@ -114,11 +114,15 @@ class BlenderPathCheckResult(ModelNormal): @classmethod @convert_js_args_to_python_args - def _from_openapi_data(cls, source, *args, **kwargs): # noqa: E501 + def _from_openapi_data(cls, input, path, source, is_usable, cause, *args, **kwargs): # noqa: E501 """BlenderPathCheckResult - a model defined in OpenAPI Args: + input (str): The input that was given to find this Blender. + path (str): The path that was found. source (BlenderPathSource): + 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 @@ -151,10 +155,6 @@ class BlenderPathCheckResult(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - input (str): The input that was given to find this Blender.. [optional] # noqa: E501 - path (str): The path that was found.. [optional] # noqa: E501 - is_usable (bool): Whether the path is usable or not.. [optional] # noqa: E501 - cause (str): Description of why this path is (not) usable.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -182,7 +182,11 @@ class BlenderPathCheckResult(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.input = input + self.path = path self.source = source + 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 \ @@ -203,11 +207,15 @@ class BlenderPathCheckResult(ModelNormal): ]) @convert_js_args_to_python_args - def __init__(self, source, *args, **kwargs): # noqa: E501 + def __init__(self, input, path, source, is_usable, cause, *args, **kwargs): # noqa: E501 """BlenderPathCheckResult - a model defined in OpenAPI Args: + input (str): The input that was given to find this Blender. + path (str): The path that was found. source (BlenderPathSource): + 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 @@ -240,10 +248,6 @@ class BlenderPathCheckResult(ModelNormal): Animal class but this time we won't travel through its discriminator because we passed in _visited_composed_classes = (Animal,) - input (str): The input that was given to find this Blender.. [optional] # noqa: E501 - path (str): The path that was found.. [optional] # noqa: E501 - is_usable (bool): Whether the path is usable or not.. [optional] # noqa: E501 - cause (str): Description of why this path is (not) usable.. [optional] # noqa: E501 """ _check_type = kwargs.pop('_check_type', True) @@ -269,7 +273,11 @@ class BlenderPathCheckResult(ModelNormal): self._configuration = _configuration self._visited_composed_classes = _visited_composed_classes + (self.__class__,) + self.input = input + self.path = path self.source = source + 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 \ diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 9984284f..09111db2 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -49,203 +49,203 @@ var swaggerSpec = []string{ "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", } // 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 e0c74147..221e1cc2 100644 --- a/pkg/api/openapi_types.gen.go +++ b/pkg/api/openapi_types.gen.go @@ -265,16 +265,16 @@ type AvailableJobTypes struct { // BlenderPathCheckResult defines model for BlenderPathCheckResult. type BlenderPathCheckResult struct { // Description of why this path is (not) usable. - Cause *string `json:"cause,omitempty"` + Cause string `json:"cause"` // The input that was given to find this Blender. - Input *string `json:"input,omitempty"` + Input string `json:"input"` // Whether the path is usable or not. - IsUsable *bool `json:"is_usable,omitempty"` + IsUsable bool `json:"is_usable"` // The path that was found. - Path *string `json:"path,omitempty"` + Path string `json:"path"` Source BlenderPathSource `json:"source"` } diff --git a/web/app/src/manager-api/model/BlenderPathCheckResult.js b/web/app/src/manager-api/model/BlenderPathCheckResult.js index 2bcec7c3..8e545f86 100644 --- a/web/app/src/manager-api/model/BlenderPathCheckResult.js +++ b/web/app/src/manager-api/model/BlenderPathCheckResult.js @@ -23,11 +23,15 @@ class BlenderPathCheckResult { /** * Constructs a new BlenderPathCheckResult. * @alias module:model/BlenderPathCheckResult + * @param input {String} The input that was given to find this Blender. + * @param path {String} The path that was found. * @param source {module:model/BlenderPathSource} + * @param isUsable {Boolean} Whether the path is usable or not. + * @param cause {String} Description of why this path is (not) usable. */ - constructor(source) { + constructor(input, path, source, isUsable, cause) { - BlenderPathCheckResult.initialize(this, source); + BlenderPathCheckResult.initialize(this, input, path, source, isUsable, cause); } /** @@ -35,8 +39,12 @@ class BlenderPathCheckResult { * 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, source) { + static initialize(obj, input, path, source, isUsable, cause) { + obj['input'] = input; + obj['path'] = path; obj['source'] = source; + obj['is_usable'] = isUsable; + obj['cause'] = cause; } /** -- 2.30.2 From 09b95037a650e34201bcc0b8d40d333867830a88 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Sat, 29 Jun 2024 11:52:27 -0300 Subject: [PATCH 18/28] Manager: Fix condition in SaveSetupAssistantConfig --- internal/manager/api_impl/meta.go | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index 4fdb91b9..9665f961 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -265,11 +265,12 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() - isConfigIncomplete := setupAssistantCfg.StorageLocation == "" || - !setupAssistantCfg.BlenderExecutable.IsUsable || - setupAssistantCfg.BlenderExecutable.Path == "" + isConfigIncomplete := setupAssistantCfg.BlenderExecutable.Path == "" || + setupAssistantCfg.BlenderExecutable.Input == "" - if isConfigIncomplete && setupAssistantCfg.BlenderExecutable.Source != "default" { + if setupAssistantCfg.StorageLocation == "" || + !setupAssistantCfg.BlenderExecutable.IsUsable || + isConfigIncomplete && setupAssistantCfg.BlenderExecutable.Source != "default" { logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept") return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete") } -- 2.30.2 From 321c9a89cb1346d74d794e3a5dd58291a93b5567 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Sat, 29 Jun 2024 11:53:21 -0300 Subject: [PATCH 19/28] Manager tests: Include new test for 'default' blender source --- internal/manager/api_impl/meta_test.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/internal/manager/api_impl/meta_test.go b/internal/manager/api_impl/meta_test.go index 78581804..491bb700 100644 --- a/internal/manager/api_impl/meta_test.go +++ b/internal/manager/api_impl/meta_test.go @@ -363,6 +363,27 @@ func TestSaveSetupAssistantConfig(t *testing.T) { assert.Equal(t, expectBlenderVar, savedConfig.Variables["blender"]) assert.Equal(t, defaultBlenderArgsVar, savedConfig.Variables["blenderArgs"]) } + + // Test situation where adding a blender executable was skipped. + { + savedConfig := doTest(api.SetupAssistantConfig{ + StorageLocation: mf.tempdir, + BlenderExecutable: api.BlenderPathCheckResult{ + IsUsable: true, + Source: api.BlenderPathSourceDefault, + }, + }) + assert.Equal(t, mf.tempdir, savedConfig.SharedStoragePath) + expectBlenderVar := config.Variable{ + Values: config.VariableValues{ + {Platform: "linux", Value: "blender"}, + {Platform: "windows", Value: "blender"}, + {Platform: "darwin", Value: "blender"}, + }, + } + assert.Equal(t, expectBlenderVar, savedConfig.Variables["blender"]) + assert.Equal(t, defaultBlenderArgsVar, savedConfig.Variables["blenderArgs"]) + } } func metaTestFixtures(t *testing.T) (mockedFlamenco, func()) { -- 2.30.2 From 1a200461d9df5eb06a669a10aadf6ccb4464c75f Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Tue, 2 Jul 2024 19:50:27 -0300 Subject: [PATCH 20/28] Manager: Update conditional statement in SaveSetupAssistantConfig --- internal/manager/api_impl/meta.go | 34 ++++++++++++++++++++++++------- 1 file changed, 27 insertions(+), 7 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index 9665f961..18653139 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -265,14 +265,10 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() - isConfigIncomplete := setupAssistantCfg.BlenderExecutable.Path == "" || - setupAssistantCfg.BlenderExecutable.Input == "" - if setupAssistantCfg.StorageLocation == "" || - !setupAssistantCfg.BlenderExecutable.IsUsable || - isConfigIncomplete && setupAssistantCfg.BlenderExecutable.Source != "default" { - logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept") - return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete") + isBlenderPathCheckResultIncomplete(setupAssistantCfg.BlenderExecutable) { + logger.Warn().Msg("setup assistant: configuration is invalid or incomplete, unable to accept") + return sendAPIError(e, http.StatusBadRequest, "configuration is invalid or incomplete") } conf := f.config.Get() @@ -339,3 +335,27 @@ func flamencoManagerDir() (string, error) { func commandNeedsQuoting(cmd string) bool { return strings.ContainsAny(cmd, "\n\t;()") } + +func isBlenderPathCheckResultIncomplete(checkResult api.BlenderPathCheckResult) bool { + switch checkResult.Source { + case api.BlenderPathSourceDefault: + if !checkResult.IsUsable { + return true + } + return false + case api.BlenderPathSourceFileAssociation: + if !checkResult.IsUsable || + checkResult.Path == "" { + return true + } + return false + case api.BlenderPathSourceInputPath, api.BlenderPathSourcePathEnvvar: + if !checkResult.IsUsable || + checkResult.Path == "" || + checkResult.Input == "" { + return true + } + return false + } + return true +} -- 2.30.2 From d14f75b6a4935535718b8246f1098b1ec10bf7fe Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Tue, 2 Jul 2024 19:56:50 -0300 Subject: [PATCH 21/28] OAPI: regenerate code --- pkg/api/openapi_spec.gen.go | 622 ++++++++++++------------------------ 1 file changed, 196 insertions(+), 426 deletions(-) diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 3941d45e..664bfa96 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -19,235 +19,6 @@ import ( var swaggerSpec = []string{ "H4sIAAAAAAAC/+y923LcOJYo+iuInBPhqpjMlCz5Ula/HLcvVaq2yxpL7jonWhVKJInMhEUCbAJUOtvh", -<<<<<<< HEAD - "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", -======= "iPmI8ydnT8R+2PO0f6Dmj3ZgLQAESTAvsiWr3NMP1VaSxGVhYd0vHweJzAspmNBqcPRxoJIFyyn886lS", "fC5YekbVpfk7ZSopeaG5FIOjxlPCFaFEm39RRbg2f5csYfyKpWS6InrByK+yvGTleDAcFKUsWKk5g1kS", "medUpPBvrlkO//i/SjYbHA3+Za9e3J5d2d4z/GDwaTjQq4INjga0LOnK/P1eTs3X9melSy7m9veLouSy", @@ -279,203 +50,202 @@ var swaggerSpec = []string{ "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", ->>>>>>> upstream/main + "oUrJhFONdN/s5oKJqytaDixieHnGcuMYW3BG0M7J2AekZEbjBImeEoUWN2u6A8r3gSWVZpuMs/2WT89I", + "gscO2nEKFHwSO6AXZSnL7n5+NMoNTwgzj0nJVCGFYjEzchpB+p/Ozk4I2jqJecNrC34gcmw4d5JVKRqF", + "8HqsMklToiTitwcgrrYB2yyzS+MCrbJcGi36mZns4f6h5z/ekpJSTacUNetppVaGTzECC3WLsmxMCk25", + "IJTce8t0uRo9nWlW3sNXF4yCscYsj4uUJ1QzZc1xqI9rnqN1wRwFU17VLpkuOUvH5CXo5U4KsgNyBXKS", + "QRNqZHEnOtxTlgOad5OMMwFGolQSJXNm1OB5Q/k00hv7gNeI04xMaXIpZzPknd587STXru08Z0rReQz3", + "WsgF516/H8WsKyb0S1rmp1sZ5Os33zLD0fwQP8vpu8JIAFHdSDHtTdlDYrADrBrkVCaXTB+/2Xv9b2dn", + "iAYo7KKYosxBlESwpflRDcmkKNkVl5W6QLydeEsU+4BoikBsC28Z0+zCnjVLL2iEvxzPrPacMeBdhm77", + "L6wY5ew9PGdK07wghr4jQhlcc8hkPlValihZvcxozkQiPctvHrOB2ciMGGVZESL27t3xcycP/gxuiw0e", + "j1rIag70C81DfTX2YQvcm7DDSF7eWxP6f7zu9HA/htAlm5VMLS7A2h05Gn+HvTBqb5lagAXdfg8Ex+7m", + "nkLbeS3pAtah7qPMhTWAV0ODdCDBphSUHkaTBRCNK55WNEO/3RJm8aYkLaUhAis3iLWfFyVNwK7Xa0jZ", + "HYj93i6YOoIeZx455YxkVGm7yq1xbknVBd6YtMethFfUYPl7o9vbl+s7Ym67lmSiy4pNrKpin9S2OlAf", + "webK03u11VwxPbSU2dwkd7vzQq+2snPCBXDACVx51kEXuPCaSNdLG19Rpd9a024fhbMIKssaQQ3ka5Mw", + "z+m85q8OenaZcR1gK2fmcKAXVT4VlGdboFW4lWOzInDLxLQDnIuqS/svP0k/mPiMPVslMeHaE8CMz9go", + "MS8RdgWmB+tpMHokcEW1qND2kMqlGBrhpIQ/q2JImE5ixH0bw6JfHCwVdaTWrnutgPgJVZev5Lzv/MHN", + "n8k5SRaVuLQMTktCCfA1LQue7DleR0opc5IypGkpvmdlKAPyIfxyJXlqxklBBmkRnBgcMhmxHTwz63E0", + "XttVjslruvISVF5lmhcglgim4F32QUeVFYcQa1kSBEQMd/TC16hmtrH2GLaRMs4AjBvEDABHR84AanBd", + "QcPQ/6tmyMP2vHw7wA13IQ6b+b7GST+X8TfjNK7zzU3xsxh78BTOKl8RduFPshcXUSs8o71EAV8gZ3S+", + "ARW59mgYo29oE1wHSb+Ubdk3WAO3ZN+bWW6fpSwA0zaXFt/ceG2XCNY1EEuouDDSAy31OksPV3ZKUP5o", + "peXIfhU39lg4RZUHJ2Oi5Z3pWqO1yzXQtgOMv5j0j8vfhmaYe3OhGBMxR6vSTh/mKlyved/ZQAJz5XZr", + "30x6lm71n0t8EAy7kp/4VxeIV7t8/Ay+eIu6382K5lesVNYDsQWZ66dubpxh467E7nDTMuBMdUAdwbyY", + "gmVxSSESw9BNlTFWgLHOXElq36vEpZBLgWsAkS5quOtYF8ycGG8B4Zd2ITjtp/a9VztaMLoxEvhzFA5W", + "hv1rfQLBwuYc3IKH44PR40ejeZoePkgfHv7gzuBo8P/KqnR3aABBPKX2hzk4HB+OaFYs6H5wNuHP5LvO", + "2N939w+r2MnF0ljGx7X41sRkCwav0XhfWs6o1bIXVU6FkTJVlcNnKGOVLGNUMTKteJa6cFhwLxnSQBWZ", + "hKuaoIoggWTXn0B8ljVM4teTOdcTYr8Cc2PUE9U68PoeNEDhr46BaAwbfsZQWpplb2aDo7+tR7hT5zcz", + "X30aflwjM671pDitkrgviBRen4zK6xiAErODmwfg5nMUaWsS9E9vS7uGEWdnhjD+DOHWHfoGsfbTb4jH", + "f85kcplxpfvdmMiorfGNlgyM4BD3ylKSsBLUSNCm0NkpjZhmLT2JQ86tPEnhel4IXa5iTqTuSx3X5PpA", + "cdzPtjqUfbuHiLZOoB46jAvvISHP7fWIB8eaXwmdykpj5KrTP60U6SRMa07iDfGyxRcXNKfiIlmw5FJW", + "er338xReJu7lIPDILaBkubxiKaGZFHMME3eRItuEITbX0gOauKWqs/AXQlbzRehdAnZBAydMwVnCiJZz", + "3GLKZzNWgukYThBst+ZrQslCgskuA6GFvHv7yrl0Ira8MTmTwNwgSAljdd6+GpqfEqqZoJqR88HHKVXs", + "095HKbzUq6rZjH9g6tP5IKa7mA+aaFlmUSpkh2k4aTdE5beOAqYKRuo5itdUKYeppyxjSTwG5sQ7MDFo", + "3DybMkvR38upcrb6GoUNugRCFOgolmZd5PTD4GhwsH9wONp/NNq/f3b/8Oj+g6P7D/91/+Bof78r/HS/", + "7sRzZhkuBN3yrGQhyTULm8kS/P2Or9a8qXX5dqDPUZAyTVOqKbD/NIVYTZqdRMyaDcbb2Ew55bqk5Yrk", + "djCH0GPy2mzDUNeMfQij6KyPM5dmFxCJUiku5mRCx9NxMjFkvb5DNpS2dUZFKWEfR4PTouSakZclny+0", + "YTaKlWOWgyF6oFbTkon/e2qDMWQ5d29YefgUXiCn+n//ryuWDXrgdGKN9c+8TtY889DDlNMPPDfayf39", + "/eEg5wL/iribWtfAD9KD/6dBHFL8sHRZsZ5v+zWnhIrEHAMmDRVorxkOZpTjjwWtVP2PkZeeBsPB3ytW", + "4YcwRuMZ/LtiqIxVBvojT6Wakd41ZvmF9sEZfdfxQBd8FqQM2HgCDDP7IgJUXEsbumX1nZuWZS/jsA+B", + "c/gISxes74VMc2EqBaGNyPTMW8ghWEpmPGMK2bBgCVOKlqsYSW+xvKgB/d4zx2+Pn98LYiJAmHNRCG3W", + "HGYFjclTbnQjgSt1n8TYuLNMWbHBsfNZKXO/9T7lKQboM6ou1WmV57RcxfLZ8iIDlx/JrDyJOU0O6mPy", + "DD0RGC9i7e8uJtX85A4JXLPm+ThiJLWO463ETLA82wVvESvXyxrVv1UM9xyyMZ4bPfzhcJAHZL6PcH4a", + "DiDT6mK6gmxEy8AgVLk2R1jbFBcNEuLpgCUav3WZIq7lY00P78fjST6bH73kmTYqes2Pho67vDr+y4ua", + "uUQTIORsplhzodE4gRpUH3fIRVRbUvC+HYXhrrvsKji19q14y3RVCjQXg0wCYjR11JNbAQS2sIv21A4c", + "CJC6H4H7AjwB9be9U2jcuOZdivhnA56JserlCEyHVTEY1r8sKp3KZZytWRPBMylmfF6V1MmtzU1y9ZKX", + "Sr+txAZfAVcg73NUAgwBnZkP61AyOx8pKxFEnfhkNhC4KJmxJZlRQ4rVkNg4fiHFCDI+jV6ShOsFJmNE", + "Uqdm+7DrKYNolbzQhqSbt/SCrayQLe5pMmW9YSjARzAxMN1KG4RV6JIKNWMleXpyDEkpLux43BPsAiz2", + "lUxoXGN47lkS8DvDzcxNg7nsx+ONJo/2LO3dDcMDjqGePbW/0pK70OA2glzopVzSCG97I9hoSVfkyn6M", + "wfCQESqVhohSaS65zT2EdBUOyYMlg6zSHEKSDOOdfDSS8aeJVTl5idmOTiRZQIKPcj4wV1bAB0A779mY", + "nC1lZE1gMLWTpp1EDy/9MLv8IqPa6Dcjb8XBfF8QF+wg05VfdB+iwUebjSbW2FoD2n25xXk9rVLORDOQ", + "2NqrrMqh1hEHN4xax/rWkb02+nQY42taFAbGcMruUIjZMiTxaZ8ayDG9P7Lh1V8YK95WQkQLBtTBccvg", + "4lo3Xk5X5JKxwhAl4YTCuAiVd+bpHmitCPRI9Q1fWIy4tEL5aFNfqI3EXgddWrw+9sF+IJEvGJksvROO", + "TYj1NmHqSp1BjNfHTALwnkvzX8E+6EZYGrq6h2TSBMKEvH53emZ05glkY062ikBrAdJDrQ9GMSz3sfTH", + "LhmipfnaxIP1F6uV0BcZ/tZzO75aCgZoQizdzFFsfsF2iRNv2dyw7ZKl1hffgSRN05IptWPpFEt/4zdN", + "zvSSlmzNNdzZ9+3Sky680VrtJmN/VvEVywAcqMICLA4Qw0GCSbQXNmLJQ6Fn9bHTOmVJVXK98tkULQq4", + "bVj9unj6U6ar4qlSXGkqNAqfsUSUUMiTUyPbOR0c5C4zCvHDdKm1Na29gEwVukVmdH+SztcS1LpbiMIT", + "xLlnvb6LUwwfssYY64zgJTn96enBw0d47VWVD4ni/4BM4+kKwr6NQGbrJ5DMLsqluHStJi0zKMwGjl8k", + "P4M65348lyiEDo4Ghw+n+w+e3E8OHk/3Dw8P0/uz6YOHs2T/8Q9P6P2DhO4/mt5PHz3YTw8ePnry+If9", + "6Q/7j1P2cP9B+nj/4AnbNwPxf7DB0f0HBw/Ac4yzZXI+52IeTvXocPr4IHl0OH3y4ODBLL1/OH1y+Hh/", + "Nn20v//oyf4P+8khvf/w8f3HyeyQpg8eHDw6fDi9/8Pj5BH94cnD/cdP6qkOHn/qGhIcRE6i1Nb8GkiP", + "ThGy/Dosg+DGcYVWvLfFelraJi6g4VR5pQi9wGFAEjkWBGuzWO+9cp4WOxZGNblgN/Pg3G+HHD8/H6Cx", + "yancPoTA5wRRXAXoahNrxxmprJrvQcGOkaFee1j0YnT8fNKTAWtRZkttGtf+kmfstGDJRsUaBx82j2nz", + "baq5f8yua56hla51KrEqVNdAD+uobiMGKM4W9LW3Ti+osH7QZiwBVY1BwVFjM5epK0VSX2NyFkgXn498", + "W4SYbHkk/qi7BM6qYNRJXRQpr6VVdtEBHY5Lii3XvqzHQ1NGPaL3zUarD9HICpukNhwzOgbQmY9dcxtr", + "0ujBRteNWY0db9gv7DYB/CvXi9otsxWonRKeOP9lFPRDK6YOScoKG7cPdMT5RL7xs9lW9gyOo8e/0znV", + "4brIvM54gSWgDjusikzSFPUxDCeKmgVwsLe4Gij54+I6ryt4gKDRgF2vLHFDQsOtCAi3wN76D795Xpgm", + "HOdqeFogZlNSBp85ljIMj9LaJmTzurPyysgdL3nGgpgoQDTDSexr5jeXKlLL9WGK9m3hQH0x/X24GbQI", + "J/LX7QvjSkC+PxdrsNJmk3C0vcR4/rvy3C9FCNcSvZKlp5s0tzYrUfBZzbFoaoRiq9MFMXvUWlXJebW/", + "f/DI24OtdFYpg/kdQ7OWdsDIXChM+XtgBah7qunuiOZUBRbeHSyx3jD8aTjIAgDtaGu5BVdJ69SzWkP2", + "W28YQpprimKHzZs5raZrqhadMgFWfJ+XiEFzCoKw91Tw7QTTNW0VOS1t9ShHJYM3zcP3curzFMkzNyYW", + "vZozHT5H1QtMvVRd+nRq93cm5wrdWoIxW5mjyHjCdbZy004ZxpWDY8U8Wg39RowWgRk57l0zhhQY+/Ad", + "VAfUzalnLof3vZx+D7zbvG5euacgwxOM1prnbHwunI9PSI2mkekKEj5BK7F8hGpSlFLLRGauipKHFvpm", + "EJi+FDTkOk1LCblQZuRmTEbzcshiI5WJ4MIbZyvftjBfbBBXachZ/voDq7EAhpbNY9gjlah/MJRhvHPa", + "qCzW1e9bv/VATPTLgJip+q+ohNgHighxoJpccpHaLImtYeBjxbLsZzmFsO0s+9U7tWypBqouMznHh2G4", + "bPj6GZ3H3V+NnIRo0bTaohUU/tKyxsamBLNNrMvnBwnaB4e//3/kv/799//4/T9//x+//8d//fvv//P3", + "//z9/w+z+6HORBj3AbOA1nM02MNQ3j0123svpwrNOPcPDsfwEphRKnF5gXLNYYCTJ7/8aFC0UIMjI1ZB", + "nVcj7dwf3d/HWooXkLrGlsrX74RoYayvyD5oJmxuz7iwriGzkgtZaV/aqLE+nMKvcC++c1sIsjNeKaVe", + "O56t7ollBS9qTjjIuKg+BNcPvNYje1Q2FLobgxsiwYZYER8Cu20F+Q0VRMKz3hQj416tbd9bRdbU4YQ9", + "UOuEByCtEXOiVkqzvA4Bt9+2qvBBmGEi54Ir1hWv7Mt1FDUlmVyycpRQxbzZ0k7hFmVDTM7xQM8HQ3I+", + "WHKRyqXCP1JaLrnAf8uCialKzR9MJ2Ny6qeSeUE191Xhf5T3FJmUlQA++OObN6eTP5GyEmQC/lWZkZQr", + "DfF+E2K5LPXhf64gs1+kGp+Lp8rJnzQjZkfDxj7IuYv5OR8446Atbo+2GRegDQUWixIyJKgi54OmtOnG", + "Ox/UsM+lMvIEiDWXjGim9F7KptXclq9UhFHFoVCklUZcXCh6r3lCUplAgWBIfcmyxs6ihRT6UlPMDxfb", + "l4EckkQWPFQwJ+1igGMz2sTXH+4Wkjyzf9XpHYZ4s5Rw6x/H0iypZErc0ySnOsGED5roimZ+pI5h/gzr", + "HoPoqNr1JQGPZJYGgXXNcvntGqK+XLormnIujhsL5IrIHPnUsLaVQSGxVUGVatXJ7iT4RIFuE8Q1naMo", + "Z2+fKxBXR98GifXHz31ojq1yY3k3qo9UE1+Mc8qIITFpleH1N0tBoyGEJ2B0lyyDjRnscvlYBg3dF34l", + "zYS4raQo637tVsiJELmYnBVvgXLmKo5g0xOIb1NOg3bmelfvbUj4mI1dCoYPkwnCpMa7Fdv4ko1TbiKN", + "EkN2L6arCxettEvwsg02iKx1y6S2HWqIQGKNlpXB0w0ZjBidJla+iID5v7ROp7FxR7sVEPj6fWVuKnvT", + "kZ5dTnzbjM92iZNYS5uwcY2/TBt62NhCSBtTFiFtTtr+NUFxo8+qdRX3ThhCAwb2VpmjYcPi3sWUoJrR", + "xpmrMotP/O7tqzBxuZ6dcK1YNvOeTLkUmaTpNhFIdTEkf4qYBQj77zuVz8g18okESs70qJ2CFNMf6wnv", + "Us5QeKuvkTQUpoV0deJKacK6+aY1umMGtGwUXq8LEYL428X+HQs53SVieN0E9S0pkpup76TW1WLDZ77o", + "IwTeO1FOWiqNqhhinjVzg70RKBacGBR2RVEPm+AYyd6fHtjuZIEBw38i0ppIWi/wuYDaBd+BfCNdxPXE", + "0VtbV0xITVhJbWSrL/DQltrNsr7fVHisG6OecWF7htjoW4ikuKdI4htTYIA5DxO6gVyTN1esXJZcM5Tl", + "uawUlDgSQR0Kl3kaFR9iZeleybktN+dpAFa+c1Kx62dhFg2nAhMyWma8p7i3bpDAHahEFLnqaM6oPlAy", + "CEtJGOiEoLxzgVH5OE7E2b8uEPTzqMCaS+YmjV2ieo/b1TGxQaM+b66TKFFcBHtsSQYnxD7r1K5a65DZ", + "zqDSP9bnB7ZqGusNdEaRUji+X9cSg24tOcuniKdbifSN+m3dBaB2tc0A6nI7khscVcO1FNTDicbUfvpt", + "GEmq77JDR21rNHu1TYWR7qXZVTlq4+h6D7Ebvf92YHx34DGoLd7WFm1/GflqZhErqmJJyYBTypGQeqRZ", + "lo2oWEnBwkjmo8Hh+KAP9kd/cwGzRnKb5QWb21Y+o7qXy2A4yLlKIpmg1ww1twv/+OVvVls+w5majs7Y", + "FBaZ+4/slM/Fm/ZhNUoCWsu8PcCnJ8fQmyU4iYu6Bpda0vmclaOK39DBtIoVdhMc+qt3dVZ788fkCEn8", + "ZDorWnNKGWPFqbV9RXzT5rG3jbnwBFQjXabbqYEZuGiZSDEN08s3rrKUTxtP6aqpp/mxDcEGRWlMnhZF", + "xpmt4oh58tJ8yMFuNUnpSl3I2cWSscsJhPvBO83fzcuuWnVkhSATCnLwYLSQVUl++uno9es6ixibItVo", + "G448OBrkkuiKQBwFuAnTC5C6jwb3fzja38ekFav02ZRmwCv31v6TaOWU5iTdmEiasJFiBS0xWncpRxmD", + "NlSugo6FOpRtpivki4xd9oCZfHc+yCV6HHTlnA3fj8kLsHbmjApFzgfsipUrM56rk9PtluT3H4hOANCe", + "zCMHmo/x0uweUJuHa/NYP/awCc3GuMGK19wLTTXr06ltQnkZptdtn+YT1YiDwbZaVNpXkpEu6eW1azJu", + "sdANy2taPnyRyaFdV1CYEhqSmCNlyr4iZzOjjIBxoF0Js0ag/pKfkex+rF2HZKtWPG2SYx0SDGV2bYHp", + "iG1AXWT0H6v1YUfN/Enrn0BtLmwRCeSq9rCgtFJrgFbhVWTGBVeLvp6iwy94nkO/vzUn22eN+TNVPFkj", + "eI4/oyjwcpeiwLsY0b9K/d0vlSH4xarjblNT1FfgaWlWpc+pvYadafuit7U+FlP8QoWFPEVnJRXeFJSt", + "bBzlykkbdE64Dhz3UJUFbBtj7xq0ZuLCCAxyVhflN+onUdz8TQUD40tXSuhoZI2KjWboVJIfT94RDNzw", + "Vp4XL/764sW4rlL748m7EfwWERKa/Q93Lq6p6XxMntl+xtab2SpxRG39fTTc25QLCm72kopU5gQG9CYi", + "pfhcOEr1hWwnG3SLMzrfkvTX1N4jgerYCewODCI0T1TT+QVPQbd4cHj/IH30QzJi9FE6evDw0aPRk+ns", + "0Yg9me0/mbIHPyRsGlEr/AiBqL+5l8g60d+NuBY6Ts3vLGZXFT5qDPm0Zmo0kmxnyWrWf/p4XYdUvG9K", + "xEhyhm5wf9oBm/qEWjakJRt1KA/tHhe0iiUIvVOshAIStoSuZRnHz4ekoEotZZn6osqgVts6IUb/cfbL", + "2qxhUA8AA5zN8NV6pwuti8GnT9CUER1+0DUk0YEBxNPqM0Zz66rCL9XR3t7MhQsGYX573SoZGLxIXtIy", + "t/GwEDs9GA4ynjCbzuGp1Kurw85Ey+VyPBcVjG+/UXvzIhsdjvfHTIwXOsc6g1xnjWXnvip3rfXfH++P", + "QVOSBRO04GCaMT9hQhIc0R4t+N7V4V7Sri80R4uJL0hxnEKnPt0sRATCJuSCwGgH+/sOvEzA99QooxgK", + "vvfeutIQgbeMhG/OB6fYBLow6J35nBTERSdxmRVjGE0zVX3WaV+Kt/tvEP0HlKge44VIC8ltQfC5bdHf", + "GbBT1NlAPgrePYjp2XP2lj5gv+Qi/bPPLj/BFLIbA3e8eWYE3i9lJepkc9CTfbvST3VHyy+1LqxyEFnH", + "qW9KuDSi/7KUYj5unf5LbkPfZUlyWTLy7NWxa5GJXhsIgFNkSSF0DoQpt50YUhRSRU4KMpEjRwVM9M8y", + "XX0xaLQqqkTA4pqDytI6/SAECauISIwmwxo4N49HjQoN3ZX+0ry4Q1wkxrvBkc64YHcPp/5KMw6eVxpi", + "03WQqYWn1n17VY/vOqPXB7mRqGC+0iiICF6Dso38q6+KtSe3hp//FIiJaWo1Rjaz2Dawux3G6UVGzFHY", + "Uop4iWncn3XkO9Q0/jRsjLWiedYcqy0gb0KQ9kG8hfa7VywueHTlhLWn8TRJmFK+LW+krGJkSBLmdOHG", + "7oFz/03BxNOTY5exlmVyaTuPQMi5oNmelSTtgU5IQZNLc9jnov+4FdNVMaKu0E8/2TmlVyxaW+hmCE90", + "qijTDMFqaDe9QvRuIeWDSDOoFjJAKPqSTWlROGtJanSlWZVldYtXbUuOGbny7pGSd3VsUU+OK5YesuYn", + "6H8jYIcrMqtEgjcRarRvQG+DEDHM7i0h1Y+DDc6399GlnX7a++i8sZ/WkaQGM2z2MjeaODews3UcrAoX", + "JLbWGrT1WO2i4nSTfY06H5kw8Cr3T9imXr/dIDONJ3DvTjGdltbKts4aid9hg6ZGyrf50toGXMa3QU6f", + "7o1OgB31u3XLaRQZ780C70dVnw21O5bWpT7/G0OvsQH1GchZlwhomw/IO1VnPjuhnabpCJnJmnQ4JKO+", + "SiibYurXjEK3F8M4YlkkZEpVXcZpWsqlauSFXR/j6z3ujuOu0HYP54csHOxOdSOsvtGfrHvIP8upTVzO", + "ue6g501qHGsWBP6xykh4yDttupgR1Wyca9C/XQG0H9w/uHkZ4cxTVJ8XxzSdQ/ocyJR1/lzzhWj2HMe2", + "2NmKpJUvU2Z7GyU0WTjk80PBfZCSZEY0ORe3Kh7BA+JqYzYpAeKYdfFA8UhZdu4IFniAzLpQ9sGq8Y3h", + "fm4mEzJ7KTuXClX7La4W6LVf934lwRLWXa8H8Xz9HS+ET/s0VBQbciyMQPnLmzNMs7Q992weQ52npxey", + "mi/++0L9US4UoNWG6wTY7/dtRgJTGtRSWXJz4rp20/LINWs0SOs3yzOdLH7M5JQ2ClZALtnNcpF4O7mt", + "BJph/MqducZ7Li8abg8Vq2izuB65CFrMQVoxK69sI9PI52rD8b2B8sHYJqdOR5oDoHuW0zq/nCo1wt5m", + "uFX3r+YBQhs4ZnvC3RC17O04F7V9NnvONYu+Y683aXu2ja9NWhX2iguJa04hsdXcFNfj1FLER7dCEUuG", + "axIy6GhXE0J7LuM7Q61e0/ISVxqCbFhL4669SVJyzUpON2A8jJeb27bToMgDnLRQZ15hJQPDFABVHCW0", + "5amgopk5cfN73jz0LsmFQYtSou1xwfy7Pvd9SpPLeSkrkY7PxS8S5qN4ZyftLoYT4lVViH8yX7GUVAXI", + "SkLzEnz8UqSuPkhOET3Ra9cBDxbSXcmKsA8FS/QQyzwwXpJJ3XxqUme0K1uE1yhpGe6JQn9XmLVl2wRi", + "8nfXFCsuc0HLIVvX6IYIiO3LFTPhtSu8NknFnOnxbWs4jR5M/SwJoBp4VmzAGJaIgNIqfGaQGUQYIAW2", + "SxF8eHdIAQgBvhaMAfx23K3ukjWDxlwQMSZSoiRE+nZ5mhHf9j6a//5Cc7bWNGRLpWxlGHID3hk7Tbvg", + "S6+Kgc/acohNqvACr4EpdKXxkNhwPkHSf7PrM9aXiZ6L2uI01OAWgRa1bvmX/G5UBIABKtv+16BSAUnd", + "Goj1VJ6h+PG6IPyIoWaftpLVtsJqX2igH6c3BcP9to049RxJUEDHPGPyBX50yedzI63eLtF6J5AjspRA", + "ikDXN4mRnQEnRRVgSLhIsipF5UhZbRoafhl1QM6x6jCq3LZokh/EsGsXrd8RD8gv0nfaUJ0G4N+tmP6+", + "abD0mNWvf31VjLgV0yBH3a7LdFoKkmtYvt7MhB+JlATJfH33cW/abKYfv5lvoeFqo/X+bR7IjUhc9VZi", + "CktVGPz9DoNPh7ZQxqpg3xuZK+go732XHo5bepLd3aRJwgqok8WELjmzRi0gK3aSu0ZUoK2wW60tTG7u", + "fACCXe/318Grm7voa5ELbClrEMyoVnOpEZ5BMSq4/XcJFZBGgQmomRVf15h3ewA0SSUE01od129ZNXe4", + "XurACBmPat4954ATp3I7WPvatjc09X0LSPkHNyk2j/oa5sXooI2O5P0IpJgO6xb1+GZAEzipiwP9wVmk", + "24lN7u1xdQi2JA421zRZuol8AhJVnjGilfLgoK8ul+u+6ZbgIuHwex9H+5WJ5hpk9ZJAvQULhma8y0YE", + "rdMk16HnqS9i9cdGzkYttx7UbGYaQ3SGNTNfC01PG8NdB0mbC7KYCp4rf9guvVn5Th5e8v+DoHFzk7sg", + "MeihG9nzGbz1bfBk2ItP7IvLighjzlRYU011JJ87JhZSu26oBEezLFx1Axu2kffiO44j0XJB9Wgpqyy1", + "/sFRKntxytucfl1Q/av56Fg//1YEPueR7JPzsGmCNetEbBAG+QIZCnsZupRwZ9OBjGgcBSIRXHlpF62B", + "RUWHYGfK5NxGwfXKY2Aysq1X6lnq4dCwBIUMhXd/pSSRwuUEZCs3BVdBj23rfXBl67E9IgqestI9Rqkv", + "A4sQV7EVzp7rireHlXDXMO1mM9kbivdpThLzQoWt41yMBrGdNW/P+RRtBhqL8XcNMaGPtu3aGbjDkV/v", + "P7l5YulXQrOS0XRlq4pbgeHBrfre8fQgBE3MIZCVTFQLonV/uUlwTRDlebIgUljz/q2xm6rFblpE6hn2", + "6qV1y1S8/mqVZ1xc+ugCaJuMEMD4Mo1ExQKlMqJLlgXWN2wIh9TCdsqyxd4TmmX+gteRfDX9QKC2sx/s", + "gihR4WWCxTRaONOS0bU0I+wCuC3lCE/2RqlIrBPltgTlK9CSaCPG2HqrqT02aPIhQZwPD2IYFhUz79jO", + "hdaVcqeuDDT6rLskhzCw7WMx4aeQpVb24teM125sI8I/xYwz6qIVPdtoD+h7zbkISGxYiauoyQ68q7QR", + "EPwSurcEht376JqZftr7CL/wf6xxqId9DWXJXGhtSwbcuk0tVFHtCozu1Z388MPOvEHdeNfh0ZeMj8zq", + "dr/NrHXX4t9u/OJ1elluaYi8U5corGdW99yMdl9tCJjBfVlHvD1G/nMj4zBmVLFExdXPtD4H2wM/ZTNW", + "Et/S1TXdyWzG5vngYP+H84FHrDquDpQK8O/pqhROpK+3p7wch2GVvodu58AxEo9mSuIYSuZMCkZYpmCc", + "upB5bJmALQDABaNYUsCC8P8Z4TSjZ1SMnpt9jt7BAIMIDIOOnTEYypLPuaAZzGnGhx4+WCk9k2Fldd9r", + "mOugcZXtFcxDqm2VPFcMSxDK4Q3oTzXnGJO+aW9v7MJGL+3CBhtjlbaRZ2SimR4pXTKaNymE19SnXJj7", + "PdycGP4M51CtBuXXsCs6MbRrUjzY/2HT6xYdG4hoSQ7G9z6OjlDaz406gGG4U6aXzCK7BWcQDeS1dhsO", + "MvMN1mXZoTtedHa4DMrOw0g7IrzELnV6/a11N7C+ORbxXOyqnJEpMx/6+aerxr1DiWLSe4WOiDmziS1l", + "CNSlEZ18y9kUGzgQcAabT9HPd0gzXrfxEO7nTJYJn2YrkmTSdnP46ezshCRSCAxkd12SJFSctITXlt1U", + "jfNihH2giSaK5sxKklq6jmoklZUR8vADBd1o8S1MNcTbVBcdjJwAmcp01ctKw5x2M0WtXXTB0pAcveOk", + "L8DvJS3z07ofyw0JRvUsb0H0vn4FrNB5wFUdoTejZb4hSR+n7ozC2oME8APr7N5H2wTo03oDPtS92yps", + "1fcUupsGVtu7IOp4wtq0YibvqGW+2d1qjdkz8sWak9+zrVPWn75rxvWtIIHbzzpcgPZaDh96AsLaEid8", + "uKCKCOgoQ1ZM3y10CiM4Op3MMNI9Z5jVgXvf4EC0lXRaYRtuyPEGxNPQo3kL5DszL94d5NPsg94rMsrF", + "jpWJztrA+VbwKogro0qTGVva1ksBkmFv+62oV/iJH8+1c1qLVdsFVQTdmW4Vq768BbfTI++bj6tAFvgN", + "BFZg6zOfTwduDDabsUQ7tQDaGeMIVJEly7J2dqH5llFbKWRR5VQojCEH4R5c8FecdquX1DXBzR2BDgHu", + "RmFAKFys+l5NCBdKM9rOxQvqrPeWxPEV0W9OCrdyrpvq2kK4F5gbnc7rUjLr5XBUjZXv3I0t55wJXdvS", + "AD4PlNbTRTQcPIZRPtd7ms7NScy3y8apS1tva8jQdF4nxtzlCPawdwHUeofLUAmseq0afat9mL/ZHfpG", + "zBgKSgvUx1iDeUPI+xqwfjlEDsqSx8l4sPkICnuhP3ytd6/b8L35F2B7RRWBKZawawL1y3PHjfC02cgt", + "gF3TIGgwzbb99NcJK5zcncxYWzqQCoxqgDqD2yBLA9GGdpvQ78Wms9MmbvYRsg2xgv7A1K1cs1c9+R51", + "R341XpONuQxf679n8Qq/EATx1S/Aboh/i5TOXKYgFAjtyS4uCLqdKO/yGRIla3tpQrPMGkovhVxCGNu7", + "d8fP784l9AEwgi13vX4oiTRRL37bgraWmy7cLdy2vqv2F/CCuLVuumtqKxjZZBL3qRN1Gw6XWBuALvD2", + "PtomGTuIXluplH7Ym0+H7tTLtrjjeZSNhbybEp/Tlpa2IeOxxpufyDz33ZvBB5xAyDI4oGyN29qAsvT9", + "cLggE9uLbQLKFXpQmy9hyIptBDU0TLwgXJMZL5Uek6dihRYZfC3suRIM43yuQNYr3+zsenLnV8WpL00K", + "1nDcbdOql74B2zbyCkmZplCnbllPs8PN38aqZHX+bley2z66mxIiop3W7oKx6Y7YgXoRcDtrkMPonZDS", + "CdS9hs6GPP1NoGGnO1oPDnZldHL8XDVMCLXf2jVTJ3L2z4mjQUV5AymEhlrwwlvAft0dPzPGipEK2i9v", + "4nLNfs3fEstr7mybpibgzW80qF6X1M1CoU7I2Jd3EwU3UK6vihE3xkk3IYPL0W6f4rUtU75B9le1S12T", + "NhkBTpbOstZoLBxB85YbA5sQsnKEf6+T3/BFL2/f3Pm/DRojrrM+SeJWf6umGQcJlvaL6x13yt2JsXPL", + "b5hXOopCR0arj8SwvPpLFUEqo++N5Gy2RvTic/FmNtvKBXP3YGlbhQKJbTQJ/Rv0HW2VSA10XqpI3ed8", + "LcCf0SzDaE9nndGSZNYN58qcgvlOL9jqXsnIHErR2OHHvaciNhyKuNGrbafov9Q50zSlmn4FY2vY9f8P", + "caW3RsOnlV4woSGrwPXpM9jgQlH7rAWfjZMYyK0lzGBzmGXAqXh94FGM1TaROCoYB6c2+NrIASt12o0P", + "4ugVSIUk/V/cbazaHUNchpzr7s9KzDoRqx4g9KLCCN9M+0lY57DSwU3bfPxEMa2l9l8oj6c7S6h/YMpj", + "qbo9N2dPhrCExBsXFKGJIRsZS7G2IyaeWYoyasZEOXQB3yoXdcKTpTKsHGUyoRkQOJqpL03VrlhjN1XM", + "vQTBQWv4rJXHbdz4zdXXtYb33rBuKFcXtHvpI1e/SFdP1ae1+iJjgd3jwf7hF2x9iCjWi5gnrHSdZ54z", + "wZF02voHcdM5htBZlkcTza/QEsvAPepqbGWZXKKvwoLFbr3k84UmQi5tAN/h7TIYd5GogJw+dOAZKRxW", + "h5l5kPE/l9Db3ma24IXb8dJa9yD14wfQ2HSbAKecwlnGmwJFI+j6r4sZEu1v30Iwqt1J33W0shEXuEQX", + "GHgtq4Ydqxt9GrsldY6HanjsHCa5sp5K2nw4P3Zdmu62DSafyZwaRl11OSR6VfAEYg9ttyYQmItSzkum", + "1BDaObkGF7IkM8qzqmQbOYzjK4qJtOGoM+B2o0P1bVayzTdlL6erER+VVX9Y6Wu6sqaUSnwTSSmv6eov", + "jBVv0eP8jalnGPhtxZg6+zuQmAPXe8CgykqQPXLJWOFc8XUAOHlTuNpRkIhIuVCEEnS1hzKpd8rE/O89", + "iNyR6EHZC1bWWhNXdVT6etSWlS4qPSpKmVbJOkHfEMs38PKJe/dOMAeo+bX3vmDzXbOxh/bbQsy/ViL3", + "wZaJ3CD92RRl1/bjwf37N3/RXjEx1wtf/OhPYee4lKfYL9xQWUosCEb2E8zLtys9vPmVntAV5OtC2zpa", + "2n5fD+4/vA03gqqKQpbmoF6zlFNytiqsxwxQjCBGOWFy6tPN6y6wYfTXg4Mnt9Nh0NW/QE4JpENK7DA1", + "MxfbFtqzbmm9KKXWGbPl+P5QkgfmuRtA51JpUrIEs/996UDYL8oDQbY7B+Bg3ynzce0IYUJh7T/MoQDp", + "3Z6y+fKeIimfMwXFg9tnTJ756gMQJ3byy48A559PXvxILCqZQYuMChGP01on8OhFlU8F5ZnaK0p2xdnS", + "kSVeYsFER+0JUn8nBgFEyytHzasyGxwN9gaBEapNrI6bQVCdtmAOUzw7gCSVbiGRn+XUmUlBRvt7xUpu", + "0K9udzpstaMYN6poqsigT0+Om/0hQxOZzPNKoLgJBUraSx+3HbiRCSw2vPZrIk9Pjof93ZmxmZXZhrkr", + "pczcijqTgdMxUioHyw/4WYBP1LUTLAR9z8r3cuorwoVz2HIHn3779H8CAAD//2nAJ2HqEQEA", } // GetSwagger returns the content of the embedded swagger specification file -- 2.30.2 From 7cac860d4a27cba35cd5c1c0118a24f74c79e417 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Wed, 3 Jul 2024 20:55:45 -0300 Subject: [PATCH 22/28] Manager: add logger to isBlenderPathCheckResultIncomplete --- internal/manager/api_impl/meta.go | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index 18653139..856e7032 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -15,6 +15,7 @@ import ( "strings" "github.com/labstack/echo/v4" + "github.com/rs/zerolog" "projects.blender.org/studio/flamenco/internal/appinfo" "projects.blender.org/studio/flamenco/internal/find_blender" "projects.blender.org/studio/flamenco/internal/manager/config" @@ -266,9 +267,9 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() if setupAssistantCfg.StorageLocation == "" || - isBlenderPathCheckResultIncomplete(setupAssistantCfg.BlenderExecutable) { - logger.Warn().Msg("setup assistant: configuration is invalid or incomplete, unable to accept") - return sendAPIError(e, http.StatusBadRequest, "configuration is invalid or incomplete") + isBlenderPathCheckResultIncomplete(setupAssistantCfg.BlenderExecutable, logger) { + logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept") + return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete") } conf := f.config.Get() @@ -336,7 +337,7 @@ func commandNeedsQuoting(cmd string) bool { return strings.ContainsAny(cmd, "\n\t;()") } -func isBlenderPathCheckResultIncomplete(checkResult api.BlenderPathCheckResult) bool { +func isBlenderPathCheckResultIncomplete(checkResult api.BlenderPathCheckResult, logger zerolog.Logger) bool { switch checkResult.Source { case api.BlenderPathSourceDefault: if !checkResult.IsUsable { @@ -357,5 +358,7 @@ func isBlenderPathCheckResultIncomplete(checkResult api.BlenderPathCheckResult) } return false } + + logger.Warn().Msg("received an unexpected blender path source") return true } -- 2.30.2 From e9bbac02ae8573b694bfae3f966491b4ed769e4c Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Tue, 9 Jul 2024 17:34:55 -0300 Subject: [PATCH 23/28] Manager: Refactor conditional setup assistant config check --- internal/manager/api_impl/meta.go | 56 ++++++++++++++++--------------- 1 file changed, 29 insertions(+), 27 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index 856e7032..1dd9b54c 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -15,7 +15,6 @@ import ( "strings" "github.com/labstack/echo/v4" - "github.com/rs/zerolog" "projects.blender.org/studio/flamenco/internal/appinfo" "projects.blender.org/studio/flamenco/internal/find_blender" "projects.blender.org/studio/flamenco/internal/manager/config" @@ -266,10 +265,9 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() - if setupAssistantCfg.StorageLocation == "" || - isBlenderPathCheckResultIncomplete(setupAssistantCfg.BlenderExecutable, logger) { - logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept") - return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete") + if err := checkSetupAssistantConfig(setupAssistantCfg); err != nil { + logger.Warn().Msg("setup assistant: configuration is invalid or incomplete, " + err.Error()) + return sendAPIError(e, http.StatusBadRequest, "configuration is invalid or incomplete") } conf := f.config.Get() @@ -337,28 +335,32 @@ func commandNeedsQuoting(cmd string) bool { return strings.ContainsAny(cmd, "\n\t;()") } -func isBlenderPathCheckResultIncomplete(checkResult api.BlenderPathCheckResult, logger zerolog.Logger) bool { - switch checkResult.Source { - case api.BlenderPathSourceDefault: - if !checkResult.IsUsable { - return true - } - return false - case api.BlenderPathSourceFileAssociation: - if !checkResult.IsUsable || - checkResult.Path == "" { - return true - } - return false - case api.BlenderPathSourceInputPath, api.BlenderPathSourcePathEnvvar: - if !checkResult.IsUsable || - checkResult.Path == "" || - checkResult.Input == "" { - return true - } - return false +func checkSetupAssistantConfig(config api.SetupAssistantConfig) error { + if config.StorageLocation == "" { + return errors.New("'storageLocation' field must not be empty") } - logger.Warn().Msg("received an unexpected blender path source") - return true + if !config.BlenderExecutable.IsUsable { + return errors.New("sources cannot have the 'is_usable' field set to false") + } + + switch config.BlenderExecutable.Source { + case api.BlenderPathSourceDefault: + return nil + + case api.BlenderPathSourceFileAssociation: + if config.BlenderExecutable.Path == "" { + return errors.New("'path' field must not be empty while using the 'file_association' source") + } + + case api.BlenderPathSourceInputPath, api.BlenderPathSourcePathEnvvar: + if config.BlenderExecutable.Path == "" || + config.BlenderExecutable.Input == "" { + return errors.New("'path' or 'input' fields must not be empty while using the 'input_path' or 'path_envvar' sources") + } + default: + return errors.New("unknown 'source' field value: " + string(config.BlenderExecutable.Source)) + } + + return nil } -- 2.30.2 From 3a662be6ebab9e5cca3c2dd27065351a91fecfdd Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Tue, 16 Jul 2024 20:44:09 -0300 Subject: [PATCH 24/28] OAPI: Update BlenderPathSource 'default' comment --- pkg/api/flamenco-openapi.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/api/flamenco-openapi.yaml b/pkg/api/flamenco-openapi.yaml index 8ab08504..6c25ebf2 100644 --- a/pkg/api/flamenco-openapi.yaml +++ b/pkg/api/flamenco-openapi.yaml @@ -1539,7 +1539,7 @@ components: - path_envvar # The input path was used as-is, as it points to an existing binary. - input_path - # The input path was not provided, use whatever blender is available. + # The input path was not provided, use whatever blender is available, without checking. - default WorkerRegistration: -- 2.30.2 From c718f0d01b6b7a6307a9fd0668ff269c174db13c Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Tue, 16 Jul 2024 20:46:15 -0300 Subject: [PATCH 25/28] Manager: Refactor error logs in setup assistant --- internal/manager/api_impl/meta.go | 26 +++++++++++++++++++------- 1 file changed, 19 insertions(+), 7 deletions(-) diff --git a/internal/manager/api_impl/meta.go b/internal/manager/api_impl/meta.go index 1dd9b54c..491cbb23 100644 --- a/internal/manager/api_impl/meta.go +++ b/internal/manager/api_impl/meta.go @@ -21,6 +21,14 @@ import ( "projects.blender.org/studio/flamenco/pkg/api" ) +var ( + ErrSetupConfigUnusableSource = errors.New("sources should not have the 'is_usable' field set to false") + ErrSetupConfigEmptyStorageLocation = errors.New("'storageLocation' field must not be empty") + ErrSetupConfigEmptyPath = errors.New("'path' field must not be empty while using the 'file_association' source") + ErrSetupConfigEmptyPathOrInput = errors.New("'path' or 'input' fields must not be empty while using the 'input_path' or 'path_envvar' sources") + ErrSetupConfigEmptySource = errors.New("'source' field must not be empty") +) + func (f *Flamenco) GetVersion(e echo.Context) error { return e.JSON(http.StatusOK, api.FlamencoVersion{ Version: appinfo.ExtendedVersion(), @@ -266,8 +274,8 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error { logger = logger.With().Interface("config", setupAssistantCfg).Logger() if err := checkSetupAssistantConfig(setupAssistantCfg); err != nil { - logger.Warn().Msg("setup assistant: configuration is invalid or incomplete, " + err.Error()) - return sendAPIError(e, http.StatusBadRequest, "configuration is invalid or incomplete") + logger.Error().AnErr("cause", err).Msg("setup assistant: configuration is incomplete") + return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete: %v", err) } conf := f.config.Get() @@ -337,11 +345,11 @@ func commandNeedsQuoting(cmd string) bool { func checkSetupAssistantConfig(config api.SetupAssistantConfig) error { if config.StorageLocation == "" { - return errors.New("'storageLocation' field must not be empty") + return ErrSetupConfigEmptyStorageLocation } if !config.BlenderExecutable.IsUsable { - return errors.New("sources cannot have the 'is_usable' field set to false") + return ErrSetupConfigUnusableSource } switch config.BlenderExecutable.Source { @@ -350,16 +358,20 @@ func checkSetupAssistantConfig(config api.SetupAssistantConfig) error { case api.BlenderPathSourceFileAssociation: if config.BlenderExecutable.Path == "" { - return errors.New("'path' field must not be empty while using the 'file_association' source") + return ErrSetupConfigEmptyPath } case api.BlenderPathSourceInputPath, api.BlenderPathSourcePathEnvvar: if config.BlenderExecutable.Path == "" || config.BlenderExecutable.Input == "" { - return errors.New("'path' or 'input' fields must not be empty while using the 'input_path' or 'path_envvar' sources") + return ErrSetupConfigEmptyPathOrInput } + + case "": + return ErrSetupConfigEmptySource + default: - return errors.New("unknown 'source' field value: " + string(config.BlenderExecutable.Source)) + return fmt.Errorf("unknown 'source' field value: %v", config.BlenderExecutable.Source) } return nil -- 2.30.2 From 033ec11b367d2d824001bea148f274b441ca658b Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Tue, 16 Jul 2024 21:00:33 -0300 Subject: [PATCH 26/28] OAPI: Regenerate code --- pkg/api/openapi_spec.gen.go | 392 ++++++++++++++++++------------------ 1 file changed, 196 insertions(+), 196 deletions(-) diff --git a/pkg/api/openapi_spec.gen.go b/pkg/api/openapi_spec.gen.go index 27612053..2969e07e 100644 --- a/pkg/api/openapi_spec.gen.go +++ b/pkg/api/openapi_spec.gen.go @@ -50,202 +50,202 @@ var swaggerSpec = []string{ "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", } // GetSwagger returns the content of the embedded swagger specification file -- 2.30.2 From fb4989e181a3b27539cbc03fbc109fa26b489736 Mon Sep 17 00:00:00 2001 From: Mateus Abelli Date: Sun, 8 Sep 2024 15:25:54 -0300 Subject: [PATCH 27/28] Webapp: Allow to skip adding a Blender path even if one is available --- web/app/src/views/SetupAssistantView.vue | 33 +----------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/web/app/src/views/SetupAssistantView.vue b/web/app/src/views/SetupAssistantView.vue index 80622907..0941239e 100644 --- a/web/app/src/views/SetupAssistantView.vue +++ b/web/app/src/views/SetupAssistantView.vue @@ -114,7 +114,7 @@

Choose how a Worker should invoke the Blender command when performing a task:

-
+
-
- -
-