mirror of
				https://github.com/kubeshark/kubeshark.git
				synced 2025-11-03 23:46:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package kubernetes
 | 
						|
 | 
						|
import (
 | 
						|
	"regexp"
 | 
						|
 | 
						|
	"github.com/up9inc/mizu/shared"
 | 
						|
	core "k8s.io/api/core/v1"
 | 
						|
	v1 "k8s.io/api/core/v1"
 | 
						|
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
 | 
						|
)
 | 
						|
 | 
						|
func GetNodeHostToTappedPodsMap(tappedPods []core.Pod) map[string][]core.Pod {
 | 
						|
	nodeToTappedPodMap := make(map[string][]core.Pod, 0)
 | 
						|
	for _, pod := range tappedPods {
 | 
						|
		minimizedPod := getMinimizedPod(pod)
 | 
						|
 | 
						|
		existingList := nodeToTappedPodMap[pod.Spec.NodeName]
 | 
						|
		if existingList == nil {
 | 
						|
			nodeToTappedPodMap[pod.Spec.NodeName] = []core.Pod{minimizedPod}
 | 
						|
		} else {
 | 
						|
			nodeToTappedPodMap[pod.Spec.NodeName] = append(nodeToTappedPodMap[pod.Spec.NodeName], minimizedPod)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return nodeToTappedPodMap
 | 
						|
}
 | 
						|
 | 
						|
func getMinimizedPod(fullPod core.Pod) core.Pod {
 | 
						|
	return core.Pod{
 | 
						|
		ObjectMeta: metav1.ObjectMeta{
 | 
						|
			Name: fullPod.Name,
 | 
						|
		},
 | 
						|
		Status: v1.PodStatus{
 | 
						|
			PodIP: fullPod.Status.PodIP,
 | 
						|
		},
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func excludeMizuPods(pods []core.Pod) []core.Pod {
 | 
						|
	mizuPrefixRegex := regexp.MustCompile("^" + MizuResourcesPrefix)
 | 
						|
 | 
						|
	nonMizuPods := make([]core.Pod, 0)
 | 
						|
	for _, pod := range pods {
 | 
						|
		if !mizuPrefixRegex.MatchString(pod.Name) {
 | 
						|
			nonMizuPods = append(nonMizuPods, pod)
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return nonMizuPods
 | 
						|
}
 | 
						|
 | 
						|
func getPodArrayDiff(oldPods []core.Pod, newPods []core.Pod) (added []core.Pod, removed []core.Pod) {
 | 
						|
	added = getMissingPods(newPods, oldPods)
 | 
						|
	removed = getMissingPods(oldPods, newPods)
 | 
						|
 | 
						|
	return added, removed
 | 
						|
}
 | 
						|
 | 
						|
//returns pods present in pods1 array and missing in pods2 array
 | 
						|
func getMissingPods(pods1 []core.Pod, pods2 []core.Pod) []core.Pod {
 | 
						|
	missingPods := make([]core.Pod, 0)
 | 
						|
	for _, pod1 := range pods1 {
 | 
						|
		var found = false
 | 
						|
		for _, pod2 := range pods2 {
 | 
						|
			if pod1.UID == pod2.UID {
 | 
						|
				found = true
 | 
						|
				break
 | 
						|
			}
 | 
						|
		}
 | 
						|
		if !found {
 | 
						|
			missingPods = append(missingPods, pod1)
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return missingPods
 | 
						|
}
 | 
						|
 | 
						|
func GetPodInfosForPods(pods []core.Pod) []*shared.PodInfo {
 | 
						|
	podInfos := make([]*shared.PodInfo, 0)
 | 
						|
	for _, pod := range pods {
 | 
						|
		podInfos = append(podInfos, &shared.PodInfo{Name: pod.Name, Namespace: pod.Namespace, NodeName: pod.Spec.NodeName})
 | 
						|
	}
 | 
						|
	return podInfos
 | 
						|
}
 |