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

Avoid nil deference with missing NodeData

Matthew L Daniel 7 лет назад
Родитель
Сommit
adfcae1fa3
1 измененных файлов с 6 добавлено и 0 удалено
  1. 6 0
      main.go

+ 6 - 0
main.go

@@ -104,10 +104,16 @@ func (a *Accesses) recordPrices() {
 			data, err := costModel.ComputeCostData(a.PrometheusClient, a.KubeClientSet, a.Cloud, "1h")
 			data, err := costModel.ComputeCostData(a.PrometheusClient, a.KubeClientSet, a.Cloud, "1h")
 			if err != nil {
 			if err != nil {
 				log.Printf("Error in price recording: " + err.Error())
 				log.Printf("Error in price recording: " + err.Error())
+				// zero the for loop so the time.Sleep will still work
+				data = map[string]*costModel.CostData{}
 			}
 			}
 			for _, costs := range data {
 			for _, costs := range data {
 				nodeName := costs.NodeName
 				nodeName := costs.NodeName
 				node := costs.NodeData
 				node := costs.NodeData
+				if node == nil {
+					log.Printf("Skipping Node \"%s\" due to missing Node Data costs", nodeName)
+					continue
+				}
 				cpuCost, _ := strconv.ParseFloat(node.VCPUCost, 64)
 				cpuCost, _ := strconv.ParseFloat(node.VCPUCost, 64)
 				cpu, _ := strconv.ParseFloat(node.VCPU, 64)
 				cpu, _ := strconv.ParseFloat(node.VCPU, 64)
 				ramCost, _ := strconv.ParseFloat(node.RAMCost, 64)
 				ramCost, _ := strconv.ParseFloat(node.RAMCost, 64)