github.com/kubernetes-incubator/kube-aws@v0.16.4/pkg/api/plugin_config.go (about) 1 package api 2 3 import ( 4 "github.com/kubernetes-incubator/kube-aws/logger" 5 "github.com/kubernetes-incubator/kube-aws/plugin/pluginutil" 6 ) 7 8 type PluginConfigs map[string]PluginConfig 9 10 func (pcs PluginConfigs) Merge(m PluginConfigs) (PluginConfigs, error) { 11 var err error 12 merged := PluginConfigs{} 13 for name, pc := range pcs { 14 merged[name] = pc 15 } 16 for name, pc := range m { 17 logger.Debugf("PluginConfigs.Merge() Plugin %s: %+v", name, pc) 18 merged[name], err = merged[name].Merge(pc) 19 if err != nil { 20 return merged, err 21 } 22 } 23 return merged, nil 24 } 25 26 func (pcs PluginConfigs) PluginIsEnabled(name string) bool { 27 var pc PluginConfig 28 var ok bool 29 if pc, ok = pcs[name]; !ok { 30 return false 31 } 32 return pc.Enabled 33 } 34 35 func (pcs PluginConfigs) PluginExists(name string) bool { 36 _, ok := pcs[name] 37 return ok 38 } 39 40 type PluginConfig struct { 41 Enabled bool `yaml:"enabled,omitempty"` 42 Values `yaml:",inline"` 43 } 44 45 func (p PluginConfig) Merge(m PluginConfig) (PluginConfig, error) { 46 var err error 47 result := p 48 logger.Debugf("PluginConfig.Merge() %+v into %+v", m, p) 49 result.Enabled = m.Enabled 50 result.Values, err = pluginutil.MergeValues(p.Values, m.Values) 51 logger.Debugf("PluginConfig.Merge() result %+v", result) 52 return result, err 53 }