github.com/cilium/cilium@v1.16.2/clustermesh-apiserver/clustermesh/k8s/resource_ctors.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package k8s 5 6 import ( 7 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 8 "k8s.io/apimachinery/pkg/runtime" 9 10 "github.com/cilium/cilium/pkg/k8s" 11 cilium_api_v2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2" 12 "github.com/cilium/cilium/pkg/k8s/resource" 13 slim_corev1 "github.com/cilium/cilium/pkg/k8s/slim/k8s/api/core/v1" 14 "github.com/cilium/cilium/pkg/k8s/types" 15 "github.com/cilium/cilium/pkg/k8s/utils" 16 ) 17 18 func CiliumSlimEndpointResource(params k8s.CiliumResourceParams, opts ...func(*metav1.ListOptions)) (resource.Resource[*types.CiliumEndpoint], error) { 19 if !params.ClientSet.IsEnabled() { 20 return nil, nil 21 } 22 lw := utils.ListerWatcherWithModifiers( 23 utils.ListerWatcherFromTyped[*cilium_api_v2.CiliumEndpointList](params.ClientSet.CiliumV2().CiliumEndpoints(slim_corev1.NamespaceAll)), 24 opts..., 25 ) 26 return resource.New[*types.CiliumEndpoint](params.Lifecycle, lw, 27 resource.WithLazyTransform(func() runtime.Object { 28 return &cilium_api_v2.CiliumEndpoint{} 29 }, k8s.TransformToCiliumEndpoint), resource.WithCRDSync(params.CRDSyncPromise), 30 ), nil 31 } 32 33 func CiliumNodeResource(params k8s.CiliumResourceParams, opts ...func(*metav1.ListOptions)) (resource.Resource[*cilium_api_v2.CiliumNode], error) { 34 if !params.ClientSet.IsEnabled() { 35 return nil, nil 36 } 37 lw := utils.ListerWatcherWithModifiers( 38 utils.ListerWatcherFromTyped[*cilium_api_v2.CiliumNodeList](params.ClientSet.CiliumV2().CiliumNodes()), 39 opts..., 40 ) 41 return resource.New[*cilium_api_v2.CiliumNode](params.Lifecycle, lw, 42 resource.WithMetric("CiliumNode"), resource.WithCRDSync(params.CRDSyncPromise), 43 ), nil 44 }