github.com/cilium/cilium@v1.16.2/pkg/cgroups/manager/cell.go (about) 1 // SPDX-License-Identifier: Apache-2.0 2 // Copyright Authors of Cilium 3 4 package manager 5 6 import ( 7 "github.com/cilium/hive/cell" 8 "github.com/sirupsen/logrus" 9 10 "github.com/cilium/cilium/pkg/option" 11 ) 12 13 // Cell provides access to the cgroup manager. 14 var Cell = cell.Module( 15 "cgroup-manager", 16 "CGroup Manager", 17 18 cell.Provide(newCGroupManager), 19 ) 20 21 type cgroupManagerParams struct { 22 cell.In 23 24 Logger logrus.FieldLogger 25 Lifecycle cell.Lifecycle 26 27 AgentConfig *option.DaemonConfig 28 } 29 30 func newCGroupManager(params cgroupManagerParams) CGroupManager { 31 if !params.AgentConfig.EnableSocketLBTracing { 32 return &noopCGroupManager{} 33 } 34 35 pathProvider, err := getCgroupPathProvider() 36 if err != nil { 37 params.Logger. 38 WithError(err). 39 Warn("Failed to setup socket load-balancing tracing with Hubble. See the kubeproxy-free guide for more details.") 40 41 return &noopCGroupManager{} 42 } 43 44 cm := newManager(params.Logger, cgroupImpl{}, pathProvider, podEventsChannelSize) 45 46 params.Lifecycle.Append(cell.Hook{ 47 OnStart: func(hookContext cell.HookContext) error { 48 go cm.processPodEvents() 49 return nil 50 }, 51 OnStop: func(cell.HookContext) error { 52 cm.Close() 53 return nil 54 }, 55 }) 56 57 params.Logger.Info("Cgroup metadata manager is enabled") 58 59 return cm 60 }