github.com/cilium/cilium@v1.16.2/pkg/k8s/watchers/cell.go (about)

     1  // SPDX-License-Identifier: Apache-2.0
     2  // Copyright Authors of Cilium
     3  
     4  package watchers
     5  
     6  import (
     7  	"github.com/cilium/hive/cell"
     8  
     9  	k8sClient "github.com/cilium/cilium/pkg/k8s/client"
    10  	k8sSynced "github.com/cilium/cilium/pkg/k8s/synced"
    11  	"github.com/cilium/cilium/pkg/option"
    12  )
    13  
    14  // Cell provides the global k8s watcher.
    15  var Cell = cell.Module(
    16  	"k8s-watcher",
    17  	"K8s Watcher",
    18  
    19  	cell.Provide(newK8sWatcher),
    20  	cell.ProvidePrivate(newK8sPodWatcher),
    21  	cell.Provide(newK8sCiliumNodeWatcher),
    22  	cell.ProvidePrivate(newK8sNamespaceWatcher),
    23  	cell.ProvidePrivate(newK8sServiceWatcher),
    24  	cell.ProvidePrivate(newK8sEndpointsWatcher),
    25  	cell.ProvidePrivate(newK8sCiliumLRPWatcher),
    26  	cell.ProvidePrivate(newK8sCiliumEndpointsWatcher),
    27  	cell.Provide(newK8sEventReporter),
    28  )
    29  
    30  type k8sWatcherParams struct {
    31  	cell.In
    32  
    33  	K8sEventReporter          *K8sEventReporter
    34  	K8sPodWatcher             *K8sPodWatcher
    35  	K8sCiliumNodeWatcher      *K8sCiliumNodeWatcher
    36  	K8sNamespaceWatcher       *K8sNamespaceWatcher
    37  	K8sServiceWatcher         *K8sServiceWatcher
    38  	K8sEndpointsWatcher       *K8sEndpointsWatcher
    39  	K8sCiliumLRPWatcher       *K8sCiliumLRPWatcher
    40  	K8sCiliumEndpointsWatcher *K8sCiliumEndpointsWatcher
    41  
    42  	AgentConfig *option.DaemonConfig
    43  
    44  	Clientset         k8sClient.Clientset
    45  	K8sResourceSynced *k8sSynced.Resources
    46  	K8sAPIGroups      *k8sSynced.APIGroups
    47  }
    48  
    49  func newK8sWatcher(params k8sWatcherParams) *K8sWatcher {
    50  	return newWatcher(
    51  		params.Clientset,
    52  		params.K8sPodWatcher,
    53  		params.K8sCiliumNodeWatcher,
    54  		params.K8sNamespaceWatcher,
    55  		params.K8sServiceWatcher,
    56  		params.K8sEndpointsWatcher,
    57  		params.K8sCiliumLRPWatcher,
    58  		params.K8sCiliumEndpointsWatcher,
    59  		params.K8sEventReporter,
    60  		params.K8sResourceSynced,
    61  		params.K8sAPIGroups,
    62  		params.AgentConfig,
    63  	)
    64  }