-
Notifications
You must be signed in to change notification settings - Fork 8
/
sets.go
125 lines (103 loc) · 5.25 KB
/
sets.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
116
117
118
119
120
121
122
123
124
125
// Code generated by skv2. DO NOT EDIT.
//go:generate mockgen -source ./sets.go -destination mocks/sets.go
package v1beta1sets
import (
apiextensions_k8s_io_v1beta1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1beta1"
sksets "github.com/solo-io/skv2/contrib/pkg/sets"
"github.com/solo-io/skv2/pkg/ezkube"
"k8s.io/apimachinery/pkg/util/sets"
)
type CustomResourceDefinitionSet interface {
Keys() sets.String
List() []*apiextensions_k8s_io_v1beta1.CustomResourceDefinition
Map() map[string]*apiextensions_k8s_io_v1beta1.CustomResourceDefinition
Insert(customResourceDefinition ...*apiextensions_k8s_io_v1beta1.CustomResourceDefinition)
Equal(customResourceDefinitionSet CustomResourceDefinitionSet) bool
Has(customResourceDefinition *apiextensions_k8s_io_v1beta1.CustomResourceDefinition) bool
Delete(customResourceDefinition *apiextensions_k8s_io_v1beta1.CustomResourceDefinition)
Union(set CustomResourceDefinitionSet) CustomResourceDefinitionSet
Difference(set CustomResourceDefinitionSet) CustomResourceDefinitionSet
Intersection(set CustomResourceDefinitionSet) CustomResourceDefinitionSet
Find(id ezkube.ResourceId) (*apiextensions_k8s_io_v1beta1.CustomResourceDefinition, error)
Length() int
}
func makeGenericCustomResourceDefinitionSet(customResourceDefinitionList []*apiextensions_k8s_io_v1beta1.CustomResourceDefinition) sksets.ResourceSet {
var genericResources []ezkube.ResourceId
for _, obj := range customResourceDefinitionList {
genericResources = append(genericResources, obj)
}
return sksets.NewResourceSet(genericResources...)
}
type customResourceDefinitionSet struct {
set sksets.ResourceSet
}
func NewCustomResourceDefinitionSet(customResourceDefinitionList ...*apiextensions_k8s_io_v1beta1.CustomResourceDefinition) CustomResourceDefinitionSet {
return &customResourceDefinitionSet{set: makeGenericCustomResourceDefinitionSet(customResourceDefinitionList)}
}
func NewCustomResourceDefinitionSetFromList(customResourceDefinitionList *apiextensions_k8s_io_v1beta1.CustomResourceDefinitionList) CustomResourceDefinitionSet {
list := make([]*apiextensions_k8s_io_v1beta1.CustomResourceDefinition, 0, len(customResourceDefinitionList.Items))
for idx := range customResourceDefinitionList.Items {
list = append(list, &customResourceDefinitionList.Items[idx])
}
return &customResourceDefinitionSet{set: makeGenericCustomResourceDefinitionSet(list)}
}
func (s *customResourceDefinitionSet) Keys() sets.String {
return s.set.Keys()
}
func (s *customResourceDefinitionSet) List() []*apiextensions_k8s_io_v1beta1.CustomResourceDefinition {
var customResourceDefinitionList []*apiextensions_k8s_io_v1beta1.CustomResourceDefinition
for _, obj := range s.set.List() {
customResourceDefinitionList = append(customResourceDefinitionList, obj.(*apiextensions_k8s_io_v1beta1.CustomResourceDefinition))
}
return customResourceDefinitionList
}
func (s *customResourceDefinitionSet) Map() map[string]*apiextensions_k8s_io_v1beta1.CustomResourceDefinition {
newMap := map[string]*apiextensions_k8s_io_v1beta1.CustomResourceDefinition{}
for k, v := range s.set.Map() {
newMap[k] = v.(*apiextensions_k8s_io_v1beta1.CustomResourceDefinition)
}
return newMap
}
func (s *customResourceDefinitionSet) Insert(
customResourceDefinitionList ...*apiextensions_k8s_io_v1beta1.CustomResourceDefinition,
) {
for _, obj := range customResourceDefinitionList {
s.set.Insert(obj)
}
}
func (s *customResourceDefinitionSet) Has(customResourceDefinition *apiextensions_k8s_io_v1beta1.CustomResourceDefinition) bool {
return s.set.Has(customResourceDefinition)
}
func (s *customResourceDefinitionSet) Equal(
customResourceDefinitionSet CustomResourceDefinitionSet,
) bool {
return s.set.Equal(makeGenericCustomResourceDefinitionSet(customResourceDefinitionSet.List()))
}
func (s *customResourceDefinitionSet) Delete(CustomResourceDefinition *apiextensions_k8s_io_v1beta1.CustomResourceDefinition) {
s.set.Delete(CustomResourceDefinition)
}
func (s *customResourceDefinitionSet) Union(set CustomResourceDefinitionSet) CustomResourceDefinitionSet {
return NewCustomResourceDefinitionSet(append(s.List(), set.List()...)...)
}
func (s *customResourceDefinitionSet) Difference(set CustomResourceDefinitionSet) CustomResourceDefinitionSet {
newSet := s.set.Difference(makeGenericCustomResourceDefinitionSet(set.List()))
return &customResourceDefinitionSet{set: newSet}
}
func (s *customResourceDefinitionSet) Intersection(set CustomResourceDefinitionSet) CustomResourceDefinitionSet {
newSet := s.set.Intersection(makeGenericCustomResourceDefinitionSet(set.List()))
var customResourceDefinitionList []*apiextensions_k8s_io_v1beta1.CustomResourceDefinition
for _, obj := range newSet.List() {
customResourceDefinitionList = append(customResourceDefinitionList, obj.(*apiextensions_k8s_io_v1beta1.CustomResourceDefinition))
}
return NewCustomResourceDefinitionSet(customResourceDefinitionList...)
}
func (s *customResourceDefinitionSet) Find(id ezkube.ResourceId) (*apiextensions_k8s_io_v1beta1.CustomResourceDefinition, error) {
obj, err := s.set.Find(&apiextensions_k8s_io_v1beta1.CustomResourceDefinition{}, id)
if err != nil {
return nil, err
}
return obj.(*apiextensions_k8s_io_v1beta1.CustomResourceDefinition), nil
}
func (s *customResourceDefinitionSet) Length() int {
return s.set.Length()
}