-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
register.go
197 lines (145 loc) · 6.35 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
// 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"
// Cilium Network Policy (CNP)
// 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)
// 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)
// 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)
// 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)
// 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
// 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)
// 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)
// 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)
// 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)
// 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
}