Vivian Leung 7e40e1bbb0 Also use our Duration in pkg/shaman (#104408)
Move the `Duration` struct from `internal/manager/config` to
`pkg/duration` so that it can be used by `pkg/shaman` as well.

Reviewed-on: https://projects.blender.org/studio/flamenco/pulls/104408
2025-07-11 16:41:41 +02:00

88 lines
2.8 KiB
Go

package config
import (
"runtime"
"time"
"projects.blender.org/studio/flamenco/internal/manager/eventbus"
"projects.blender.org/studio/flamenco/pkg/duration"
shaman_config "projects.blender.org/studio/flamenco/pkg/shaman/config"
)
// SPDX-License-Identifier: GPL-3.0-or-later
const DefaultBlenderArguments = "-b -y"
// The default configuration, use DefaultConfig() to obtain a copy.
var defaultConfig = Conf{
Base: Base{
Meta: ConfMeta{Version: latestConfigVersion},
ManagerName: "Flamenco",
Listen: ":8080",
DatabaseDSN: "flamenco-manager.sqlite",
DBIntegrityCheck: duration.Duration(10 * time.Minute),
SSDPDiscovery: true,
LocalManagerStoragePath: "./flamenco-manager-storage",
SharedStoragePath: "", // Empty string means "first run", and should trigger the config setup assistant.
Shaman: shaman_config.Config{
// Enable Shaman by default, except on Windows where symlinks are still tricky.
Enabled: runtime.GOOS != "windows",
GarbageCollect: shaman_config.GarbageCollect{
Period: duration.Duration(24 * time.Hour),
MaxAge: duration.Duration(31 * 24 * time.Hour),
},
},
TaskTimeout: duration.Duration(10 * time.Minute),
WorkerTimeout: duration.Duration(1 * time.Minute),
BlocklistThreshold: 3,
TaskFailAfterSoftFailCount: 3,
MQTT: MQTTConfig{
Client: eventbus.MQTTClientConfig{
ClientID: eventbus.MQTTDefaultClientID,
TopicPrefix: eventbus.MQTTDefaultTopicPrefix,
},
},
},
Variables: map[string]Variable{
// The default commands assume that the executables are available on $PATH.
"blender": {
Values: VariableValues{
VariableValue{Platform: VariablePlatformLinux, Value: "blender"},
VariableValue{Platform: VariablePlatformWindows, Value: "blender.exe"},
VariableValue{Platform: VariablePlatformDarwin, Value: "blender"},
},
},
"blenderArgs": {
Values: VariableValues{
VariableValue{Platform: VariablePlatformAll, Value: DefaultBlenderArguments},
},
},
// TODO: determine useful defaults for these.
// "job_storage": {
// IsTwoWay: true,
// Values: VariableValues{
// VariableValue{Platform: "linux", Value: "/shared/flamenco/jobs"},
// VariableValue{Platform: "windows", Value: "S:/flamenco/jobs"},
// VariableValue{Platform: "darwin", Value: "/Volumes/Shared/flamenco/jobs"},
// },
// },
// "render": {
// IsTwoWay: true,
// Values: VariableValues{
// VariableValue{Platform: "linux", Value: "/shared/flamenco/render"},
// VariableValue{Platform: "windows", Value: "S:/flamenco/render"},
// VariableValue{Platform: "darwin", Value: "/Volumes/Shared/flamenco/render"},
// },
// },
},
// This should not be set to anything else, except in unit tests.
currentGOOS: VariablePlatform(runtime.GOOS),
}