github.com/netdata/go.d.plugin@v0.58.1/agent/config.go (about) 1 // SPDX-License-Identifier: GPL-3.0-or-later 2 3 package agent 4 5 import ( 6 "fmt" 7 8 "gopkg.in/yaml.v2" 9 ) 10 11 func defaultConfig() config { 12 return config{ 13 Enabled: true, 14 DefaultRun: true, 15 MaxProcs: 0, 16 Modules: nil, 17 } 18 } 19 20 type config struct { 21 Enabled bool `yaml:"enabled"` 22 DefaultRun bool `yaml:"default_run"` 23 MaxProcs int `yaml:"max_procs"` 24 Modules map[string]bool `yaml:"modules"` 25 } 26 27 func (c *config) String() string { 28 return fmt.Sprintf("enabled '%v', default_run '%v', max_procs '%d'", 29 c.Enabled, c.DefaultRun, c.MaxProcs) 30 } 31 32 func (c *config) isExplicitlyEnabled(moduleName string) bool { 33 return c.isEnabled(moduleName, true) 34 } 35 36 func (c *config) isImplicitlyEnabled(moduleName string) bool { 37 return c.isEnabled(moduleName, false) 38 } 39 40 func (c *config) isEnabled(moduleName string, explicit bool) bool { 41 if enabled, ok := c.Modules[moduleName]; ok { 42 return enabled 43 } 44 if explicit { 45 return false 46 } 47 return c.DefaultRun 48 } 49 50 func (c *config) UnmarshalYAML(unmarshal func(interface{}) error) error { 51 type plain config 52 if err := unmarshal((*plain)(c)); err != nil { 53 return err 54 } 55 56 var m map[string]interface{} 57 if err := unmarshal(&m); err != nil { 58 return err 59 } 60 61 for key, value := range m { 62 switch key { 63 case "enabled", "default_run", "max_procs", "modules": 64 continue 65 } 66 var b bool 67 if in, err := yaml.Marshal(value); err != nil || yaml.Unmarshal(in, &b) != nil { 68 continue 69 } 70 if c.Modules == nil { 71 c.Modules = make(map[string]bool) 72 } 73 c.Modules[key] = b 74 } 75 return nil 76 }