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  }