Manager: allow setup to finish without Blender #104306
2
addon/flamenco/manager/docs/BlenderPathSource.md
generated
@ -4,7 +4,7 @@
|
|||||||
## Properties
|
## Properties
|
||||||
Name | Type | Description | Notes
|
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)
|
[[Back to Model list]](../README.md#documentation-for-models) [[Back to API list]](../README.md#documentation-for-api-endpoints) [[Back to README]](../README.md)
|
||||||
|
|
||||||
|
@ -55,6 +55,7 @@ class BlenderPathSource(ModelSimple):
|
|||||||
'FILE_ASSOCIATION': "file_association",
|
'FILE_ASSOCIATION': "file_association",
|
||||||
'PATH_ENVVAR': "path_envvar",
|
'PATH_ENVVAR': "path_envvar",
|
||||||
'INPUT_PATH': "input_path",
|
'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.
|
Note that value can be passed either in args or in kwargs, but not in both.
|
||||||
|
|
||||||
Args:
|
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:
|
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
|
_check_type (bool): if True, values for parameters in openapi_types
|
||||||
will be type checked and a TypeError will be
|
will be type checked and a TypeError will be
|
||||||
raised if the wrong type is input.
|
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.
|
Note that value can be passed either in args or in kwargs, but not in both.
|
||||||
|
|
||||||
Args:
|
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:
|
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
|
_check_type (bool): if True, values for parameters in openapi_types
|
||||||
will be type checked and a TypeError will be
|
will be type checked and a TypeError will be
|
||||||
raised if the wrong type is input.
|
raised if the wrong type is input.
|
||||||
|
@ -21,6 +21,14 @@ import (
|
|||||||
"projects.blender.org/studio/flamenco/pkg/api"
|
"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 {
|
func (f *Flamenco) GetVersion(e echo.Context) error {
|
||||||
return e.JSON(http.StatusOK, api.FlamencoVersion{
|
return e.JSON(http.StatusOK, api.FlamencoVersion{
|
||||||
Version: appinfo.ExtendedVersion(),
|
Version: appinfo.ExtendedVersion(),
|
||||||
@ -265,11 +273,9 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error {
|
|||||||
|
|
||||||
logger = logger.With().Interface("config", setupAssistantCfg).Logger()
|
logger = logger.With().Interface("config", setupAssistantCfg).Logger()
|
||||||
|
|
||||||
if setupAssistantCfg.StorageLocation == "" ||
|
if err := checkSetupAssistantConfig(setupAssistantCfg); err != nil {
|
||||||
!setupAssistantCfg.BlenderExecutable.IsUsable ||
|
logger.Error().AnErr("cause", err).Msg("setup assistant: configuration is incomplete")
|
||||||
setupAssistantCfg.BlenderExecutable.Path == "" {
|
return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete: %v", err)
|
||||||
logger.Warn().Msg("setup assistant: configuration is incomplete, unable to accept")
|
|
||||||
return sendAPIError(e, http.StatusBadRequest, "configuration is incomplete")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
conf := f.config.Get()
|
conf := f.config.Get()
|
||||||
@ -277,7 +283,7 @@ func (f *Flamenco) SaveSetupAssistantConfig(e echo.Context) error {
|
|||||||
|
|
||||||
var executable string
|
var executable string
|
||||||
switch setupAssistantCfg.BlenderExecutable.Source {
|
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
|
// The Worker will try to use the file association when the command is set
|
||||||
// to the string "blender".
|
// to the string "blender".
|
||||||
executable = "blender"
|
executable = "blender"
|
||||||
@ -336,3 +342,37 @@ func flamencoManagerDir() (string, error) {
|
|||||||
func commandNeedsQuoting(cmd string) bool {
|
func commandNeedsQuoting(cmd string) bool {
|
||||||
return strings.ContainsAny(cmd, "\n\t;()")
|
return strings.ContainsAny(cmd, "\n\t;()")
|
||||||
abelli marked this conversation as resolved
Outdated
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
func checkSetupAssistantConfig(config api.SetupAssistantConfig) error {
|
||||||
|
if config.StorageLocation == "" {
|
||||||
|
return ErrSetupConfigEmptyStorageLocation
|
||||||
|
}
|
||||||
|
|
||||||
|
if !config.BlenderExecutable.IsUsable {
|
||||||
|
return ErrSetupConfigUnusableSource
|
||||||
|
}
|
||||||
|
|
||||||
|
switch config.BlenderExecutable.Source {
|
||||||
|
case api.BlenderPathSourceDefault:
|
||||||
|
return nil
|
||||||
|
|
||||||
|
case api.BlenderPathSourceFileAssociation:
|
||||||
|
if config.BlenderExecutable.Path == "" {
|
||||||
|
return ErrSetupConfigEmptyPath
|
||||||
abelli marked this conversation as resolved
Outdated
Sybren A. Stüvel
commented
Add another Another solution would be to use the Add another `case ""`. That way the dynamically generated error below doesn't just show `"unknown 'source' field value: "` if the `source` field is empty.
Another solution would be to use the `%q` format specifier in the below-suggested call to `fmt.Errorf()`, but that would _always_ put quotes around the value. If that error is then subsequently logged with something like `log.Error().Err(err).Msg("whatever")`, those quotes will get escaped and things will be uglier than necessary. So that's why I think it's nicer to handle the empty string as a special case, and keep the non-empty-string case without quotes.
|
|||||||
|
}
|
||||||
abelli marked this conversation as resolved
Outdated
Sybren A. Stüvel
commented
This function could return an error instead of a boolean. That error can then not only be used to communicate what is still missing, but also cover this case. That'll avoid the need to pass a logger to the function. This function could return an error instead of a boolean. That error can then not only be used to communicate what is still missing, but also cover this case. That'll avoid the need to pass a logger to the function.
Sybren A. Stüvel
commented
Unfortunately Gitea does not support multiple comments for the same source line. So I'll reply to the previous one, even though at this line number there is now different code.
This should use Unfortunately Gitea does not support multiple comments for the same source line. So I'll reply to the previous one, even though at this line number there is now different code.
```
return errors.New("unknown 'source' field value: " + string(config.BlenderExecutable.Source))
```
This should use `fmt.Errorf()` instead.
|
|||||||
|
|
||||||
|
case api.BlenderPathSourceInputPath, api.BlenderPathSourcePathEnvvar:
|
||||||
|
if config.BlenderExecutable.Path == "" ||
|
||||||
|
config.BlenderExecutable.Input == "" {
|
||||||
|
return ErrSetupConfigEmptyPathOrInput
|
||||||
|
}
|
||||||
|
|
||||||
|
case "":
|
||||||
|
return ErrSetupConfigEmptySource
|
||||||
|
|
||||||
|
default:
|
||||||
|
return fmt.Errorf("unknown 'source' field value: %v", config.BlenderExecutable.Source)
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -363,6 +363,27 @@ func TestSaveSetupAssistantConfig(t *testing.T) {
|
|||||||
assert.Equal(t, expectBlenderVar, savedConfig.Variables["blender"])
|
assert.Equal(t, expectBlenderVar, savedConfig.Variables["blender"])
|
||||||
assert.Equal(t, defaultBlenderArgsVar, savedConfig.Variables["blenderArgs"])
|
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()) {
|
func metaTestFixtures(t *testing.T) (mockedFlamenco, func()) {
|
||||||
|
@ -1539,6 +1539,8 @@ components:
|
|||||||
- path_envvar
|
- path_envvar
|
||||||
# The input path was used as-is, as it points to an existing binary.
|
# The input path was used as-is, as it points to an existing binary.
|
||||||
- input_path
|
- input_path
|
||||||
|
# The input path was not provided, use whatever blender is available, without checking.
|
||||||
abelli marked this conversation as resolved
Outdated
Sybren A. Stüvel
commented
Add "…is available, without checking" to make it explicit that this will forego any checks on the path. Add "…is available, without checking" to make it explicit that this will forego any checks on the path.
|
|||||||
|
- default
|
||||||
|
|
||||||
WorkerRegistration:
|
WorkerRegistration:
|
||||||
type: object
|
type: object
|
||||||
|
392
pkg/api/openapi_spec.gen.go
generated
@ -50,202 +50,202 @@ var swaggerSpec = []string{
|
|||||||
"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",
|
||||||
}
|
}
|
||||||
|
|
||||||
// GetSwagger returns the content of the embedded swagger specification file
|
// GetSwagger returns the content of the embedded swagger specification file
|
||||||
|
2
pkg/api/openapi_types.gen.go
generated
@ -48,6 +48,8 @@ const (
|
|||||||
|
|
||||||
// Defines values for BlenderPathSource.
|
// Defines values for BlenderPathSource.
|
||||||
const (
|
const (
|
||||||
|
BlenderPathSourceDefault BlenderPathSource = "default"
|
||||||
|
|
||||||
BlenderPathSourceFileAssociation BlenderPathSource = "file_association"
|
BlenderPathSourceFileAssociation BlenderPathSource = "file_association"
|
||||||
|
|
||||||
BlenderPathSourceInputPath BlenderPathSource = "input_path"
|
BlenderPathSourceInputPath BlenderPathSource = "input_path"
|
||||||
|
@ -40,6 +40,13 @@ export default class BlenderPathSource {
|
|||||||
"input_path" = "input_path";
|
"input_path" = "input_path";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* value: "default"
|
||||||
|
* @const
|
||||||
|
*/
|
||||||
|
"default" = "default";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a <code>BlenderPathSource</code> enum value from a Javascript object name.
|
* Returns a <code>BlenderPathSource</code> enum value from a Javascript object name.
|
||||||
|
@ -114,7 +114,7 @@
|
|||||||
|
|
||||||
<p v-else>Choose how a Worker should invoke the Blender command when performing a task:</p>
|
<p v-else>Choose how a Worker should invoke the Blender command when performing a task:</p>
|
||||||
|
|
||||||
<fieldset v-if="autoFoundBlenders.length >= 1">
|
<fieldset>
|
||||||
<label v-if="autoFoundBlenderPathEnvvar" for="blender-path_envvar">
|
<label v-if="autoFoundBlenderPathEnvvar" for="blender-path_envvar">
|
||||||
<div>
|
<div>
|
||||||
<input
|
<input
|
||||||
@ -191,25 +191,19 @@
|
|||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</label>
|
</label>
|
||||||
</fieldset>
|
|
||||||
|
|
||||||
<div v-if="autoFoundBlenders.length === 0">
|
<label for="blender-default">
|
||||||
|
<div>
|
||||||
<input
|
<input
|
||||||
v-model="customBlenderExe"
|
type="radio"
|
||||||
@keyup.enter="nextStepAfterCheckBlenderExePath"
|
v-model="selectedBlender"
|
||||||
:class="{
|
name="blender"
|
||||||
'is-invalid': blenderExeCheckResult != null && !blenderExeCheckResult.is_usable,
|
:value="blenderFromDefaultSource"
|
||||||
}"
|
id="blender-default" />
|
||||||
type="text"
|
{{ sourceLabels['default'] }}
|
||||||
placeholder="Path to Blender executable" />
|
|
||||||
|
|
||||||
<p v-if="isBlenderExeChecking" class="is-in-progress">Checking...</p>
|
|
||||||
<p
|
|
||||||
v-if="blenderExeCheckResult != null && !blenderExeCheckResult.is_usable"
|
|
||||||
class="check-failed">
|
|
||||||
{{ blenderExeCheckResult.cause }}
|
|
||||||
</p>
|
|
||||||
</div>
|
</div>
|
||||||
|
</label>
|
||||||
|
</fieldset>
|
||||||
</step-item>
|
</step-item>
|
||||||
|
|
||||||
<step-item
|
<step-item
|
||||||
@ -240,6 +234,9 @@
|
|||||||
The command you provided: "<code>{{ selectedBlender.path }}</code
|
The command you provided: "<code>{{ selectedBlender.path }}</code
|
||||||
>"
|
>"
|
||||||
</dd>
|
</dd>
|
||||||
|
<dd v-if="selectedBlender.source == 'default'">
|
||||||
|
You have chosen to skip adding a blender path.
|
||||||
|
</dd>
|
||||||
</dl>
|
</dl>
|
||||||
</div>
|
</div>
|
||||||
<p v-if="isConfirmed" class="check-ok">
|
<p v-if="isConfirmed" class="check-ok">
|
||||||
@ -291,7 +288,8 @@ export default {
|
|||||||
sourceLabels: {
|
sourceLabels: {
|
||||||
file_association: 'Blender that runs when you double-click a .blend file:',
|
file_association: 'Blender that runs when you double-click a .blend file:',
|
||||||
path_envvar: 'Blender found on the $PATH environment:',
|
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,
|
isConfirming: false,
|
||||||
isConfirmed: false,
|
isConfirmed: false,
|
||||||
@ -324,6 +322,15 @@ export default {
|
|||||||
blenderFromInputPath() {
|
blenderFromInputPath() {
|
||||||
return this.allBlenders.find((b) => b.source === 'input_path');
|
return this.allBlenders.find((b) => b.source === 'input_path');
|
||||||
},
|
},
|
||||||
|
blenderFromDefaultSource() {
|
||||||
|
return {
|
||||||
|
input: '',
|
||||||
|
path: '',
|
||||||
|
source: 'default',
|
||||||
|
is_usable: true,
|
||||||
|
cause: '',
|
||||||
|
};
|
||||||
|
},
|
||||||
setupConfirmIsClickable() {
|
setupConfirmIsClickable() {
|
||||||
if (this.isConfirming || this.isConfirmed) {
|
if (this.isConfirming || this.isConfirmed) {
|
||||||
return false;
|
return false;
|
||||||
|
The check for
IsUsable
can be moved out of theswitch
since it's the same for everycase
anyway.