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 }