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  }