aboutsummaryrefslogtreecommitdiff
path: root/weed/admin/maintenance/config_schema.go
diff options
context:
space:
mode:
Diffstat (limited to 'weed/admin/maintenance/config_schema.go')
-rw-r--r--weed/admin/maintenance/config_schema.go190
1 files changed, 190 insertions, 0 deletions
diff --git a/weed/admin/maintenance/config_schema.go b/weed/admin/maintenance/config_schema.go
new file mode 100644
index 000000000..c911ad59c
--- /dev/null
+++ b/weed/admin/maintenance/config_schema.go
@@ -0,0 +1,190 @@
+package maintenance
+
+import (
+ "github.com/seaweedfs/seaweedfs/weed/admin/config"
+)
+
+// Type aliases for backward compatibility
+type ConfigFieldType = config.FieldType
+type ConfigFieldUnit = config.FieldUnit
+type ConfigField = config.Field
+
+// Constant aliases for backward compatibility
+const (
+ FieldTypeBool = config.FieldTypeBool
+ FieldTypeInt = config.FieldTypeInt
+ FieldTypeDuration = config.FieldTypeDuration
+ FieldTypeInterval = config.FieldTypeInterval
+ FieldTypeString = config.FieldTypeString
+ FieldTypeFloat = config.FieldTypeFloat
+)
+
+const (
+ UnitSeconds = config.UnitSeconds
+ UnitMinutes = config.UnitMinutes
+ UnitHours = config.UnitHours
+ UnitDays = config.UnitDays
+ UnitCount = config.UnitCount
+ UnitNone = config.UnitNone
+)
+
+// Function aliases for backward compatibility
+var (
+ SecondsToIntervalValueUnit = config.SecondsToIntervalValueUnit
+ IntervalValueUnitToSeconds = config.IntervalValueUnitToSeconds
+)
+
+// MaintenanceConfigSchema defines the schema for maintenance configuration
+type MaintenanceConfigSchema struct {
+ config.Schema // Embed common schema functionality
+}
+
+// GetMaintenanceConfigSchema returns the schema for maintenance configuration
+func GetMaintenanceConfigSchema() *MaintenanceConfigSchema {
+ return &MaintenanceConfigSchema{
+ Schema: config.Schema{
+ Fields: []*config.Field{
+ {
+ Name: "enabled",
+ JSONName: "enabled",
+ Type: config.FieldTypeBool,
+ DefaultValue: true,
+ Required: false,
+ DisplayName: "Enable Maintenance System",
+ Description: "When enabled, the system will automatically scan for and execute maintenance tasks",
+ HelpText: "Toggle this to enable or disable the entire maintenance system",
+ InputType: "checkbox",
+ CSSClasses: "form-check-input",
+ },
+ {
+ Name: "scan_interval_seconds",
+ JSONName: "scan_interval_seconds",
+ Type: config.FieldTypeInterval,
+ DefaultValue: 30 * 60, // 30 minutes in seconds
+ MinValue: 1 * 60, // 1 minute
+ MaxValue: 24 * 60 * 60, // 24 hours
+ Required: true,
+ DisplayName: "Scan Interval",
+ Description: "How often to scan for maintenance tasks",
+ HelpText: "The system will check for new maintenance tasks at this interval",
+ Placeholder: "30",
+ Unit: config.UnitMinutes,
+ InputType: "interval",
+ CSSClasses: "form-control",
+ },
+ {
+ Name: "worker_timeout_seconds",
+ JSONName: "worker_timeout_seconds",
+ Type: config.FieldTypeInterval,
+ DefaultValue: 5 * 60, // 5 minutes
+ MinValue: 1 * 60, // 1 minute
+ MaxValue: 60 * 60, // 1 hour
+ Required: true,
+ DisplayName: "Worker Timeout",
+ Description: "How long to wait for worker heartbeat before considering it inactive",
+ HelpText: "Workers that don't send heartbeats within this time are considered offline",
+ Placeholder: "5",
+ Unit: config.UnitMinutes,
+ InputType: "interval",
+ CSSClasses: "form-control",
+ },
+ {
+ Name: "task_timeout_seconds",
+ JSONName: "task_timeout_seconds",
+ Type: config.FieldTypeInterval,
+ DefaultValue: 2 * 60 * 60, // 2 hours
+ MinValue: 10 * 60, // 10 minutes
+ MaxValue: 24 * 60 * 60, // 24 hours
+ Required: true,
+ DisplayName: "Task Timeout",
+ Description: "Maximum time allowed for a task to complete",
+ HelpText: "Tasks that exceed this duration will be marked as failed",
+ Placeholder: "2",
+ Unit: config.UnitHours,
+ InputType: "interval",
+ CSSClasses: "form-control",
+ },
+ {
+ Name: "retry_delay_seconds",
+ JSONName: "retry_delay_seconds",
+ Type: config.FieldTypeInterval,
+ DefaultValue: 15 * 60, // 15 minutes
+ MinValue: 1 * 60, // 1 minute
+ MaxValue: 24 * 60 * 60, // 24 hours
+ Required: true,
+ DisplayName: "Retry Delay",
+ Description: "How long to wait before retrying a failed task",
+ HelpText: "Failed tasks will be retried after this delay",
+ Placeholder: "15",
+ Unit: config.UnitMinutes,
+ InputType: "interval",
+ CSSClasses: "form-control",
+ },
+ {
+ Name: "max_retries",
+ JSONName: "max_retries",
+ Type: config.FieldTypeInt,
+ DefaultValue: 3,
+ MinValue: 0,
+ MaxValue: 10,
+ Required: true,
+ DisplayName: "Max Retries",
+ Description: "Maximum number of times to retry a failed task",
+ HelpText: "Tasks that fail more than this many times will be marked as permanently failed",
+ Placeholder: "3",
+ Unit: config.UnitCount,
+ InputType: "number",
+ CSSClasses: "form-control",
+ },
+ {
+ Name: "cleanup_interval_seconds",
+ JSONName: "cleanup_interval_seconds",
+ Type: config.FieldTypeInterval,
+ DefaultValue: 24 * 60 * 60, // 24 hours
+ MinValue: 1 * 60 * 60, // 1 hour
+ MaxValue: 7 * 24 * 60 * 60, // 7 days
+ Required: true,
+ DisplayName: "Cleanup Interval",
+ Description: "How often to run maintenance cleanup operations",
+ HelpText: "Removes old task records and temporary files at this interval",
+ Placeholder: "24",
+ Unit: config.UnitHours,
+ InputType: "interval",
+ CSSClasses: "form-control",
+ },
+ {
+ Name: "task_retention_seconds",
+ JSONName: "task_retention_seconds",
+ Type: config.FieldTypeInterval,
+ DefaultValue: 7 * 24 * 60 * 60, // 7 days
+ MinValue: 1 * 24 * 60 * 60, // 1 day
+ MaxValue: 30 * 24 * 60 * 60, // 30 days
+ Required: true,
+ DisplayName: "Task Retention",
+ Description: "How long to keep completed task records",
+ HelpText: "Task history older than this duration will be automatically deleted",
+ Placeholder: "7",
+ Unit: config.UnitDays,
+ InputType: "interval",
+ CSSClasses: "form-control",
+ },
+ {
+ Name: "global_max_concurrent",
+ JSONName: "global_max_concurrent",
+ Type: config.FieldTypeInt,
+ DefaultValue: 10,
+ MinValue: 1,
+ MaxValue: 100,
+ Required: true,
+ DisplayName: "Global Max Concurrent Tasks",
+ Description: "Maximum number of maintenance tasks that can run simultaneously across all workers",
+ HelpText: "Limits the total number of maintenance operations to control system load",
+ Placeholder: "10",
+ Unit: config.UnitCount,
+ InputType: "number",
+ CSSClasses: "form-control",
+ },
+ },
+ },
+ }
+}