Manager: remove unsupported settings & rename existing one

Comment out all unused-but-desired-in-the-future settings, remove some
settings that will never be used, and rename `ssdp_discovery` to
`autodiscoverable`.
This commit is contained in:
Sybren A. Stüvel 2022-03-17 11:25:40 +01:00
parent 882c5ee478
commit 3c01c18634
2 changed files with 78 additions and 86 deletions

@ -2,57 +2,46 @@ package config
// SPDX-License-Identifier: GPL-3.0-or-later
import (
"time"
"git.blender.org/flamenco/pkg/api"
)
// The default configuration, use DefaultConfig() to obtain a copy.
var defaultConfig = Conf{
Base: Base{
Meta: ConfMeta{Version: latestConfigVersion},
ManagerName: "Flamenco Manager",
Listen: ":8080",
ListenHTTPS: ":8433",
DatabaseDSN: "flamenco-manager.sqlite",
TaskLogsPath: "./task-logs",
// DownloadTaskSleep: 10 * time.Minute,
// DownloadTaskRecheckThrottle: 10 * time.Second,
// TaskUpdatePushMaxInterval: 5 * time.Second,
// TaskUpdatePushMaxCount: 3000,
// CancelTaskFetchInterval: 10 * time.Second,
ActiveTaskTimeoutInterval: 10 * time.Minute,
ActiveWorkerTimeoutInterval: 1 * time.Minute,
// FlamencoStr: defaultServerURL,
ManagerName: "Flamenco Manager",
Listen: ":8080",
// ListenHTTPS: ":8433",
DatabaseDSN: "flamenco-manager.sqlite",
TaskLogsPath: "./task-logs",
SSDPDiscovery: true,
// ActiveTaskTimeoutInterval: 10 * time.Minute,
// ActiveWorkerTimeoutInterval: 1 * time.Minute,
// // Days are assumed to be 24 hours long. This is not exactly accurate, but should
// // be accurate enough for this type of cleanup.
// TaskCleanupMaxAge: 14 * 24 * time.Hour,
SSDPDiscovery: false, // Only enable after SSDP discovery has been improved (avoid finding printers).
BlacklistThreshold: 3,
TaskFailAfterSoftFailCount: 3,
// BlacklistThreshold: 3,
// TaskFailAfterSoftFailCount: 3,
WorkerCleanupStatus: []string{string(api.WorkerStatusOffline)},
// WorkerCleanupStatus: []string{string(api.WorkerStatusOffline)},
TestTasks: TestTasks{
BlenderRender: BlenderRenderConfig{
JobStorage: "{job_storage}/test-jobs",
RenderOutput: "{render}/test-renders",
},
},
// TestTasks: TestTasks{
// BlenderRender: BlenderRenderConfig{
// JobStorage: "{job_storage}/test-jobs",
// RenderOutput: "{render}/test-renders",
// },
// },
Shaman: ShamanConfig{
Enabled: true,
FileStorePath: defaultShamanFilestorePath,
GarbageCollect: ShamanGarbageCollect{
Period: 24 * time.Hour,
MaxAge: 31 * 24 * time.Hour,
ExtraCheckoutDirs: []string{},
},
},
// Shaman: ShamanConfig{
// Enabled: true,
// FileStorePath: defaultShamanFilestorePath,
// GarbageCollect: ShamanGarbageCollect{
// Period: 24 * time.Hour,
// MaxAge: 31 * 24 * time.Hour,
// ExtraCheckoutDirs: []string{},
// },
// },
// JWT: jwtauth.Config{
// DownloadKeysInterval: 1 * time.Hour,
@ -78,21 +67,21 @@ var defaultConfig = Conf{
},
},
// TODO: determine useful defaults for these.
"job_storage": {
Direction: "twoway",
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": {
Direction: "twoway",
Values: VariableValues{
VariableValue{Platform: "linux", Value: "/shared/flamenco/render"},
VariableValue{Platform: "windows", Value: "S:/flamenco/render"},
VariableValue{Platform: "darwin", Value: "/Volumes/Shared/flamenco/render"},
},
},
// "job_storage": {
// Direction: "twoway",
// 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": {
// Direction: "twoway",
// Values: VariableValues{
// VariableValue{Platform: "linux", Value: "/shared/flamenco/render"},
// VariableValue{Platform: "windows", Value: "S:/flamenco/render"},
// VariableValue{Platform: "darwin", Value: "/Volumes/Shared/flamenco/render"},
// },
// },
},
}

