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  }