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,
 | 
						|
	}
 | 
						|
}
 |