package kubernetes import ( "github.com/up9inc/mizu/shared" core "k8s.io/api/core/v1" "regexp" ) func GetNodeHostToTappedPodIpsMap(tappedPods []core.Pod) map[string][]string { nodeToTappedPodIPMap := make(map[string][]string, 0) for _, pod := range tappedPods { existingList := nodeToTappedPodIPMap[pod.Spec.NodeName] if existingList == nil { nodeToTappedPodIPMap[pod.Spec.NodeName] = []string{pod.Status.PodIP} } else { nodeToTappedPodIPMap[pod.Spec.NodeName] = append(nodeToTappedPodIPMap[pod.Spec.NodeName], pod.Status.PodIP) } } return nodeToTappedPodIPMap } 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 }