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

Merge pull request #20 from mdaniel/safety-fixes

Safety fixes
Ajay Tripathy 7 лет назад
Родитель
Сommit
496fa873ca
3 измененных файлов с 14 добавлено и 2 удалено
  1. 5 1
      cloud/awsprovider.go
  2. 3 1
      costmodel/costmodel.go
  3. 6 0
      main.go

+ 5 - 1
cloud/awsprovider.go

@@ -289,7 +289,11 @@ func (aws *AWS) NodePricing(key string) (*Node, error) {
 		if err != nil {
 			return nil, err
 		}
-		terms := aws.Pricing[key]
+		terms, termsOk := aws.Pricing[key]
+		if !termsOk {
+			log.Printf("Unable to find any Pricing data for \"%s\"", key)
+			return nil, errors.New("Missing aws.Pricing")
+		}
 		if aws.isPreemptible(key) {
 			return &Node{
 				VCPU:         terms.VCpu,

+ 3 - 1
costmodel/costmodel.go

@@ -84,7 +84,8 @@ func ComputeCostData(cli prometheusClient.Client, clientset *kubernetes.Clientse
 
 	nodes, err := getNodeCost(clientset, cloud)
 	if err != nil {
-		log.Printf("Warning, no cost model available: " + err.Error())
+		log.Printf("Warning, no Node cost model available: " + err.Error())
+		return nil, err
 	}
 
 	podlist, err := clientset.CoreV1().Pods("").List(metav1.ListOptions{})
@@ -248,6 +249,7 @@ func getNodeCost(clientset *kubernetes.Clientset, cloud costAnalyzerCloud.Provid
 		cnode, err := cloud.NodePricing(cloud.GetKey(labels))
 		if err != nil {
 			log.Printf("Error getting node. Error: " + err.Error())
+			continue
 		}
 
 		var cpu float64

+ 6 - 0
main.go

@@ -104,10 +104,16 @@ func (a *Accesses) recordPrices() {
 			data, err := costModel.ComputeCostData(a.PrometheusClient, a.KubeClientSet, a.Cloud, "1h")
 			if err != nil {
 				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 {
 				nodeName := costs.NodeName
 				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)
 				cpu, _ := strconv.ParseFloat(node.VCPU, 64)
 				ramCost, _ := strconv.ParseFloat(node.RAMCost, 64)