github.com/cilium/cilium@v1.16.2/pkg/k8s/apis/cilium.io/v2alpha1/register.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package v2alpha1 5 6 import ( 7 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 8 "k8s.io/apimachinery/pkg/runtime" 9 "k8s.io/apimachinery/pkg/runtime/schema" 10 11 k8sconst "github.com/cilium/cilium/pkg/k8s/apis/cilium.io" 12 ) 13 14 const ( 15 // CustomResourceDefinitionGroup is the name of the third party resource group 16 CustomResourceDefinitionGroup = k8sconst.CustomResourceDefinitionGroup 17 18 // CustomResourceDefinitionVersion is the current version of the resource 19 CustomResourceDefinitionVersion = "v2alpha1" 20 21 // Cilium Endpoint Slice (CES) 22 23 // CESPluralName is the plural name of Cilium Endpoint Slice 24 CESPluralName = "ciliumendpointslices" 25 26 // CESKindDefinition is the kind name of Cilium Endpoint Slice 27 CESKindDefinition = "CiliumEndpointSlice" 28 29 // CESName is the full name of Cilium Endpoint Slice 30 CESName = CESPluralName + "." + CustomResourceDefinitionGroup 31 32 // Cilium BGP Peering Policy (BGPP) 33 34 // BGPPPluralName is the plural name of Cilium BGP Peering Policy 35 BGPPPluralName = "ciliumbgppeeringpolicies" 36 37 // BGPPKindDefinition is the kind name of Cilium BGP Peering Policy 38 BGPPKindDefinition = "CiliumBGPPeeringPolicy" 39 40 // BGPPName is the full name of Cilium BGP Peering Policy 41 BGPPName = BGPPPluralName + "." + CustomResourceDefinitionGroup 42 43 // BGPClusterConfig (BGPCC) 44 BGPCCPluralName = "ciliumbgpclusterconfigs" 45 BGPCCKindDefinition = "CiliumBGPClusterConfig" 46 BGPCCName = BGPCCPluralName + "." + CustomResourceDefinitionGroup 47 48 // BGPPeerConfig (BGPPC) 49 BGPPCPluralName = "ciliumbgppeerconfigs" 50 BGPPCKindDefinition = "CiliumBGPPeerConfig" 51 BGPPCName = BGPPCPluralName + "." + CustomResourceDefinitionGroup 52 53 // BGPAdvertisement (BGPA) 54 BGPAPluralName = "ciliumbgpadvertisements" 55 BGPAKindDefinition = "CiliumBGPAdvertisement" 56 BGPAName = BGPAPluralName + "." + CustomResourceDefinitionGroup 57 58 // BGPNodeConfig (BGPNC) 59 BGPNCPluralName = "ciliumbgpnodeconfigs" 60 BGPNCKindDefinition = "CiliumBGPNodeConfig" 61 BGPNCName = BGPNCPluralName + "." + CustomResourceDefinitionGroup 62 63 // BGPNodeConfigOverride (BGPNCO) 64 BGPNCOPluralName = "ciliumbgpnodeconfigoverrides" 65 BGPNCOKindDefinition = "CiliumBGPNodeConfigOverride" 66 BGPNCOName = BGPNCOPluralName + "." + CustomResourceDefinitionGroup 67 68 // Cilium Load Balancer IP Pool (IPPool) 69 70 // PoolPluralName is the plural name of Cilium Load Balancer IP Pool 71 PoolPluralName = "ciliumloadbalancerippools" 72 73 // PoolKindDefinition is the kind name of Cilium Peering Policy 74 PoolKindDefinition = "CiliumLoadBalancerIPPool" 75 76 // LBIPPoolName is the full name of Cilium Load Balancer IP Pool 77 LBIPPoolName = PoolPluralName + "." + CustomResourceDefinitionGroup 78 79 // CiliumNodeConfig (CNC) 80 81 // CNCPluralName is the plural name of Cilium Node Config 82 CNCPluralName = "ciliumnodeconfigs" 83 84 // CNCKindDefinition is the kind name of Cilium Node Config 85 CNCKindDefinition = "CiliumNodeConfig" 86 87 // CNCName is the full name of Cilium Node Config 88 CNCName = CNCPluralName + "." + CustomResourceDefinitionGroup 89 90 // CiliumCIDRGroup (CCG) 91 CCGPluralName = "ciliumcidrgroups" 92 CCGKindDefinition = "CiliumCIDRGroup" 93 CCGName = CCGPluralName + "." + CustomResourceDefinitionGroup 94 95 // Cilium L2 Announcement policy 96 97 // L2AnnouncementSingularName is the singular name ofCilium L2 announcement policy 98 L2AnnouncementSingularName = "ciliuml2announcementpolicy" 99 100 // L2AnnouncementPluralName is the plural name of Cilium L2 announcement policy 101 L2AnnouncementPluralName = "ciliuml2announcementpolicies" 102 103 // L2AnnouncementKindDefinition is the kind name of Cilium L2 announcement policy 104 L2AnnouncementKindDefinition = "CiliumL2AnnouncementPolicy" 105 106 // L2AnnouncementName is the full name of Cilium L2 announcement policy 107 L2AnnouncementName = L2AnnouncementPluralName + "." + CustomResourceDefinitionGroup 108 109 // CiliumPodIPPool (CPIP) 110 CPIPPluralName = "ciliumpodippools" 111 CPIPKindDefinition = "CiliumPodIPPool" 112 CPIPName = CPIPPluralName + "." + CustomResourceDefinitionGroup 113 ) 114 115 // SchemeGroupVersion is group version used to register these objects 116 var SchemeGroupVersion = schema.GroupVersion{ 117 Group: CustomResourceDefinitionGroup, 118 Version: CustomResourceDefinitionVersion, 119 } 120 121 // Resource takes an unqualified resource and returns a Group qualified GroupResource 122 func Resource(resource string) schema.GroupResource { 123 return SchemeGroupVersion.WithResource(resource).GroupResource() 124 } 125 126 var ( 127 // SchemeBuilder is needed by DeepCopy generator. 128 SchemeBuilder runtime.SchemeBuilder 129 // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. 130 localSchemeBuilder = &SchemeBuilder 131 132 // AddToScheme adds all types of this clientset into the given scheme. 133 // This allows composition of clientsets, like in: 134 // 135 // import ( 136 // "k8s.io/client-go/kubernetes" 137 // clientsetscheme "k8s.io/client-go/kubernetes/scheme" 138 // aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme" 139 // ) 140 // 141 // kclientset, _ := kubernetes.NewForConfig(c) 142 // aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme) 143 AddToScheme = localSchemeBuilder.AddToScheme 144 ) 145 146 func init() { 147 // We only register manually written functions here. The registration of the 148 // generated functions takes place in the generated files. The separation 149 // makes the code compile even when the generated files are missing. 150 localSchemeBuilder.Register(addKnownTypes) 151 } 152 153 // Adds the list of known types to api.Scheme. 154 func addKnownTypes(scheme *runtime.Scheme) error { 155 scheme.AddKnownTypes(SchemeGroupVersion, 156 &CiliumEndpointSlice{}, 157 &CiliumEndpointSliceList{}, 158 &CiliumBGPPeeringPolicy{}, 159 &CiliumBGPPeeringPolicyList{}, 160 &CiliumLoadBalancerIPPool{}, 161 &CiliumLoadBalancerIPPoolList{}, 162 &CiliumCIDRGroup{}, 163 &CiliumCIDRGroupList{}, 164 &CiliumL2AnnouncementPolicy{}, 165 &CiliumL2AnnouncementPolicyList{}, 166 &CiliumPodIPPool{}, 167 &CiliumPodIPPoolList{}, 168 &CiliumNodeConfig{}, 169 &CiliumNodeConfigList{}, 170 171 // new BGP types 172 &CiliumBGPClusterConfig{}, 173 &CiliumBGPClusterConfigList{}, 174 &CiliumBGPPeerConfig{}, 175 &CiliumBGPPeerConfigList{}, 176 &CiliumBGPAdvertisement{}, 177 &CiliumBGPAdvertisementList{}, 178 &CiliumBGPNodeConfig{}, 179 &CiliumBGPNodeConfigList{}, 180 &CiliumBGPNodeConfigOverride{}, 181 &CiliumBGPNodeConfigOverrideList{}, 182 ) 183 184 metav1.AddToGroupVersion(scheme, SchemeGroupVersion) 185 return nil 186 }