istio.io/istio@v0.0.0-20240520182934-d79c90f27776/pkg/config/schema/kubeclient/resources.gen.go (about)

     1  // Code generated by pkg/config/schema/codegen/tools/collections.main.go. DO NOT EDIT.
     2  
     3  package kubeclient
     4  
     5  import (
     6  	"context"
     7  	"fmt"
     8  
     9  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
    10  	"k8s.io/apimachinery/pkg/runtime"
    11  	"k8s.io/apimachinery/pkg/runtime/schema"
    12  	"k8s.io/apimachinery/pkg/watch"
    13  	"k8s.io/client-go/tools/cache"
    14  
    15  	"istio.io/istio/pkg/config/schema/gvr"
    16  	"istio.io/istio/pkg/kube/informerfactory"
    17  	ktypes "istio.io/istio/pkg/kube/kubetypes"
    18  	"istio.io/istio/pkg/ptr"
    19  
    20  	k8sioapiadmissionregistrationv1 "k8s.io/api/admissionregistration/v1"
    21  	k8sioapiappsv1 "k8s.io/api/apps/v1"
    22  	k8sioapicertificatesv1 "k8s.io/api/certificates/v1"
    23  	k8sioapicoordinationv1 "k8s.io/api/coordination/v1"
    24  	k8sioapicorev1 "k8s.io/api/core/v1"
    25  	k8sioapidiscoveryv1 "k8s.io/api/discovery/v1"
    26  	k8sioapinetworkingv1 "k8s.io/api/networking/v1"
    27  	k8sioapiextensionsapiserverpkgapisapiextensionsv1 "k8s.io/apiextensions-apiserver/pkg/apis/apiextensions/v1"
    28  	sigsk8siogatewayapiapisv1 "sigs.k8s.io/gateway-api/apis/v1"
    29  	sigsk8siogatewayapiapisv1alpha2 "sigs.k8s.io/gateway-api/apis/v1alpha2"
    30  	sigsk8siogatewayapiapisv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1"
    31  
    32  	apiistioioapiextensionsv1alpha1 "istio.io/client-go/pkg/apis/extensions/v1alpha1"
    33  	apiistioioapinetworkingv1alpha3 "istio.io/client-go/pkg/apis/networking/v1alpha3"
    34  	apiistioioapinetworkingv1beta1 "istio.io/client-go/pkg/apis/networking/v1beta1"
    35  	apiistioioapisecurityv1beta1 "istio.io/client-go/pkg/apis/security/v1beta1"
    36  	apiistioioapitelemetryv1alpha1 "istio.io/client-go/pkg/apis/telemetry/v1alpha1"
    37  )
    38  
    39  func GetWriteClient[T runtime.Object](c ClientGetter, namespace string) ktypes.WriteAPI[T] {
    40  	switch any(ptr.Empty[T]()).(type) {
    41  	case *apiistioioapisecurityv1beta1.AuthorizationPolicy:
    42  		return c.Istio().SecurityV1beta1().AuthorizationPolicies(namespace).(ktypes.WriteAPI[T])
    43  	case *k8sioapicertificatesv1.CertificateSigningRequest:
    44  		return c.Kube().CertificatesV1().CertificateSigningRequests().(ktypes.WriteAPI[T])
    45  	case *k8sioapicorev1.ConfigMap:
    46  		return c.Kube().CoreV1().ConfigMaps(namespace).(ktypes.WriteAPI[T])
    47  	case *k8sioapiextensionsapiserverpkgapisapiextensionsv1.CustomResourceDefinition:
    48  		return c.Ext().ApiextensionsV1().CustomResourceDefinitions().(ktypes.WriteAPI[T])
    49  	case *k8sioapiappsv1.DaemonSet:
    50  		return c.Kube().AppsV1().DaemonSets(namespace).(ktypes.WriteAPI[T])
    51  	case *k8sioapiappsv1.Deployment:
    52  		return c.Kube().AppsV1().Deployments(namespace).(ktypes.WriteAPI[T])
    53  	case *apiistioioapinetworkingv1alpha3.DestinationRule:
    54  		return c.Istio().NetworkingV1alpha3().DestinationRules(namespace).(ktypes.WriteAPI[T])
    55  	case *k8sioapidiscoveryv1.EndpointSlice:
    56  		return c.Kube().DiscoveryV1().EndpointSlices(namespace).(ktypes.WriteAPI[T])
    57  	case *k8sioapicorev1.Endpoints:
    58  		return c.Kube().CoreV1().Endpoints(namespace).(ktypes.WriteAPI[T])
    59  	case *apiistioioapinetworkingv1alpha3.EnvoyFilter:
    60  		return c.Istio().NetworkingV1alpha3().EnvoyFilters(namespace).(ktypes.WriteAPI[T])
    61  	case *sigsk8siogatewayapiapisv1.GRPCRoute:
    62  		return c.GatewayAPI().GatewayV1().GRPCRoutes(namespace).(ktypes.WriteAPI[T])
    63  	case *apiistioioapinetworkingv1alpha3.Gateway:
    64  		return c.Istio().NetworkingV1alpha3().Gateways(namespace).(ktypes.WriteAPI[T])
    65  	case *sigsk8siogatewayapiapisv1beta1.GatewayClass:
    66  		return c.GatewayAPI().GatewayV1beta1().GatewayClasses().(ktypes.WriteAPI[T])
    67  	case *sigsk8siogatewayapiapisv1beta1.HTTPRoute:
    68  		return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(namespace).(ktypes.WriteAPI[T])
    69  	case *k8sioapinetworkingv1.Ingress:
    70  		return c.Kube().NetworkingV1().Ingresses(namespace).(ktypes.WriteAPI[T])
    71  	case *k8sioapinetworkingv1.IngressClass:
    72  		return c.Kube().NetworkingV1().IngressClasses().(ktypes.WriteAPI[T])
    73  	case *sigsk8siogatewayapiapisv1beta1.Gateway:
    74  		return c.GatewayAPI().GatewayV1beta1().Gateways(namespace).(ktypes.WriteAPI[T])
    75  	case *k8sioapicoordinationv1.Lease:
    76  		return c.Kube().CoordinationV1().Leases(namespace).(ktypes.WriteAPI[T])
    77  	case *k8sioapiadmissionregistrationv1.MutatingWebhookConfiguration:
    78  		return c.Kube().AdmissionregistrationV1().MutatingWebhookConfigurations().(ktypes.WriteAPI[T])
    79  	case *k8sioapicorev1.Namespace:
    80  		return c.Kube().CoreV1().Namespaces().(ktypes.WriteAPI[T])
    81  	case *k8sioapicorev1.Node:
    82  		return c.Kube().CoreV1().Nodes().(ktypes.WriteAPI[T])
    83  	case *apiistioioapisecurityv1beta1.PeerAuthentication:
    84  		return c.Istio().SecurityV1beta1().PeerAuthentications(namespace).(ktypes.WriteAPI[T])
    85  	case *k8sioapicorev1.Pod:
    86  		return c.Kube().CoreV1().Pods(namespace).(ktypes.WriteAPI[T])
    87  	case *apiistioioapinetworkingv1beta1.ProxyConfig:
    88  		return c.Istio().NetworkingV1beta1().ProxyConfigs(namespace).(ktypes.WriteAPI[T])
    89  	case *sigsk8siogatewayapiapisv1beta1.ReferenceGrant:
    90  		return c.GatewayAPI().GatewayV1beta1().ReferenceGrants(namespace).(ktypes.WriteAPI[T])
    91  	case *apiistioioapisecurityv1beta1.RequestAuthentication:
    92  		return c.Istio().SecurityV1beta1().RequestAuthentications(namespace).(ktypes.WriteAPI[T])
    93  	case *k8sioapicorev1.Secret:
    94  		return c.Kube().CoreV1().Secrets(namespace).(ktypes.WriteAPI[T])
    95  	case *k8sioapicorev1.Service:
    96  		return c.Kube().CoreV1().Services(namespace).(ktypes.WriteAPI[T])
    97  	case *k8sioapicorev1.ServiceAccount:
    98  		return c.Kube().CoreV1().ServiceAccounts(namespace).(ktypes.WriteAPI[T])
    99  	case *apiistioioapinetworkingv1alpha3.ServiceEntry:
   100  		return c.Istio().NetworkingV1alpha3().ServiceEntries(namespace).(ktypes.WriteAPI[T])
   101  	case *apiistioioapinetworkingv1alpha3.Sidecar:
   102  		return c.Istio().NetworkingV1alpha3().Sidecars(namespace).(ktypes.WriteAPI[T])
   103  	case *k8sioapiappsv1.StatefulSet:
   104  		return c.Kube().AppsV1().StatefulSets(namespace).(ktypes.WriteAPI[T])
   105  	case *sigsk8siogatewayapiapisv1alpha2.TCPRoute:
   106  		return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(namespace).(ktypes.WriteAPI[T])
   107  	case *sigsk8siogatewayapiapisv1alpha2.TLSRoute:
   108  		return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(namespace).(ktypes.WriteAPI[T])
   109  	case *apiistioioapitelemetryv1alpha1.Telemetry:
   110  		return c.Istio().TelemetryV1alpha1().Telemetries(namespace).(ktypes.WriteAPI[T])
   111  	case *sigsk8siogatewayapiapisv1alpha2.UDPRoute:
   112  		return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(namespace).(ktypes.WriteAPI[T])
   113  	case *k8sioapiadmissionregistrationv1.ValidatingWebhookConfiguration:
   114  		return c.Kube().AdmissionregistrationV1().ValidatingWebhookConfigurations().(ktypes.WriteAPI[T])
   115  	case *apiistioioapinetworkingv1alpha3.VirtualService:
   116  		return c.Istio().NetworkingV1alpha3().VirtualServices(namespace).(ktypes.WriteAPI[T])
   117  	case *apiistioioapiextensionsv1alpha1.WasmPlugin:
   118  		return c.Istio().ExtensionsV1alpha1().WasmPlugins(namespace).(ktypes.WriteAPI[T])
   119  	case *apiistioioapinetworkingv1alpha3.WorkloadEntry:
   120  		return c.Istio().NetworkingV1alpha3().WorkloadEntries(namespace).(ktypes.WriteAPI[T])
   121  	case *apiistioioapinetworkingv1alpha3.WorkloadGroup:
   122  		return c.Istio().NetworkingV1alpha3().WorkloadGroups(namespace).(ktypes.WriteAPI[T])
   123  	default:
   124  		panic(fmt.Sprintf("Unknown type %T", ptr.Empty[T]()))
   125  	}
   126  }
   127  
   128  func GetClient[T, TL runtime.Object](c ClientGetter, namespace string) ktypes.ReadWriteAPI[T, TL] {
   129  	switch any(ptr.Empty[T]()).(type) {
   130  	case *apiistioioapisecurityv1beta1.AuthorizationPolicy:
   131  		return c.Istio().SecurityV1beta1().AuthorizationPolicies(namespace).(ktypes.ReadWriteAPI[T, TL])
   132  	case *k8sioapicertificatesv1.CertificateSigningRequest:
   133  		return c.Kube().CertificatesV1().CertificateSigningRequests().(ktypes.ReadWriteAPI[T, TL])
   134  	case *k8sioapicorev1.ConfigMap:
   135  		return c.Kube().CoreV1().ConfigMaps(namespace).(ktypes.ReadWriteAPI[T, TL])
   136  	case *k8sioapiextensionsapiserverpkgapisapiextensionsv1.CustomResourceDefinition:
   137  		return c.Ext().ApiextensionsV1().CustomResourceDefinitions().(ktypes.ReadWriteAPI[T, TL])
   138  	case *k8sioapiappsv1.DaemonSet:
   139  		return c.Kube().AppsV1().DaemonSets(namespace).(ktypes.ReadWriteAPI[T, TL])
   140  	case *k8sioapiappsv1.Deployment:
   141  		return c.Kube().AppsV1().Deployments(namespace).(ktypes.ReadWriteAPI[T, TL])
   142  	case *apiistioioapinetworkingv1alpha3.DestinationRule:
   143  		return c.Istio().NetworkingV1alpha3().DestinationRules(namespace).(ktypes.ReadWriteAPI[T, TL])
   144  	case *k8sioapidiscoveryv1.EndpointSlice:
   145  		return c.Kube().DiscoveryV1().EndpointSlices(namespace).(ktypes.ReadWriteAPI[T, TL])
   146  	case *k8sioapicorev1.Endpoints:
   147  		return c.Kube().CoreV1().Endpoints(namespace).(ktypes.ReadWriteAPI[T, TL])
   148  	case *apiistioioapinetworkingv1alpha3.EnvoyFilter:
   149  		return c.Istio().NetworkingV1alpha3().EnvoyFilters(namespace).(ktypes.ReadWriteAPI[T, TL])
   150  	case *sigsk8siogatewayapiapisv1.GRPCRoute:
   151  		return c.GatewayAPI().GatewayV1().GRPCRoutes(namespace).(ktypes.ReadWriteAPI[T, TL])
   152  	case *apiistioioapinetworkingv1alpha3.Gateway:
   153  		return c.Istio().NetworkingV1alpha3().Gateways(namespace).(ktypes.ReadWriteAPI[T, TL])
   154  	case *sigsk8siogatewayapiapisv1beta1.GatewayClass:
   155  		return c.GatewayAPI().GatewayV1beta1().GatewayClasses().(ktypes.ReadWriteAPI[T, TL])
   156  	case *sigsk8siogatewayapiapisv1beta1.HTTPRoute:
   157  		return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(namespace).(ktypes.ReadWriteAPI[T, TL])
   158  	case *k8sioapinetworkingv1.Ingress:
   159  		return c.Kube().NetworkingV1().Ingresses(namespace).(ktypes.ReadWriteAPI[T, TL])
   160  	case *k8sioapinetworkingv1.IngressClass:
   161  		return c.Kube().NetworkingV1().IngressClasses().(ktypes.ReadWriteAPI[T, TL])
   162  	case *sigsk8siogatewayapiapisv1beta1.Gateway:
   163  		return c.GatewayAPI().GatewayV1beta1().Gateways(namespace).(ktypes.ReadWriteAPI[T, TL])
   164  	case *k8sioapicoordinationv1.Lease:
   165  		return c.Kube().CoordinationV1().Leases(namespace).(ktypes.ReadWriteAPI[T, TL])
   166  	case *k8sioapiadmissionregistrationv1.MutatingWebhookConfiguration:
   167  		return c.Kube().AdmissionregistrationV1().MutatingWebhookConfigurations().(ktypes.ReadWriteAPI[T, TL])
   168  	case *k8sioapicorev1.Namespace:
   169  		return c.Kube().CoreV1().Namespaces().(ktypes.ReadWriteAPI[T, TL])
   170  	case *k8sioapicorev1.Node:
   171  		return c.Kube().CoreV1().Nodes().(ktypes.ReadWriteAPI[T, TL])
   172  	case *apiistioioapisecurityv1beta1.PeerAuthentication:
   173  		return c.Istio().SecurityV1beta1().PeerAuthentications(namespace).(ktypes.ReadWriteAPI[T, TL])
   174  	case *k8sioapicorev1.Pod:
   175  		return c.Kube().CoreV1().Pods(namespace).(ktypes.ReadWriteAPI[T, TL])
   176  	case *apiistioioapinetworkingv1beta1.ProxyConfig:
   177  		return c.Istio().NetworkingV1beta1().ProxyConfigs(namespace).(ktypes.ReadWriteAPI[T, TL])
   178  	case *sigsk8siogatewayapiapisv1beta1.ReferenceGrant:
   179  		return c.GatewayAPI().GatewayV1beta1().ReferenceGrants(namespace).(ktypes.ReadWriteAPI[T, TL])
   180  	case *apiistioioapisecurityv1beta1.RequestAuthentication:
   181  		return c.Istio().SecurityV1beta1().RequestAuthentications(namespace).(ktypes.ReadWriteAPI[T, TL])
   182  	case *k8sioapicorev1.Secret:
   183  		return c.Kube().CoreV1().Secrets(namespace).(ktypes.ReadWriteAPI[T, TL])
   184  	case *k8sioapicorev1.Service:
   185  		return c.Kube().CoreV1().Services(namespace).(ktypes.ReadWriteAPI[T, TL])
   186  	case *k8sioapicorev1.ServiceAccount:
   187  		return c.Kube().CoreV1().ServiceAccounts(namespace).(ktypes.ReadWriteAPI[T, TL])
   188  	case *apiistioioapinetworkingv1alpha3.ServiceEntry:
   189  		return c.Istio().NetworkingV1alpha3().ServiceEntries(namespace).(ktypes.ReadWriteAPI[T, TL])
   190  	case *apiistioioapinetworkingv1alpha3.Sidecar:
   191  		return c.Istio().NetworkingV1alpha3().Sidecars(namespace).(ktypes.ReadWriteAPI[T, TL])
   192  	case *k8sioapiappsv1.StatefulSet:
   193  		return c.Kube().AppsV1().StatefulSets(namespace).(ktypes.ReadWriteAPI[T, TL])
   194  	case *sigsk8siogatewayapiapisv1alpha2.TCPRoute:
   195  		return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(namespace).(ktypes.ReadWriteAPI[T, TL])
   196  	case *sigsk8siogatewayapiapisv1alpha2.TLSRoute:
   197  		return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(namespace).(ktypes.ReadWriteAPI[T, TL])
   198  	case *apiistioioapitelemetryv1alpha1.Telemetry:
   199  		return c.Istio().TelemetryV1alpha1().Telemetries(namespace).(ktypes.ReadWriteAPI[T, TL])
   200  	case *sigsk8siogatewayapiapisv1alpha2.UDPRoute:
   201  		return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(namespace).(ktypes.ReadWriteAPI[T, TL])
   202  	case *k8sioapiadmissionregistrationv1.ValidatingWebhookConfiguration:
   203  		return c.Kube().AdmissionregistrationV1().ValidatingWebhookConfigurations().(ktypes.ReadWriteAPI[T, TL])
   204  	case *apiistioioapinetworkingv1alpha3.VirtualService:
   205  		return c.Istio().NetworkingV1alpha3().VirtualServices(namespace).(ktypes.ReadWriteAPI[T, TL])
   206  	case *apiistioioapiextensionsv1alpha1.WasmPlugin:
   207  		return c.Istio().ExtensionsV1alpha1().WasmPlugins(namespace).(ktypes.ReadWriteAPI[T, TL])
   208  	case *apiistioioapinetworkingv1alpha3.WorkloadEntry:
   209  		return c.Istio().NetworkingV1alpha3().WorkloadEntries(namespace).(ktypes.ReadWriteAPI[T, TL])
   210  	case *apiistioioapinetworkingv1alpha3.WorkloadGroup:
   211  		return c.Istio().NetworkingV1alpha3().WorkloadGroups(namespace).(ktypes.ReadWriteAPI[T, TL])
   212  	default:
   213  		panic(fmt.Sprintf("Unknown type %T", ptr.Empty[T]()))
   214  	}
   215  }
   216  
   217  func gvrToObject(g schema.GroupVersionResource) runtime.Object {
   218  	switch g {
   219  	case gvr.AuthorizationPolicy:
   220  		return &apiistioioapisecurityv1beta1.AuthorizationPolicy{}
   221  	case gvr.CertificateSigningRequest:
   222  		return &k8sioapicertificatesv1.CertificateSigningRequest{}
   223  	case gvr.ConfigMap:
   224  		return &k8sioapicorev1.ConfigMap{}
   225  	case gvr.CustomResourceDefinition:
   226  		return &k8sioapiextensionsapiserverpkgapisapiextensionsv1.CustomResourceDefinition{}
   227  	case gvr.DaemonSet:
   228  		return &k8sioapiappsv1.DaemonSet{}
   229  	case gvr.Deployment:
   230  		return &k8sioapiappsv1.Deployment{}
   231  	case gvr.DestinationRule:
   232  		return &apiistioioapinetworkingv1alpha3.DestinationRule{}
   233  	case gvr.EndpointSlice:
   234  		return &k8sioapidiscoveryv1.EndpointSlice{}
   235  	case gvr.Endpoints:
   236  		return &k8sioapicorev1.Endpoints{}
   237  	case gvr.EnvoyFilter:
   238  		return &apiistioioapinetworkingv1alpha3.EnvoyFilter{}
   239  	case gvr.GRPCRoute:
   240  		return &sigsk8siogatewayapiapisv1.GRPCRoute{}
   241  	case gvr.Gateway:
   242  		return &apiistioioapinetworkingv1alpha3.Gateway{}
   243  	case gvr.GatewayClass:
   244  		return &sigsk8siogatewayapiapisv1beta1.GatewayClass{}
   245  	case gvr.HTTPRoute:
   246  		return &sigsk8siogatewayapiapisv1beta1.HTTPRoute{}
   247  	case gvr.Ingress:
   248  		return &k8sioapinetworkingv1.Ingress{}
   249  	case gvr.IngressClass:
   250  		return &k8sioapinetworkingv1.IngressClass{}
   251  	case gvr.KubernetesGateway:
   252  		return &sigsk8siogatewayapiapisv1beta1.Gateway{}
   253  	case gvr.Lease:
   254  		return &k8sioapicoordinationv1.Lease{}
   255  	case gvr.MutatingWebhookConfiguration:
   256  		return &k8sioapiadmissionregistrationv1.MutatingWebhookConfiguration{}
   257  	case gvr.Namespace:
   258  		return &k8sioapicorev1.Namespace{}
   259  	case gvr.Node:
   260  		return &k8sioapicorev1.Node{}
   261  	case gvr.PeerAuthentication:
   262  		return &apiistioioapisecurityv1beta1.PeerAuthentication{}
   263  	case gvr.Pod:
   264  		return &k8sioapicorev1.Pod{}
   265  	case gvr.ProxyConfig:
   266  		return &apiistioioapinetworkingv1beta1.ProxyConfig{}
   267  	case gvr.ReferenceGrant:
   268  		return &sigsk8siogatewayapiapisv1beta1.ReferenceGrant{}
   269  	case gvr.RequestAuthentication:
   270  		return &apiistioioapisecurityv1beta1.RequestAuthentication{}
   271  	case gvr.Secret:
   272  		return &k8sioapicorev1.Secret{}
   273  	case gvr.Service:
   274  		return &k8sioapicorev1.Service{}
   275  	case gvr.ServiceAccount:
   276  		return &k8sioapicorev1.ServiceAccount{}
   277  	case gvr.ServiceEntry:
   278  		return &apiistioioapinetworkingv1alpha3.ServiceEntry{}
   279  	case gvr.Sidecar:
   280  		return &apiistioioapinetworkingv1alpha3.Sidecar{}
   281  	case gvr.StatefulSet:
   282  		return &k8sioapiappsv1.StatefulSet{}
   283  	case gvr.TCPRoute:
   284  		return &sigsk8siogatewayapiapisv1alpha2.TCPRoute{}
   285  	case gvr.TLSRoute:
   286  		return &sigsk8siogatewayapiapisv1alpha2.TLSRoute{}
   287  	case gvr.Telemetry:
   288  		return &apiistioioapitelemetryv1alpha1.Telemetry{}
   289  	case gvr.UDPRoute:
   290  		return &sigsk8siogatewayapiapisv1alpha2.UDPRoute{}
   291  	case gvr.ValidatingWebhookConfiguration:
   292  		return &k8sioapiadmissionregistrationv1.ValidatingWebhookConfiguration{}
   293  	case gvr.VirtualService:
   294  		return &apiistioioapinetworkingv1alpha3.VirtualService{}
   295  	case gvr.WasmPlugin:
   296  		return &apiistioioapiextensionsv1alpha1.WasmPlugin{}
   297  	case gvr.WorkloadEntry:
   298  		return &apiistioioapinetworkingv1alpha3.WorkloadEntry{}
   299  	case gvr.WorkloadGroup:
   300  		return &apiistioioapinetworkingv1alpha3.WorkloadGroup{}
   301  	default:
   302  		panic(fmt.Sprintf("Unknown type %v", g))
   303  	}
   304  }
   305  
   306  func getInformerFiltered(c ClientGetter, opts ktypes.InformerOptions, g schema.GroupVersionResource) informerfactory.StartableInformer {
   307  	var l func(options metav1.ListOptions) (runtime.Object, error)
   308  	var w func(options metav1.ListOptions) (watch.Interface, error)
   309  
   310  	switch g {
   311  	case gvr.AuthorizationPolicy:
   312  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   313  			return c.Istio().SecurityV1beta1().AuthorizationPolicies(opts.Namespace).List(context.Background(), options)
   314  		}
   315  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   316  			return c.Istio().SecurityV1beta1().AuthorizationPolicies(opts.Namespace).Watch(context.Background(), options)
   317  		}
   318  	case gvr.CertificateSigningRequest:
   319  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   320  			return c.Kube().CertificatesV1().CertificateSigningRequests().List(context.Background(), options)
   321  		}
   322  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   323  			return c.Kube().CertificatesV1().CertificateSigningRequests().Watch(context.Background(), options)
   324  		}
   325  	case gvr.ConfigMap:
   326  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   327  			return c.Kube().CoreV1().ConfigMaps(opts.Namespace).List(context.Background(), options)
   328  		}
   329  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   330  			return c.Kube().CoreV1().ConfigMaps(opts.Namespace).Watch(context.Background(), options)
   331  		}
   332  	case gvr.CustomResourceDefinition:
   333  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   334  			return c.Ext().ApiextensionsV1().CustomResourceDefinitions().List(context.Background(), options)
   335  		}
   336  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   337  			return c.Ext().ApiextensionsV1().CustomResourceDefinitions().Watch(context.Background(), options)
   338  		}
   339  	case gvr.DaemonSet:
   340  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   341  			return c.Kube().AppsV1().DaemonSets(opts.Namespace).List(context.Background(), options)
   342  		}
   343  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   344  			return c.Kube().AppsV1().DaemonSets(opts.Namespace).Watch(context.Background(), options)
   345  		}
   346  	case gvr.Deployment:
   347  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   348  			return c.Kube().AppsV1().Deployments(opts.Namespace).List(context.Background(), options)
   349  		}
   350  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   351  			return c.Kube().AppsV1().Deployments(opts.Namespace).Watch(context.Background(), options)
   352  		}
   353  	case gvr.DestinationRule:
   354  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   355  			return c.Istio().NetworkingV1alpha3().DestinationRules(opts.Namespace).List(context.Background(), options)
   356  		}
   357  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   358  			return c.Istio().NetworkingV1alpha3().DestinationRules(opts.Namespace).Watch(context.Background(), options)
   359  		}
   360  	case gvr.EndpointSlice:
   361  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   362  			return c.Kube().DiscoveryV1().EndpointSlices(opts.Namespace).List(context.Background(), options)
   363  		}
   364  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   365  			return c.Kube().DiscoveryV1().EndpointSlices(opts.Namespace).Watch(context.Background(), options)
   366  		}
   367  	case gvr.Endpoints:
   368  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   369  			return c.Kube().CoreV1().Endpoints(opts.Namespace).List(context.Background(), options)
   370  		}
   371  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   372  			return c.Kube().CoreV1().Endpoints(opts.Namespace).Watch(context.Background(), options)
   373  		}
   374  	case gvr.EnvoyFilter:
   375  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   376  			return c.Istio().NetworkingV1alpha3().EnvoyFilters(opts.Namespace).List(context.Background(), options)
   377  		}
   378  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   379  			return c.Istio().NetworkingV1alpha3().EnvoyFilters(opts.Namespace).Watch(context.Background(), options)
   380  		}
   381  	case gvr.GRPCRoute:
   382  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   383  			return c.GatewayAPI().GatewayV1().GRPCRoutes(opts.Namespace).List(context.Background(), options)
   384  		}
   385  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   386  			return c.GatewayAPI().GatewayV1().GRPCRoutes(opts.Namespace).Watch(context.Background(), options)
   387  		}
   388  	case gvr.Gateway:
   389  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   390  			return c.Istio().NetworkingV1alpha3().Gateways(opts.Namespace).List(context.Background(), options)
   391  		}
   392  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   393  			return c.Istio().NetworkingV1alpha3().Gateways(opts.Namespace).Watch(context.Background(), options)
   394  		}
   395  	case gvr.GatewayClass:
   396  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   397  			return c.GatewayAPI().GatewayV1beta1().GatewayClasses().List(context.Background(), options)
   398  		}
   399  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   400  			return c.GatewayAPI().GatewayV1beta1().GatewayClasses().Watch(context.Background(), options)
   401  		}
   402  	case gvr.HTTPRoute:
   403  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   404  			return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(opts.Namespace).List(context.Background(), options)
   405  		}
   406  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   407  			return c.GatewayAPI().GatewayV1beta1().HTTPRoutes(opts.Namespace).Watch(context.Background(), options)
   408  		}
   409  	case gvr.Ingress:
   410  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   411  			return c.Kube().NetworkingV1().Ingresses(opts.Namespace).List(context.Background(), options)
   412  		}
   413  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   414  			return c.Kube().NetworkingV1().Ingresses(opts.Namespace).Watch(context.Background(), options)
   415  		}
   416  	case gvr.IngressClass:
   417  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   418  			return c.Kube().NetworkingV1().IngressClasses().List(context.Background(), options)
   419  		}
   420  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   421  			return c.Kube().NetworkingV1().IngressClasses().Watch(context.Background(), options)
   422  		}
   423  	case gvr.KubernetesGateway:
   424  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   425  			return c.GatewayAPI().GatewayV1beta1().Gateways(opts.Namespace).List(context.Background(), options)
   426  		}
   427  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   428  			return c.GatewayAPI().GatewayV1beta1().Gateways(opts.Namespace).Watch(context.Background(), options)
   429  		}
   430  	case gvr.Lease:
   431  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   432  			return c.Kube().CoordinationV1().Leases(opts.Namespace).List(context.Background(), options)
   433  		}
   434  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   435  			return c.Kube().CoordinationV1().Leases(opts.Namespace).Watch(context.Background(), options)
   436  		}
   437  	case gvr.MutatingWebhookConfiguration:
   438  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   439  			return c.Kube().AdmissionregistrationV1().MutatingWebhookConfigurations().List(context.Background(), options)
   440  		}
   441  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   442  			return c.Kube().AdmissionregistrationV1().MutatingWebhookConfigurations().Watch(context.Background(), options)
   443  		}
   444  	case gvr.Namespace:
   445  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   446  			return c.Kube().CoreV1().Namespaces().List(context.Background(), options)
   447  		}
   448  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   449  			return c.Kube().CoreV1().Namespaces().Watch(context.Background(), options)
   450  		}
   451  	case gvr.Node:
   452  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   453  			return c.Kube().CoreV1().Nodes().List(context.Background(), options)
   454  		}
   455  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   456  			return c.Kube().CoreV1().Nodes().Watch(context.Background(), options)
   457  		}
   458  	case gvr.PeerAuthentication:
   459  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   460  			return c.Istio().SecurityV1beta1().PeerAuthentications(opts.Namespace).List(context.Background(), options)
   461  		}
   462  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   463  			return c.Istio().SecurityV1beta1().PeerAuthentications(opts.Namespace).Watch(context.Background(), options)
   464  		}
   465  	case gvr.Pod:
   466  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   467  			return c.Kube().CoreV1().Pods(opts.Namespace).List(context.Background(), options)
   468  		}
   469  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   470  			return c.Kube().CoreV1().Pods(opts.Namespace).Watch(context.Background(), options)
   471  		}
   472  	case gvr.ProxyConfig:
   473  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   474  			return c.Istio().NetworkingV1beta1().ProxyConfigs(opts.Namespace).List(context.Background(), options)
   475  		}
   476  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   477  			return c.Istio().NetworkingV1beta1().ProxyConfigs(opts.Namespace).Watch(context.Background(), options)
   478  		}
   479  	case gvr.ReferenceGrant:
   480  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   481  			return c.GatewayAPI().GatewayV1beta1().ReferenceGrants(opts.Namespace).List(context.Background(), options)
   482  		}
   483  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   484  			return c.GatewayAPI().GatewayV1beta1().ReferenceGrants(opts.Namespace).Watch(context.Background(), options)
   485  		}
   486  	case gvr.RequestAuthentication:
   487  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   488  			return c.Istio().SecurityV1beta1().RequestAuthentications(opts.Namespace).List(context.Background(), options)
   489  		}
   490  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   491  			return c.Istio().SecurityV1beta1().RequestAuthentications(opts.Namespace).Watch(context.Background(), options)
   492  		}
   493  	case gvr.Secret:
   494  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   495  			return c.Kube().CoreV1().Secrets(opts.Namespace).List(context.Background(), options)
   496  		}
   497  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   498  			return c.Kube().CoreV1().Secrets(opts.Namespace).Watch(context.Background(), options)
   499  		}
   500  	case gvr.Service:
   501  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   502  			return c.Kube().CoreV1().Services(opts.Namespace).List(context.Background(), options)
   503  		}
   504  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   505  			return c.Kube().CoreV1().Services(opts.Namespace).Watch(context.Background(), options)
   506  		}
   507  	case gvr.ServiceAccount:
   508  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   509  			return c.Kube().CoreV1().ServiceAccounts(opts.Namespace).List(context.Background(), options)
   510  		}
   511  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   512  			return c.Kube().CoreV1().ServiceAccounts(opts.Namespace).Watch(context.Background(), options)
   513  		}
   514  	case gvr.ServiceEntry:
   515  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   516  			return c.Istio().NetworkingV1alpha3().ServiceEntries(opts.Namespace).List(context.Background(), options)
   517  		}
   518  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   519  			return c.Istio().NetworkingV1alpha3().ServiceEntries(opts.Namespace).Watch(context.Background(), options)
   520  		}
   521  	case gvr.Sidecar:
   522  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   523  			return c.Istio().NetworkingV1alpha3().Sidecars(opts.Namespace).List(context.Background(), options)
   524  		}
   525  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   526  			return c.Istio().NetworkingV1alpha3().Sidecars(opts.Namespace).Watch(context.Background(), options)
   527  		}
   528  	case gvr.StatefulSet:
   529  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   530  			return c.Kube().AppsV1().StatefulSets(opts.Namespace).List(context.Background(), options)
   531  		}
   532  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   533  			return c.Kube().AppsV1().StatefulSets(opts.Namespace).Watch(context.Background(), options)
   534  		}
   535  	case gvr.TCPRoute:
   536  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   537  			return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(opts.Namespace).List(context.Background(), options)
   538  		}
   539  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   540  			return c.GatewayAPI().GatewayV1alpha2().TCPRoutes(opts.Namespace).Watch(context.Background(), options)
   541  		}
   542  	case gvr.TLSRoute:
   543  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   544  			return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(opts.Namespace).List(context.Background(), options)
   545  		}
   546  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   547  			return c.GatewayAPI().GatewayV1alpha2().TLSRoutes(opts.Namespace).Watch(context.Background(), options)
   548  		}
   549  	case gvr.Telemetry:
   550  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   551  			return c.Istio().TelemetryV1alpha1().Telemetries(opts.Namespace).List(context.Background(), options)
   552  		}
   553  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   554  			return c.Istio().TelemetryV1alpha1().Telemetries(opts.Namespace).Watch(context.Background(), options)
   555  		}
   556  	case gvr.UDPRoute:
   557  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   558  			return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(opts.Namespace).List(context.Background(), options)
   559  		}
   560  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   561  			return c.GatewayAPI().GatewayV1alpha2().UDPRoutes(opts.Namespace).Watch(context.Background(), options)
   562  		}
   563  	case gvr.ValidatingWebhookConfiguration:
   564  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   565  			return c.Kube().AdmissionregistrationV1().ValidatingWebhookConfigurations().List(context.Background(), options)
   566  		}
   567  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   568  			return c.Kube().AdmissionregistrationV1().ValidatingWebhookConfigurations().Watch(context.Background(), options)
   569  		}
   570  	case gvr.VirtualService:
   571  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   572  			return c.Istio().NetworkingV1alpha3().VirtualServices(opts.Namespace).List(context.Background(), options)
   573  		}
   574  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   575  			return c.Istio().NetworkingV1alpha3().VirtualServices(opts.Namespace).Watch(context.Background(), options)
   576  		}
   577  	case gvr.WasmPlugin:
   578  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   579  			return c.Istio().ExtensionsV1alpha1().WasmPlugins(opts.Namespace).List(context.Background(), options)
   580  		}
   581  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   582  			return c.Istio().ExtensionsV1alpha1().WasmPlugins(opts.Namespace).Watch(context.Background(), options)
   583  		}
   584  	case gvr.WorkloadEntry:
   585  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   586  			return c.Istio().NetworkingV1alpha3().WorkloadEntries(opts.Namespace).List(context.Background(), options)
   587  		}
   588  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   589  			return c.Istio().NetworkingV1alpha3().WorkloadEntries(opts.Namespace).Watch(context.Background(), options)
   590  		}
   591  	case gvr.WorkloadGroup:
   592  		l = func(options metav1.ListOptions) (runtime.Object, error) {
   593  			return c.Istio().NetworkingV1alpha3().WorkloadGroups(opts.Namespace).List(context.Background(), options)
   594  		}
   595  		w = func(options metav1.ListOptions) (watch.Interface, error) {
   596  			return c.Istio().NetworkingV1alpha3().WorkloadGroups(opts.Namespace).Watch(context.Background(), options)
   597  		}
   598  	default:
   599  		panic(fmt.Sprintf("Unknown type %v", g))
   600  	}
   601  	return c.Informers().InformerFor(g, opts, func() cache.SharedIndexInformer {
   602  		inf := cache.NewSharedIndexInformer(
   603  			&cache.ListWatch{
   604  				ListFunc: func(options metav1.ListOptions) (runtime.Object, error) {
   605  					options.FieldSelector = opts.FieldSelector
   606  					options.LabelSelector = opts.LabelSelector
   607  					return l(options)
   608  				},
   609  				WatchFunc: func(options metav1.ListOptions) (watch.Interface, error) {
   610  					options.FieldSelector = opts.FieldSelector
   611  					options.LabelSelector = opts.LabelSelector
   612  					return w(options)
   613  				},
   614  			},
   615  			gvrToObject(g),
   616  			0,
   617  			cache.Indexers{cache.NamespaceIndex: cache.MetaNamespaceIndexFunc},
   618  		)
   619  		setupInformer(opts, inf)
   620  		return inf
   621  	})
   622  }