github.com/cilium/cilium@v1.16.2/pkg/k8s/client/informers/externalversions/generic.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  // Code generated by informer-gen. DO NOT EDIT.
     5  
     6  package externalversions
     7  
     8  import (
     9  	"fmt"
    10  
    11  	v2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2"
    12  	v2alpha1 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2alpha1"
    13  	schema "k8s.io/apimachinery/pkg/runtime/schema"
    14  	cache "k8s.io/client-go/tools/cache"
    15  )
    16  
    17  // GenericInformer is type of SharedIndexInformer which will locate and delegate to other
    18  // sharedInformers based on type
    19  type GenericInformer interface {
    20  	Informer() cache.SharedIndexInformer
    21  	Lister() cache.GenericLister
    22  }
    23  
    24  type genericInformer struct {
    25  	informer cache.SharedIndexInformer
    26  	resource schema.GroupResource
    27  }
    28  
    29  // Informer returns the SharedIndexInformer.
    30  func (f *genericInformer) Informer() cache.SharedIndexInformer {
    31  	return f.informer
    32  }
    33  
    34  // Lister returns the GenericLister.
    35  func (f *genericInformer) Lister() cache.GenericLister {
    36  	return cache.NewGenericLister(f.Informer().GetIndexer(), f.resource)
    37  }
    38  
    39  // ForResource gives generic access to a shared informer of the matching type
    40  // TODO extend this to unknown resources with a client pool
    41  func (f *sharedInformerFactory) ForResource(resource schema.GroupVersionResource) (GenericInformer, error) {
    42  	switch resource {
    43  	// Group=cilium.io, Version=v2
    44  	case v2.SchemeGroupVersion.WithResource("ciliumclusterwideenvoyconfigs"):
    45  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumClusterwideEnvoyConfigs().Informer()}, nil
    46  	case v2.SchemeGroupVersion.WithResource("ciliumclusterwidenetworkpolicies"):
    47  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumClusterwideNetworkPolicies().Informer()}, nil
    48  	case v2.SchemeGroupVersion.WithResource("ciliumegressgatewaypolicies"):
    49  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumEgressGatewayPolicies().Informer()}, nil
    50  	case v2.SchemeGroupVersion.WithResource("ciliumendpoints"):
    51  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumEndpoints().Informer()}, nil
    52  	case v2.SchemeGroupVersion.WithResource("ciliumenvoyconfigs"):
    53  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumEnvoyConfigs().Informer()}, nil
    54  	case v2.SchemeGroupVersion.WithResource("ciliumexternalworkloads"):
    55  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumExternalWorkloads().Informer()}, nil
    56  	case v2.SchemeGroupVersion.WithResource("ciliumidentities"):
    57  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumIdentities().Informer()}, nil
    58  	case v2.SchemeGroupVersion.WithResource("ciliumlocalredirectpolicies"):
    59  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumLocalRedirectPolicies().Informer()}, nil
    60  	case v2.SchemeGroupVersion.WithResource("ciliumnetworkpolicies"):
    61  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumNetworkPolicies().Informer()}, nil
    62  	case v2.SchemeGroupVersion.WithResource("ciliumnodes"):
    63  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumNodes().Informer()}, nil
    64  	case v2.SchemeGroupVersion.WithResource("ciliumnodeconfigs"):
    65  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2().CiliumNodeConfigs().Informer()}, nil
    66  
    67  		// Group=cilium.io, Version=v2alpha1
    68  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumbgpadvertisements"):
    69  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumBGPAdvertisements().Informer()}, nil
    70  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumbgpclusterconfigs"):
    71  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumBGPClusterConfigs().Informer()}, nil
    72  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumbgpnodeconfigs"):
    73  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumBGPNodeConfigs().Informer()}, nil
    74  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumbgpnodeconfigoverrides"):
    75  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumBGPNodeConfigOverrides().Informer()}, nil
    76  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumbgppeerconfigs"):
    77  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumBGPPeerConfigs().Informer()}, nil
    78  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumbgppeeringpolicies"):
    79  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumBGPPeeringPolicies().Informer()}, nil
    80  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumcidrgroups"):
    81  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumCIDRGroups().Informer()}, nil
    82  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumendpointslices"):
    83  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumEndpointSlices().Informer()}, nil
    84  	case v2alpha1.SchemeGroupVersion.WithResource("ciliuml2announcementpolicies"):
    85  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumL2AnnouncementPolicies().Informer()}, nil
    86  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumloadbalancerippools"):
    87  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumLoadBalancerIPPools().Informer()}, nil
    88  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumnodeconfigs"):
    89  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumNodeConfigs().Informer()}, nil
    90  	case v2alpha1.SchemeGroupVersion.WithResource("ciliumpodippools"):
    91  		return &genericInformer{resource: resource.GroupResource(), informer: f.Cilium().V2alpha1().CiliumPodIPPools().Informer()}, nil
    92  
    93  	}
    94  
    95  	return nil, fmt.Errorf("no informer found for %v", resource)
    96  }