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

Fix for missing PVC data and network data.

Matt Bolt 6 лет назад
Родитель
Сommit
3bfe477ea0
2 измененных файлов с 17 добавлено и 17 удалено
  1. 8 8
      costmodel/costmodel.go
  2. 9 9
      costmodel/networkcosts.go

+ 8 - 8
costmodel/costmodel.go

@@ -369,7 +369,7 @@ func (cm *CostModel) ComputeCostData(cli prometheusClient.Client, clientset kube
 		return nil, err
 	}
 
-	pvClaimMapping, err := getPVInfoVector(resultPVRequests)
+	pvClaimMapping, err := getPVInfoVector(resultPVRequests, clusterID)
 	if err != nil {
 		klog.Infof("Unable to get PV Data: %s", err.Error())
 	}
@@ -380,7 +380,7 @@ func (cm *CostModel) ComputeCostData(cli prometheusClient.Client, clientset kube
 		}
 	}
 
-	networkUsageMap, err := GetNetworkUsageData(resultNetZoneRequests, resultNetRegionRequests, resultNetInternetRequests, false)
+	networkUsageMap, err := GetNetworkUsageData(resultNetZoneRequests, resultNetRegionRequests, resultNetInternetRequests, clusterID, false)
 	if err != nil {
 		klog.V(1).Infof("Unable to get Network Cost Data: %s", err.Error())
 		networkUsageMap = make(map[string]*NetworkUsageData)
@@ -1268,7 +1268,7 @@ func (cm *CostModel) ComputeCostDataRange(cli prometheusClient.Client, clientset
 		return nil, err
 	}
 
-	pvClaimMapping, err := getPVInfoVectors(resultPVRequests)
+	pvClaimMapping, err := getPVInfoVectors(resultPVRequests, clusterID)
 	if err != nil {
 		// Just log for compatibility with KSM less than 1.6
 		klog.Infof("Unable to get PV Data: %s", err.Error())
@@ -1280,7 +1280,7 @@ func (cm *CostModel) ComputeCostDataRange(cli prometheusClient.Client, clientset
 		}
 	}
 
-	networkUsageMap, err := GetNetworkUsageData(resultNetZoneRequests, resultNetRegionRequests, resultNetInternetRequests, true)
+	networkUsageMap, err := GetNetworkUsageData(resultNetZoneRequests, resultNetRegionRequests, resultNetInternetRequests, clusterID, true)
 	if err != nil {
 		klog.V(1).Infof("Unable to get Network Cost Data: %s", err.Error())
 		networkUsageMap = make(map[string]*NetworkUsageData)
@@ -1644,7 +1644,7 @@ func getCost(qr interface{}) (map[string][]*Vector, error) {
 	return toReturn, nil
 }
 
-func getPVInfoVectors(qr interface{}) (map[string]*PersistentVolumeClaimData, error) {
+func getPVInfoVectors(qr interface{}, defaultClusterID string) (map[string]*PersistentVolumeClaimData, error) {
 	pvmap := make(map[string]*PersistentVolumeClaimData)
 	data, ok := qr.(map[string]interface{})["data"]
 	if !ok {
@@ -1712,7 +1712,7 @@ func getPVInfoVectors(qr interface{}) (map[string]*PersistentVolumeClaimData, er
 		cid, ok := metricMap["cluster_id"]
 		if !ok {
 			klog.V(4).Info("Prometheus vector does not have cluster id")
-			cid = ""
+			cid = defaultClusterID
 		}
 		clusterID, ok := cid.(string)
 		if !ok {
@@ -1750,7 +1750,7 @@ func getPVInfoVectors(qr interface{}) (map[string]*PersistentVolumeClaimData, er
 	return pvmap, nil
 }
 
-func getPVInfoVector(qr interface{}) (map[string]*PersistentVolumeClaimData, error) {
+func getPVInfoVector(qr interface{}, defaultClusterID string) (map[string]*PersistentVolumeClaimData, error) {
 	pvmap := make(map[string]*PersistentVolumeClaimData)
 	data, ok := qr.(map[string]interface{})["data"]
 	if !ok {
@@ -1818,7 +1818,7 @@ func getPVInfoVector(qr interface{}) (map[string]*PersistentVolumeClaimData, err
 		cid, ok := metricMap["cluster_id"]
 		if !ok {
 			klog.V(4).Info("Prometheus vector does not have cluster id")
-			cid = ""
+			cid = defaultClusterID
 		}
 		clusterID, ok := cid.(string)
 		if !ok {

+ 9 - 9
costmodel/networkcosts.go

@@ -29,8 +29,8 @@ type NetworkUsageVector struct {
 
 // GetNetworkUsageData performs a join of the the results of zone, region, and internet usage queries to return a single
 // map containing network costs for each namespace+pod
-func GetNetworkUsageData(zr interface{}, rr interface{}, ir interface{}, isRange bool) (map[string]*NetworkUsageData, error) {
-	var vectorFn func(interface{}) (map[string]*NetworkUsageVector, error)
+func GetNetworkUsageData(zr interface{}, rr interface{}, ir interface{}, defaultClusterID string, isRange bool) (map[string]*NetworkUsageData, error) {
+	var vectorFn func(interface{}, string) (map[string]*NetworkUsageVector, error)
 
 	if isRange {
 		vectorFn = getNetworkUsageVectors
@@ -38,17 +38,17 @@ func GetNetworkUsageData(zr interface{}, rr interface{}, ir interface{}, isRange
 		vectorFn = getNetworkUsageVector
 	}
 
-	zoneNetworkMap, err := vectorFn(zr)
+	zoneNetworkMap, err := vectorFn(zr, defaultClusterID)
 	if err != nil {
 		return nil, err
 	}
 
-	regionNetworkMap, err := vectorFn(rr)
+	regionNetworkMap, err := vectorFn(rr, defaultClusterID)
 	if err != nil {
 		return nil, err
 	}
 
-	internetNetworkMap, err := vectorFn(ir)
+	internetNetworkMap, err := vectorFn(ir, defaultClusterID)
 	if err != nil {
 		return nil, err
 	}
@@ -147,7 +147,7 @@ func GetNetworkCost(usage *NetworkUsageData, cloud costAnalyzerCloud.Provider) (
 	return results, nil
 }
 
-func getNetworkUsageVector(qr interface{}) (map[string]*NetworkUsageVector, error) {
+func getNetworkUsageVector(qr interface{}, defaultClusterID string) (map[string]*NetworkUsageVector, error) {
 	ncdmap := make(map[string]*NetworkUsageVector)
 	data, ok := qr.(map[string]interface{})["data"]
 	if !ok {
@@ -197,7 +197,7 @@ func getNetworkUsageVector(qr interface{}) (map[string]*NetworkUsageVector, erro
 		cid, ok := metricMap["cluster_id"]
 		if !ok {
 			klog.V(4).Info("Prometheus vector does not have cluster id")
-			cid = ""
+			cid = defaultClusterID
 		}
 		clusterID, ok := cid.(string)
 		if !ok {
@@ -234,7 +234,7 @@ func getNetworkUsageVector(qr interface{}) (map[string]*NetworkUsageVector, erro
 	return ncdmap, nil
 }
 
-func getNetworkUsageVectors(qr interface{}) (map[string]*NetworkUsageVector, error) {
+func getNetworkUsageVectors(qr interface{}, defaultClusterID string) (map[string]*NetworkUsageVector, error) {
 	ncdmap := make(map[string]*NetworkUsageVector)
 	data, ok := qr.(map[string]interface{})["data"]
 	if !ok {
@@ -284,7 +284,7 @@ func getNetworkUsageVectors(qr interface{}) (map[string]*NetworkUsageVector, err
 		cid, ok := metricMap["cluster_id"]
 		if !ok {
 			klog.V(4).Info("Prometheus vector does not have cluster id")
-			cid = ""
+			cid = defaultClusterID
 		}
 		clusterID, ok := cid.(string)
 		if !ok {