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

Clean up and implemented goroutines for get node usage

jnfrati 5 лет назад
Родитель
Сommit
ff54ede9f0
2 измененных файлов с 12 добавлено и 85 удалено
  1. 0 38
      internal/kubernetes/nodes/helpers.go
  2. 12 47
      internal/kubernetes/nodes/nodes.go

+ 0 - 38
internal/kubernetes/nodes/helpers.go

@@ -82,20 +82,6 @@ func maxResourceList(list, new corev1.ResourceList) {
 	}
 }
 
-// func IsHugePageResourceName(name corev1.ResourceName) bool {
-// 	return strings.HasPrefix(string(name), corev1.ResourceHugePagesPrefix)
-// }
-
-// var standardContainerResources = sets.NewString(
-// 	string(corev1.ResourceCPU),
-// 	string(corev1.ResourceMemory),
-// 	string(corev1.ResourceEphemeralStorage),
-// )
-
-// func IsStandardContainerResourceName(str string) bool {
-// 	return standardContainerResources.Has(str) || IsHugePageResourceName(corev1.ResourceName(str))
-// }
-
 func DescribeNodeResource(nodeNonTerminatedPodsList *corev1.PodList, node *corev1.Node) *NodeUsage {
 	allocatable := node.Status.Capacity
 	if len(node.Status.Allocatable) > 0 {
@@ -124,30 +110,6 @@ func DescribeNodeResource(nodeNonTerminatedPodsList *corev1.PodList, node *corev
 		fractionEphemeralStorageLimits = float64(ephemeralstorageLimits.Value()) / float64(allocatable.StorageEphemeral().Value()) * 100
 	}
 
-	// extResources := make([]string, 0, len(allocatable))
-	// hugePageResources := make([]string, 0, len(allocatable))
-	// for resource := range allocatable {
-	// 	if IsHugePageResourceName(resource) {
-	// 		hugePageResources = append(hugePageResources, string(resource))
-	// 	} else if !IsStandardContainerResourceName(string(resource)) && resource != corev1.ResourcePods {
-	// 		extResources = append(extResources, string(resource))
-	// 	}
-	// }
-
-	// sort.Strings(extResources)
-	// sort.Strings(hugePageResources)
-
-	// for _, resource := range hugePageResources {
-	// 	hugePageSizeRequests, hugePageSizeLimits, hugePageSizeAllocable := reqs[corev1.ResourceName(resource)], limits[corev1.ResourceName(resource)], allocatable[corev1.ResourceName(resource)]
-	// 	fractionHugePageSizeRequests := float64(0)
-	// 	fractionHugePageSizeLimits := float64(0)
-	// 	if hugePageSizeAllocable.Value() != 0 {
-	// 		fractionHugePageSizeRequests = float64(hugePageSizeRequests.Value()) / float64(hugePageSizeAllocable.Value()) * 100
-	// 		fractionHugePageSizeLimits = float64(hugePageSizeLimits.Value()) / float64(hugePageSizeAllocable.Value()) * 100
-	// 	}
-
-	// }
-
 	return &NodeUsage{
 		fractionCpuReqs,
 		fractionCpuLimits,

+ 12 - 47
internal/kubernetes/nodes/nodes.go

@@ -3,6 +3,7 @@ package nodes
 import (
 	"context"
 	"fmt"
+	"sync"
 
 	v1 "k8s.io/api/core/v1"
 	"k8s.io/client-go/kubernetes"
@@ -45,58 +46,22 @@ func GetNodesUsage(clientset kubernetes.Interface) []*NodeWithUsageData {
 	nodeList, _ := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
 
 	extNodeList := make([]*NodeWithUsageData, len(nodeList.Items))
-	for index, currentNode := range nodeList.Items {
-		podList := getPodsForNode(clientset, currentNode.Name)
-		nodeUsage := DescribeNodeResource(podList, &currentNode)
-
-		extNodeList[index] = nodeUsage.Externalize(currentNode)
+	var wg sync.WaitGroup
+	for i, node := range nodeList.Items {
+		wg.Add(1)
+		go func(index int, currentNode *v1.Node) {
+			defer wg.Done()
+			podList := getPodsForNode(clientset, currentNode.Name)
+			nodeUsage := DescribeNodeResource(podList, currentNode)
+
+			extNodeList[index] = nodeUsage.Externalize(*currentNode)
+		}(i, &node)
 	}
+	wg.Wait()
 
 	return extNodeList
 }
 
-// func GetNodesUsage(clientset kubernetes.Interface) []*NodeWithUsageData {
-// 	nodeList, _ := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
-
-// 	extNodeList := make([]*NodeWithUsageData, len(nodeList.Items))
-// 	var wg sync.WaitGroup
-// 	for i, node := range nodeList.Items {
-// 		wg.Add(1)
-// 		go func(index int, currentNode *v1.Node) {
-// 			defer wg.Done()
-// 			podList := getPodsForNode(clientset, currentNode.Name)
-// 			nodeUsage := DescribeNodeResource(podList, currentNode)
-
-// 			extNodeList[index] = nodeUsage.Externalize(*currentNode)
-// 		}(i, &node)
-// 	}
-// 	wg.Wait()
-
-// 	return extNodeList
-// }
-
-// func GetNodesUsage(clientset kubernetes.Interface) []NodeWithUsageData {
-// 	nodeList, _ := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{})
-
-// 	nodeChan := make(chan NodeWithUsageData, len(nodeList.Items))
-
-// 	for _, node := range nodeList.Items {
-// 		go func(currentNode v1.Node, nc chan<- NodeWithUsageData) {
-// 			podList := getPodsForNode(clientset, currentNode.Name)
-// 			nodeUsage := DescribeNodeResource(podList, &currentNode)
-// 			nodeChan <- *nodeUsage.Externalize(currentNode)
-// 		}(node, nodeChan)
-// 	}
-
-// 	extNodeList := make([]NodeWithUsageData, len(nodeList.Items))
-
-// 	for i := 0; i < len(nodeList.Items); i++ {
-// 		extNodeList[i] = <-nodeChan
-// 	}
-
-// 	return extNodeList
-// }
-
 func getPodsForNode(clientset kubernetes.Interface, nodeName string) *v1.PodList {
 	fmt.Printf("%s", nodeName)