Просмотр исходного кода

Fix panic by checking key existence in ClusterLoadBalancers

Niko Kovacevic 4 лет назад
Родитель
Сommit
fc121f27fa
1 измененных файлов с 9 добавлено и 7 удалено
  1. 9 7
      pkg/costmodel/cluster.go

+ 9 - 7
pkg/costmodel/cluster.go

@@ -687,14 +687,16 @@ func ClusterLoadBalancers(cp cloud.Provider, client prometheus.Client, duration,
 			continue
 			continue
 		}
 		}
 
 
-		s := time.Unix(int64(result.Values[0].Timestamp), 0)
-		e := time.Unix(int64(result.Values[len(result.Values)-1].Timestamp), 0)
-		mins := e.Sub(s).Minutes()
-
-		// TODO niko/assets if mins >= threshold, interpolate for missing data?
+		if lb, ok := loadBalancerMap[key]; ok {
+			s := time.Unix(int64(result.Values[0].Timestamp), 0)
+			e := time.Unix(int64(result.Values[len(result.Values)-1].Timestamp), 0)
+			mins := e.Sub(s).Minutes()
 
 
-		loadBalancerMap[key].Start = s
-		loadBalancerMap[key].Minutes = mins
+			lb.Start = s
+			lb.Minutes = mins
+		} else {
+			log.DedupedWarningf(20, "ClusterLoadBalancers: found minutes for key that does not exist: %s", key)
+		}
 	}
 	}
 	return loadBalancerMap, nil
 	return loadBalancerMap, nil
 }
 }