-
Notifications
You must be signed in to change notification settings - Fork 5
/
path.go
115 lines (95 loc) · 2.24 KB
/
path.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
package ingress
import (
"fmt"
kubeModels "github.com/containerum/kube-client/pkg/model"
)
type Path kubeModels.Path
func PathFromKube(kubePath kubeModels.Path) Path {
return Path(kubePath)
}
func (path Path) ToKube() kubeModels.Path {
return kubeModels.Path(path)
}
type PathList []Path
func PathListFromKube(kubeList []kubeModels.Path) PathList {
var list PathList = make([]Path, 0, len(kubeList))
for _, p := range kubeList {
list = append(list, PathFromKube(p))
}
return list
}
func (list PathList) Len() int {
return len(list)
}
func (list PathList) Empty() bool {
return list.Len() == 0
}
func (list PathList) Head() Path {
if list.Empty() {
return Path{}
}
return list[0]
}
func (list PathList) Copy() PathList {
return append(make([]Path, 0, len(list)), list...)
}
func (list *PathList) Delete(i int) PathList {
cp := list.Copy()
return append(cp[:i], cp[i+1:]...)
}
func (list PathList) Append(paths ...Path) PathList {
return append(list.Copy(), paths...)
}
func (list PathList) ToKube() []kubeModels.Path {
kubeList := make([]kubeModels.Path, 0, len(list))
for _, path := range list {
kubeList = append(kubeList, path.ToKube())
}
return kubeList
}
type Service struct {
Name string
Port int
}
func (list PathList) Services() []Service {
var services = make([]Service, 0, len(list))
for _, path := range list {
services = append(services, Service{
Name: path.ServiceName,
Port: path.ServicePort,
})
}
return services
}
func (list PathList) ServicesNames() []string {
var services = make([]string, 0, len(list))
for _, path := range list {
services = append(services, path.ServiceName)
}
return services
}
func (list PathList) ServicesPorts() []int {
var ports = make([]int, 0, len(list))
for _, path := range list {
ports = append(ports, path.ServicePort)
}
return ports
}
func (list PathList) Paths() []string {
var paths = make([]string, 0, len(list))
for _, path := range list {
paths = append(paths, path.Path)
}
return paths
}
func (list PathList) ServicesTableView() []string {
var services = make([]string, 0, len(list))
for _, path := range list {
services = append(services,
fmt.Sprintf("%q -> %s:%d",
path.Path,
path.ServiceName,
path.ServicePort))
}
return services
}