@ -62,45 +62,46 @@ type ConfMeta struct {
}
// Base contains those settings that are shared by all configuration versions.
// Various settings are commented out, because they were brought in from
// Flamenco 2 but not implemented yet.
type Base struct {
Meta ConfMeta `yaml:"_meta"`
ManagerName string `yaml:"manager_name"`
DatabaseDSN string `yaml:"database_url"`
DatabaseDSN string `yaml:"database"`
TaskLogsPath string `yaml:"task_logs_path"`
Listen string `yaml:"listen"`
ListenHTTPS string `yaml:"listen_https"`
OwnURL string `yaml:"own_url"` // sent to workers via SSDP/UPnP
// ListenHTTPS string `yaml:"listen_https"`
// TLS certificate management. TLSxxx has priority over ACME.
TLSKey string `yaml:"tlskey"`
TLSCert string `yaml:"tlscert"`
ACMEDomainName string `yaml:"acme_domain_name"` // for the ACME Let's Encrypt client
// TLSKey string `yaml:"tlskey"`
// TLSCert string `yaml:"tlscert"`
// ACMEDomainName string `yaml:"acme_domain_name"` // for the ACME Let's Encrypt client
ActiveTaskTimeoutInterval time.Duration `yaml:"active_task_timeout_interval"`
ActiveWorkerTimeoutInterval time.Duration `yaml:"active_worker_timeout_interval"`
// ActiveTaskTimeoutInterval time.Duration `yaml:"active_task_timeout_interval"`
// ActiveWorkerTimeoutInterval time.Duration `yaml:"active_worker_timeout_interval"`
WorkerCleanupMaxAge time.Duration `yaml:"worker_cleanup_max_age"`
WorkerCleanupStatus []string `yaml:"worker_cleanup_status"`
// WorkerCleanupMaxAge time.Duration `yaml:"worker_cleanup_max_age"`
// WorkerCleanupStatus []string `yaml:"worker_cleanup_status"`
/* This many failures (on a given job+task type combination) will ban a worker
* from that task type on that job. */
BlacklistThreshold int `yaml:"blacklist_threshold"`
// BlacklistThreshold int `yaml:"blacklist_threshold"`
// When this many workers have tried the task and failed, it will be hard-failed
// (even when there are workers left that could technically retry the task).
TaskFailAfterSoftFailCount int `yaml:"task_fail_after_softfail_count"`
// TaskFailAfterSoftFailCount int `yaml:"task_fail_after_softfail_count"`
SSDPDiscovery bool `yaml:"ssdp_discovery"`
SSDPDiscovery bool `yaml:"autodiscoverable"`
TestTasks TestTasks `yaml:"test_tasks"`
// TestTasks TestTasks `yaml:"test_tasks"`
// Shaman configuration settings.
Shaman ShamanConfig `yaml:"shaman"`
// Shaman ShamanConfig `yaml:"shaman"`
// Authentication settings.
// JWT jwtauth.Config `yaml:"user_authentication"`
WorkerRegistrationSecret string `yaml:"worker_registration_secret"`
// WorkerRegistrationSecret string `yaml:"worker_registration_secret"`
// Dynamic worker pools (Azure Batch, Google Compute, AWS, that sort).
// DynamicPoolPlatforms *dppoller.Config `yaml:"dynamic_pool_platforms,omitempty"`
@ -453,32 +454,34 @@ func (c *Conf) Write(filename string) error {
// HasCustomTLS returns true if both the TLS certificate and key files are configured.
func (c *Conf) HasCustomTLS() bool {
return c.TLSCert != "" && c.TLSKey != ""
// return c.TLSCert != "" && c.TLSKey != ""
return false
}
// HasTLS returns true if either a custom certificate or ACME/Let's Encrypt is used.
func (c *Conf) HasTLS() bool {
return c.ACMEDomainName != "" || c.HasCustomTLS()
// return c.ACMEDomainName != "" || c.HasCustomTLS()
return false
}
func (c *Conf) checkTLS() {
hasTLS := c.HasCustomTLS()
// hasTLS := c.HasCustomTLS()
if hasTLS && c.ListenHTTPS == "" {
c.ListenHTTPS = c.Listen
c.Listen = ""
}
// if hasTLS && c.ListenHTTPS == "" {
// c.ListenHTTPS = c.Listen
// c.Listen = ""
// }
if !hasTLS || c.ACMEDomainName == "" {
return
}
// if !hasTLS || c.ACMEDomainName == "" {
// return
// }
log.Warn().
Str("tlscert", c.TLSCert).
Str("tlskey", c.TLSKey).
Str("acme_domain_name", c.ACMEDomainName).
Msg("ACME/Let's Encrypt will not be used because custom certificate is specified")
c.ACMEDomainName = ""
// log.Warn().
// Str("tlscert", c.TLSCert).
// Str("tlskey", c.TLSKey).
// Str("acme_domain_name", c.ACMEDomainName).
// Msg("ACME/Let's Encrypt will not be used because custom certificate is specified")
// c.ACMEDomainName = ""
}
func (c *Conf) parseURLs() {