github.com/aporeto-inc/trireme-lib@v10.358.0+incompatible/monitor/internal/docker/config.go (about)

     1  package dockermonitor
     2  
     3  import (
     4  	"go.aporeto.io/enforcerd/trireme-lib/monitor/constants"
     5  	"go.aporeto.io/enforcerd/trireme-lib/monitor/extractors"
     6  )
     7  
     8  // Config is the configuration options to start a CNI monitor
     9  type Config struct {
    10  	EventMetadataExtractor   extractors.DockerMetadataExtractor
    11  	SocketType               string
    12  	SocketAddress            string
    13  	SyncAtStart              bool
    14  	DestroyStoppedContainers bool
    15  	ignoreHostModeContainers bool
    16  }
    17  
    18  // DefaultConfig provides a default configuration
    19  func DefaultConfig() *Config {
    20  	return &Config{
    21  		EventMetadataExtractor:   extractors.DefaultMetadataExtractor,
    22  		SocketType:               string(constants.DefaultDockerSocketType),
    23  		SocketAddress:            constants.DefaultDockerSocket,
    24  		SyncAtStart:              true,
    25  		ignoreHostModeContainers: true,
    26  	}
    27  }
    28  
    29  // SetupDefaultConfig adds defaults to a partial configuration
    30  func SetupDefaultConfig(dockerConfig *Config) *Config {
    31  
    32  	defaultConfig := DefaultConfig()
    33  
    34  	if dockerConfig.EventMetadataExtractor == nil {
    35  		dockerConfig.EventMetadataExtractor = defaultConfig.EventMetadataExtractor
    36  	}
    37  	if dockerConfig.SocketType == "" {
    38  		dockerConfig.SocketType = defaultConfig.SocketType
    39  	}
    40  	if dockerConfig.SocketAddress == "" {
    41  		dockerConfig.SocketAddress = defaultConfig.SocketAddress
    42  	}
    43  	return dockerConfig
    44  }