-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
register.go
237 lines (173 loc) · 7.94 KB
/
register.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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of Cilium
package v2
import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema"
k8sconst "github.com/cilium/cilium/pkg/k8s/apis/cilium.io"
)
const (
// CustomResourceDefinitionGroup is the name of the third party resource group
CustomResourceDefinitionGroup = k8sconst.CustomResourceDefinitionGroup
// CustomResourceDefinitionVersion is the current version of the resource
CustomResourceDefinitionVersion = "v2"
// CustomResourceDefinitionSchemaVersion is semver-conformant version of CRD schema
// Used to determine if CRD needs to be updated in cluster
//
// Maintainers: Run ./Documentation/check-crd-compat-table.sh for each release
// Developers: Bump patch for each change in the CRD schema.
CustomResourceDefinitionSchemaVersion = "1.26.7"
// CustomResourceDefinitionSchemaVersionKey is key to label which holds the CRD schema version
CustomResourceDefinitionSchemaVersionKey = "io.cilium.k8s.crd.schema.version"
// Cilium Network Policy (CNP)
// CNPSingularName is the singular name of Cilium Network Policy
CNPSingularName = "ciliumnetworkpolicy"
// CNPPluralName is the plural name of Cilium Network Policy
CNPPluralName = "ciliumnetworkpolicies"
// CNPKindDefinition is the kind name for Cilium Network Policy
CNPKindDefinition = "CiliumNetworkPolicy"
// CNPName is the full name of Cilium Network Policy
CNPName = CNPPluralName + "." + CustomResourceDefinitionGroup
// Cilium Cluster wide Network Policy (CCNP)
// CCNPSingularName is the singular name of Cilium Cluster wide Network Policy
CCNPSingularName = "ciliumclusterwidenetworkpolicy"
// CCNPPluralName is the plural name of Cilium Cluster wide Network Policy
CCNPPluralName = "ciliumclusterwidenetworkpolicies"
// CCNPKindDefinition is the kind name for Cilium Cluster wide Network Policy
CCNPKindDefinition = "CiliumClusterwideNetworkPolicy"
// CCNPName is the full name of Cilium Cluster wide Network Policy
CCNPName = CCNPPluralName + "." + CustomResourceDefinitionGroup
// Cilium Egress Gateway Policy (CEGP)
// CEGPSingularName is the singular name of Cilium Egress Gateway Policy
CEGPSingularName = "ciliumegressgatewaypolicy"
// CEGPPluralName is the plural name of Cilium Egress Gateway Policy
CEGPPluralName = "ciliumegressgatewaypolicies"
// CEGPKindDefinition is the kind name of Cilium Egress Gateway Policy
CEGPKindDefinition = "CiliumEgressGatewayPolicy"
// CEGPName is the full name of Cilium Egress Gateway Policy
CEGPName = CEGPPluralName + "." + CustomResourceDefinitionGroup
// Cilium Endpoint (CEP)
// CESingularName is the singular name of Cilium Endpoint
CEPSingularName = "ciliumendpoint"
// CEPluralName is the plural name of Cilium Endpoint
CEPPluralName = "ciliumendpoints"
// CEKindDefinition is the kind name for Cilium Endpoint
CEPKindDefinition = "CiliumEndpoint"
// CEPName is the full name of Cilium Endpoint
CEPName = CEPPluralName + "." + CustomResourceDefinitionGroup
// Cilium Node (CN)
// CNSingularName is the singular name of Cilium Node
CNSingularName = "ciliumnode"
// CNPluralName is the plural name of Cilium Node
CNPluralName = "ciliumnodes"
// CNKindDefinition is the kind name for Cilium Node
CNKindDefinition = "CiliumNode"
// CNName is the full name of Cilium Node
CNName = CNPluralName + "." + CustomResourceDefinitionGroup
// Cilium Identity
// CIDSingularName is the singular name of Cilium Identity
CIDSingularName = "ciliumidentity"
// CIDPluralName is the plural name of Cilium Identity
CIDPluralName = "ciliumidentities"
// CIDKindDefinition is the kind name for Cilium Identity
CIDKindDefinition = "CiliumIdentity"
// CIDName is the full name of Cilium Identity
CIDName = CIDPluralName + "." + CustomResourceDefinitionGroup
// Cilium Local Redirect Policy (CLRP)
// CLRPSingularName is the singular name of Local Redirect Policy
CLRPSingularName = "ciliumlocalredirectpolicy"
// CLRPPluralName is the plural name of Local Redirect Policy
CLRPPluralName = "ciliumlocalredirectpolicies"
// CLRPKindDefinition is the kind name for Local Redirect Policy
CLRPKindDefinition = "CiliumLocalRedirectPolicy"
// CLRPName is the full name of Local Redirect Policy
CLRPName = CLRPPluralName + "." + CustomResourceDefinitionGroup
// Cilium External Workload (CEW)
// CEWSingularName is the singular name of Cilium External Workload
CEWSingularName = "ciliumexternalworkload"
// CEWPluralName is the plural name of Cilium External Workload
CEWPluralName = "ciliumexternalworkloads"
// CEWKindDefinition is the kind name for Cilium External Workload
CEWKindDefinition = "CiliumExternalWorkload"
// CEWName is the full name of Cilium External Workload
CEWName = CEWPluralName + "." + CustomResourceDefinitionGroup
// Cilium Cluster Envoy Config (CCEC)
// CCECSingularName is the singular name of Cilium Clusterwide Envoy Config
CCECSingularName = "ciliumclusterwideenvoyconfig"
// CCECPluralName is the plural name of Cilium Clusterwide Envoy Config
CCECPluralName = "ciliumclusterwideenvoyconfigs"
// CCECKindDefinition is the kind name of Cilium Clusterwide Envoy Config
CCECKindDefinition = "CiliumClusterwideEnvoyConfig"
// CCECName is the full name of Cilium Clusterwide Envoy Config
CCECName = CCECPluralName + "." + CustomResourceDefinitionGroup
// Cilium Envoy Config (CEC)
// CECSingularName is the singular name of Cilium Envoy Config
CECSingularName = "ciliumenvoyconfig"
// CECPluralName is the plural name of Cilium Envoy Config
CECPluralName = "ciliumenvoyconfigs"
// CECKindDefinition is the kind name of Cilium Envoy Config
CECKindDefinition = "CiliumEnvoyConfig"
// CECName is the full name of Cilium Envoy Config
CECName = CECPluralName + "." + CustomResourceDefinitionGroup
)
// SchemeGroupVersion is group version used to register these objects
var SchemeGroupVersion = schema.GroupVersion{
Group: CustomResourceDefinitionGroup,
Version: CustomResourceDefinitionVersion,
}
// Resource takes an unqualified resource and returns a Group qualified GroupResource
func Resource(resource string) schema.GroupResource {
return SchemeGroupVersion.WithResource(resource).GroupResource()
}
var (
// SchemeBuilder is needed by DeepCopy generator.
SchemeBuilder runtime.SchemeBuilder
// localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes.
localSchemeBuilder = &SchemeBuilder
// AddToScheme adds all types of this clientset into the given scheme.
// This allows composition of clientsets, like in:
//
// import (
// "k8s.io/client-go/kubernetes"
// clientsetscheme "k8s.io/client-go/kubernetes/scheme"
// aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
// )
//
// kclientset, _ := kubernetes.NewForConfig(c)
// aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
AddToScheme = localSchemeBuilder.AddToScheme
)
func init() {
// We only register manually written functions here. The registration of the
// generated functions takes place in the generated files. The separation
// makes the code compile even when the generated files are missing.
localSchemeBuilder.Register(addKnownTypes)
}
// Adds the list of known types to api.Scheme.
func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&CiliumNetworkPolicy{},
&CiliumNetworkPolicyList{},
&CiliumClusterwideNetworkPolicy{},
&CiliumClusterwideNetworkPolicyList{},
&CiliumEgressGatewayPolicy{},
&CiliumEgressGatewayPolicyList{},
&CiliumEndpoint{},
&CiliumEndpointList{},
&CiliumNode{},
&CiliumNodeList{},
&CiliumExternalWorkload{},
&CiliumExternalWorkloadList{},
&CiliumIdentity{},
&CiliumIdentityList{},
&CiliumLocalRedirectPolicy{},
&CiliumLocalRedirectPolicyList{},
&CiliumEnvoyConfig{},
&CiliumEnvoyConfigList{},
&CiliumClusterwideEnvoyConfig{},
&CiliumClusterwideEnvoyConfigList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}