...
1
16
17 package endpoints
18
19 import (
20 v1 "k8s.io/api/core/v1"
21 "k8s.io/apimachinery/pkg/types"
22 )
23
24
25 type PortsByPodUID map[types.UID][]int
26
27
28 type FullPortsByPodUID map[types.UID][]v1.ContainerPort
29
30
31 func GetContainerPortsByPodUID(ep *v1.Endpoints) PortsByPodUID {
32 m := PortsByPodUID{}
33 for _, ss := range ep.Subsets {
34 for _, port := range ss.Ports {
35 for _, addr := range ss.Addresses {
36 containerPort := port.Port
37 if _, ok := m[addr.TargetRef.UID]; !ok {
38 m[addr.TargetRef.UID] = make([]int, 0)
39 }
40 m[addr.TargetRef.UID] = append(m[addr.TargetRef.UID], int(containerPort))
41 }
42 }
43 }
44 return m
45 }
46
47
48 func GetFullContainerPortsByPodUID(ep *v1.Endpoints) FullPortsByPodUID {
49 m := FullPortsByPodUID{}
50 for _, ss := range ep.Subsets {
51 for _, port := range ss.Ports {
52 containerPort := v1.ContainerPort{
53 Name: port.Name,
54 ContainerPort: port.Port,
55 Protocol: port.Protocol,
56 }
57 for _, addr := range ss.Addresses {
58 if _, ok := m[addr.TargetRef.UID]; !ok {
59 m[addr.TargetRef.UID] = make([]v1.ContainerPort, 0)
60 }
61 m[addr.TargetRef.UID] = append(m[addr.TargetRef.UID], containerPort)
62 }
63 }
64 }
65 return m
66 }
67
View as plain text