-
Notifications
You must be signed in to change notification settings - Fork 2.7k
/
register.go
180 lines (142 loc) · 6.14 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
// SPDX-License-Identifier: Apache-2.0
// Copyright Authors of Cilium
package v2alpha1
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 = "v2alpha1"
// Cilium Endpoint Slice (CES)
// CESPluralName is the plural name of Cilium Endpoint Slice
CESPluralName = "ciliumendpointslices"
// CESKindDefinition is the kind name of Cilium Endpoint Slice
CESKindDefinition = "CiliumEndpointSlice"
// CESName is the full name of Cilium Endpoint Slice
CESName = CESPluralName + "." + CustomResourceDefinitionGroup
// Cilium BGP Peering Policy (BGPP)
// BGPPPluralName is the plural name of Cilium BGP Peering Policy
BGPPPluralName = "ciliumbgppeeringpolicies"
// BGPPKindDefinition is the kind name of Cilium BGP Peering Policy
BGPPKindDefinition = "CiliumBGPPeeringPolicy"
// BGPPName is the full name of Cilium BGP Peering Policy
BGPPName = BGPPPluralName + "." + CustomResourceDefinitionGroup
// BGPClusterConfig (BGPCC)
BGPCCPluralName = "ciliumbgpclusterconfigs"
BGPCCKindDefinition = "CiliumBGPClusterConfig"
BGPCCName = BGPCCPluralName + "." + CustomResourceDefinitionGroup
// BGPPeerConfig (BGPPC)
BGPPCPluralName = "ciliumbgppeerconfigs"
BGPPCKindDefinition = "CiliumBGPPeerConfig"
BGPPCName = BGPPCPluralName + "." + CustomResourceDefinitionGroup
// BGPAdvertisement (BGPA)
BGPAPluralName = "ciliumbgpadvertisements"
BGPAKindDefinition = "CiliumBGPAdvertisement"
BGPAName = BGPAPluralName + "." + CustomResourceDefinitionGroup
// BGPNodeConfig (BGPNC)
BGPNCPluralName = "ciliumbgpnodeconfigs"
BGPNCKindDefinition = "CiliumBGPNodeConfig"
BGPNCName = BGPNCPluralName + "." + CustomResourceDefinitionGroup
// BGPNodeConfigOverride (BGPNCO)
BGPNCOPluralName = "ciliumbgpnodeconfigoverrides"
BGPNCOKindDefinition = "CiliumBGPNodeConfigOverride"
BGPNCOName = BGPNCOPluralName + "." + CustomResourceDefinitionGroup
// Cilium Load Balancer IP Pool (IPPool)
// PoolPluralName is the plural name of Cilium Load Balancer IP Pool
PoolPluralName = "ciliumloadbalancerippools"
// PoolKindDefinition is the kind name of Cilium Peering Policy
PoolKindDefinition = "CiliumLoadBalancerIPPool"
// LBIPPoolName is the full name of Cilium Load Balancer IP Pool
LBIPPoolName = PoolPluralName + "." + CustomResourceDefinitionGroup
// CiliumNodeConfig (CNC)
CNCPluralName = "ciliumnodeconfigs"
CNCKindDefinition = "CiliumNodeConfig"
CNCName = CNCPluralName + "." + CustomResourceDefinitionGroup
// CiliumCIDRGroup (CCG)
CCGPluralName = "ciliumcidrgroups"
CCGKindDefinition = "CiliumCIDRGroup"
CCGName = CCGPluralName + "." + CustomResourceDefinitionGroup
// Cilium L2 Announcement policy
// L2AnnouncementSingularName is the singular name ofCilium L2 announcement policy
L2AnnouncementSingularName = "ciliuml2announcementpolicy"
// L2AnnouncementPluralName is the plural name of Cilium L2 announcement policy
L2AnnouncementPluralName = "ciliuml2announcementpolicies"
// L2AnnouncementKindDefinition is the kind name of Cilium L2 announcement policy
L2AnnouncementKindDefinition = "CiliumL2AnnouncementPolicy"
// L2AnnouncementName is the full name of Cilium L2 announcement policy
L2AnnouncementName = L2AnnouncementPluralName + "." + CustomResourceDefinitionGroup
// CiliumPodIPPool (CPIP)
CPIPPluralName = "ciliumpodippools"
CPIPKindDefinition = "CiliumPodIPPool"
CPIPName = CPIPPluralName + "." + 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,
&CiliumEndpointSlice{},
&CiliumEndpointSliceList{},
&CiliumBGPPeeringPolicy{},
&CiliumBGPPeeringPolicyList{},
&CiliumLoadBalancerIPPool{},
&CiliumLoadBalancerIPPoolList{},
&CiliumNodeConfig{},
&CiliumNodeConfigList{},
&CiliumCIDRGroup{},
&CiliumCIDRGroupList{},
&CiliumL2AnnouncementPolicy{},
&CiliumL2AnnouncementPolicyList{},
&CiliumPodIPPool{},
&CiliumPodIPPoolList{},
// new BGP types
&CiliumBGPClusterConfig{},
&CiliumBGPClusterConfigList{},
&CiliumBGPPeerConfig{},
&CiliumBGPPeerConfigList{},
&CiliumBGPAdvertisement{},
&CiliumBGPAdvertisementList{},
&CiliumBGPNodeConfig{},
&CiliumBGPNodeConfigList{},
&CiliumBGPNodeConfigOverride{},
&CiliumBGPNodeConfigOverrideList{},
)
metav1.AddToGroupVersion(scheme, SchemeGroupVersion)
return nil
}