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