...
1
16
17 package types
18
19 import (
20 "net/http"
21 "time"
22
23 v1 "k8s.io/api/core/v1"
24 "k8s.io/apimachinery/pkg/types"
25 )
26
27
28
29
30 type HTTPDoer interface {
31 Do(req *http.Request) (*http.Response, error)
32 }
33
34
35
36 type Timestamp struct {
37 time time.Time
38 }
39
40
41 func NewTimestamp() *Timestamp {
42 return &Timestamp{time.Now()}
43 }
44
45
46
47 func ConvertToTimestamp(timeString string) *Timestamp {
48 parsed, _ := time.Parse(RFC3339NanoLenient, timeString)
49 return &Timestamp{parsed}
50 }
51
52
53 func (t *Timestamp) Get() time.Time {
54 return t.time
55 }
56
57
58
59 func (t *Timestamp) GetString() string {
60 return t.time.Format(RFC3339NanoFixed)
61 }
62
63
64 type SortedContainerStatuses []v1.ContainerStatus
65
66 func (s SortedContainerStatuses) Len() int { return len(s) }
67 func (s SortedContainerStatuses) Swap(i, j int) { s[i], s[j] = s[j], s[i] }
68
69 func (s SortedContainerStatuses) Less(i, j int) bool {
70 return s[i].Name < s[j].Name
71 }
72
73
74
75 func SortInitContainerStatuses(p *v1.Pod, statuses []v1.ContainerStatus) {
76 containers := p.Spec.InitContainers
77 current := 0
78 for _, container := range containers {
79 for j := current; j < len(statuses); j++ {
80 if container.Name == statuses[j].Name {
81 statuses[current], statuses[j] = statuses[j], statuses[current]
82 current++
83 break
84 }
85 }
86 }
87 }
88
89
90
91 func SortStatusesOfInitContainers(p *v1.Pod, statusMap map[string]*v1.ContainerStatus) []v1.ContainerStatus {
92 containers := p.Spec.InitContainers
93 statuses := []v1.ContainerStatus{}
94 for _, container := range containers {
95 if status, found := statusMap[container.Name]; found {
96 statuses = append(statuses, *status)
97 }
98 }
99 return statuses
100 }
101
102
103 type Reservation struct {
104
105 System v1.ResourceList
106
107 Kubernetes v1.ResourceList
108 }
109
110
111 type ResolvedPodUID types.UID
112
113
114 type MirrorPodUID types.UID
115
View as plain text