mirror of https://github.com/grafana/grafana.git
54 lines
1.8 KiB
Go
54 lines
1.8 KiB
Go
|
package setting
|
||
|
|
||
|
import (
|
||
|
"time"
|
||
|
)
|
||
|
|
||
|
type K8sDashboardCleanupSettings struct {
|
||
|
Interval time.Duration
|
||
|
Timeout time.Duration
|
||
|
BatchSize int64
|
||
|
}
|
||
|
|
||
|
const (
|
||
|
defaultK8sDashboardCleanupInterval = 30 * time.Second
|
||
|
defaultK8sDashboardCleanupBatchSize = int64(10)
|
||
|
minK8sDashboardCleanupInterval = 10 * time.Second
|
||
|
minK8sDashboardCleanupTimeout = 5 * time.Second
|
||
|
minK8sDashboardCleanupBatchSize = int64(5)
|
||
|
maxK8sDashboardCleanupBatchSize = int64(200)
|
||
|
)
|
||
|
|
||
|
func (cfg *Cfg) readK8sDashboardCleanupSettings() {
|
||
|
section := cfg.Raw.Section("dashboard_cleanup")
|
||
|
|
||
|
// Read interval setting with validation
|
||
|
cleanupInterval := section.Key("interval").MustDuration(defaultK8sDashboardCleanupInterval)
|
||
|
if cleanupInterval < minK8sDashboardCleanupInterval {
|
||
|
cfg.Logger.Warn("[dashboard_cleanup.interval] is too low; the minimum allowed (10s) is enforced")
|
||
|
cleanupInterval = minK8sDashboardCleanupInterval
|
||
|
}
|
||
|
|
||
|
// Calculate timeout as 5 seconds less than interval, with minimum validation
|
||
|
cleanupTimeout := cleanupInterval - (5 * time.Second)
|
||
|
if cleanupTimeout < minK8sDashboardCleanupTimeout {
|
||
|
cleanupTimeout = minK8sDashboardCleanupTimeout
|
||
|
}
|
||
|
|
||
|
// Read batch size with validation
|
||
|
batchSize := section.Key("batch_size").MustInt64(defaultK8sDashboardCleanupBatchSize)
|
||
|
if batchSize < minK8sDashboardCleanupBatchSize {
|
||
|
cfg.Logger.Warn("[dashboard_cleanup.batch_size] is too low; the minimum allowed (5) is enforced")
|
||
|
batchSize = minK8sDashboardCleanupBatchSize
|
||
|
} else if batchSize > maxK8sDashboardCleanupBatchSize {
|
||
|
cfg.Logger.Warn("[dashboard_cleanup.batch_size] is too high; the maximum allowed (1000) is enforced")
|
||
|
batchSize = maxK8sDashboardCleanupBatchSize
|
||
|
}
|
||
|
|
||
|
cfg.K8sDashboardCleanup = K8sDashboardCleanupSettings{
|
||
|
Interval: cleanupInterval,
|
||
|
Timeout: cleanupTimeout,
|
||
|
BatchSize: batchSize,
|
||
|
}
|
||
|
}
|