Преглед изворни кода

use reduced service struct

Signed-off-by: r2k1 <yokree@gmail.com>
r2k1 пре 2 година
родитељ
комит
7aa5dcf4da
3 измењених фајлова са 32 додато и 14 уклоњено
  1. 22 4
      pkg/clustercache/clustercache.go
  2. 7 7
      pkg/costmodel/costmodel.go
  3. 3 3
      pkg/metrics/servicemetrics.go

+ 22 - 4
pkg/clustercache/clustercache.go

@@ -116,6 +116,24 @@ func transformNode(input *v1.Node) *Node {
 	}
 }
 
+type Service struct {
+	Name      string
+	Namespace string
+	Selector  map[string]string
+	Type      v1.ServiceType
+	Status    v1.ServiceStatus
+}
+
+func transformService(input *v1.Service) *Service {
+	return &Service{
+		Name:      input.Name,
+		Namespace: input.Namespace,
+		Selector:  input.Spec.Selector,
+		Type:      input.Spec.Type,
+		Status:    input.Status,
+	}
+}
+
 // ClusterCache defines an contract for an object which caches components within a cluster, ensuring
 // up to date resources using watchers
 type ClusterCache interface {
@@ -135,7 +153,7 @@ type ClusterCache interface {
 	GetAllPods() []*Pod
 
 	// GetAllServices returns all the cached services
-	GetAllServices() []*v1.Service
+	GetAllServices() []*Service
 
 	// GetAllDaemonSets returns all the cached DaemonSets
 	GetAllDaemonSets() []*appsv1.DaemonSet
@@ -320,11 +338,11 @@ func (kcc *KubernetesClusterCache) GetAllPods() []*Pod {
 	return pods
 }
 
-func (kcc *KubernetesClusterCache) GetAllServices() []*v1.Service {
-	var services []*v1.Service
+func (kcc *KubernetesClusterCache) GetAllServices() []*Service {
+	var services []*Service
 	items := kcc.serviceWatch.GetAll()
 	for _, service := range items {
-		services = append(services, service.(*v1.Service))
+		services = append(services, transformService(service.(*v1.Service)))
 	}
 	return services
 }

+ 7 - 7
pkg/costmodel/costmodel.go

@@ -1375,15 +1375,15 @@ func (cm *CostModel) GetLBCost(cp costAnalyzerCloud.Provider) (map[serviceKey]*c
 	loadBalancerMap := make(map[serviceKey]*costAnalyzerCloud.LoadBalancer)
 
 	for _, service := range servicesList {
-		namespace := service.GetObjectMeta().GetNamespace()
-		name := service.GetObjectMeta().GetName()
+		namespace := service.Namespace
+		name := service.Name
 		key := serviceKey{
 			Cluster:   env.GetClusterID(),
 			Namespace: namespace,
 			Service:   name,
 		}
 
-		if service.Spec.Type == "LoadBalancer" {
+		if service.Type == "LoadBalancer" {
 			loadBalancer, err := cp.LoadBalancerPricing()
 			if err != nil {
 				return nil, err
@@ -1408,15 +1408,15 @@ func getPodServices(cache clustercache.ClusterCache, podList []*clustercache.Pod
 	servicesList := cache.GetAllServices()
 	podServicesMapping := make(map[string]map[string][]string)
 	for _, service := range servicesList {
-		namespace := service.GetObjectMeta().GetNamespace()
-		name := service.GetObjectMeta().GetName()
+		namespace := service.Namespace
+		name := service.Name
 		key := namespace + "," + clusterID
 		if _, ok := podServicesMapping[key]; !ok {
 			podServicesMapping[key] = make(map[string][]string)
 		}
 		s := labels.Nothing()
-		if service.Spec.Selector != nil && len(service.Spec.Selector) > 0 {
-			s = labels.Set(service.Spec.Selector).AsSelectorPreValidated()
+		if service.Selector != nil && len(service.Selector) > 0 {
+			s = labels.Set(service.Selector).AsSelectorPreValidated()
 		}
 		for _, pod := range podList {
 			labelSet := labels.Set(pod.Labels)

+ 3 - 3
pkg/metrics/servicemetrics.go

@@ -39,10 +39,10 @@ func (sc KubecostServiceCollector) Collect(ch chan<- prometheus.Metric) {
 
 	svcs := sc.KubeClusterCache.GetAllServices()
 	for _, svc := range svcs {
-		serviceName := svc.GetName()
-		serviceNS := svc.GetNamespace()
+		serviceName := svc.Name
+		serviceNS := svc.Namespace
 
-		labels, values := promutil.KubeLabelsToLabels(promutil.SanitizeLabels(svc.Spec.Selector))
+		labels, values := promutil.KubeLabelsToLabels(promutil.SanitizeLabels(svc.Selector))
 		if len(labels) > 0 {
 			m := newServiceSelectorLabelsMetric(serviceName, serviceNS, "service_selector_labels", labels, values)
 			ch <- m