Jelajahi Sumber

Issue #173 WIP network costs

Niko Kovacevic 6 tahun lalu
induk
melakukan
fe12cc3735
2 mengubah file dengan 13 tambahan dan 3 penghapusan
  1. 5 2
      costmodel/aggregations.go
  2. 8 1
      costmodel/router.go

+ 5 - 2
costmodel/aggregations.go

@@ -89,7 +89,7 @@ func ComputeIdleCoefficient(costData map[string]*CostData, cli prometheusClient.
 	totalClusterCostOverWindow := (totalClusterCost / 730) * windowDuration.Hours() * (1 - discount)
 	totalContainerCost := 0.0
 	for _, costDatum := range costData {
-		// TODO nikovacevic-caching does this need to be parametrized by rate?
+		// TODO does this need to be parametrized by rate when a rate is set?
 		cpuv, ramv, gpuv, pvvs := getPriceVectors(cp, costDatum, "", discount, 1)
 		totalContainerCost += totalVector(cpuv)
 		totalContainerCost += totalVector(ramv)
@@ -192,6 +192,9 @@ func aggregateDatum(cp cloud.Provider, aggregations map[string]*Aggregation, cos
 		aggregations[key] = agg
 	}
 
+	// TODO nikovacevic-caching
+	// costDatum.NetworkData appears to be a Vector where index 0 stores all the network data (see costmodel.ComputeCostData)
+
 	mergeVectors(cp, costDatum, aggregations[key], rate, discount, idleCoefficient)
 }
 
@@ -297,7 +300,7 @@ func getPriceVectors(cp cloud.Provider, costDatum *CostData, rate string, discou
 		}
 	}
 
-	return cpuv, ramv, gpuv, pvvs
+	return cpuv, ramv, gpuv, pvvs, netv
 }
 
 func totalVector(vectors []*Vector) float64 {

+ 8 - 1
costmodel/router.go

@@ -317,6 +317,7 @@ func (a *Accesses) AggregateCostModel(w http.ResponseWriter, r *http.Request, ps
 		if offset != "" {
 			o, err := time.ParseDuration(offset)
 			if err != nil {
+				klog.V(1).Infof("error parsing offset: %s", err)
 				w.Write(wrapData(nil, err))
 				return
 			}
@@ -342,6 +343,8 @@ func (a *Accesses) AggregateCostModel(w http.ResponseWriter, r *http.Request, ps
 
 		start = startTime.Format(layout)
 		end = endTime.Format(layout)
+
+		klog.V(1).Infof("start: %s, end: %s", start, end)
 	}
 
 	// dataCount is the number of time series data expected for the given interval,
@@ -396,6 +399,7 @@ func (a *Accesses) AggregateCostModel(w http.ResponseWriter, r *http.Request, ps
 
 	data, err := a.Model.ComputeCostDataRange(a.PrometheusClient, a.KubeClientSet, a.Cloud, start, end, "1h", namespace, cluster, remoteEnabled)
 	if err != nil {
+		klog.V(1).Infof("error computing cost data range: start=%s, end=%s, err=%s", start, end, err)
 		w.Write(wrapData(nil, err))
 		return
 	}
@@ -414,9 +418,12 @@ func (a *Accesses) AggregateCostModel(w http.ResponseWriter, r *http.Request, ps
 
 	idleCoefficient := 1.0
 	if allocateIdle {
-		idleCoefficient, err = ComputeIdleCoefficient(data, a.PrometheusClient, a.Cloud, discount, fmt.Sprintf("%dh", int(dur.Hours())), offset)
+		windowStr := fmt.Sprintf("%dh", int(dur.Hours()))
+		idleCoefficient, err = ComputeIdleCoefficient(data, a.PrometheusClient, a.Cloud, discount, windowStr, offset)
 		if err != nil {
+			klog.V(1).Infof("error computing idle coefficient: windowString=%s, offset=%s, err=%s", windowStr, offset, err)
 			w.Write(wrapData(nil, err))
+			return
 		}
 	}