@@ -71,17 +71,18 @@ type pluginConfigItem struct {
7171// UnmarshalJSON method in this same file needs to be modified to
7272// match the field mapping that is defined here
7373type Config struct {
74- MaxRunningPlugins int `json:"max_running_plugins"yaml:"max_running_plugins"`
75- PluginLoadTimeout int `json:"plugin_load_timeout"yaml:"plugin_load_timeout"`
76- PluginTrust int `json:"plugin_trust_level"yaml:"plugin_trust_level"`
77- AutoDiscoverPath string `json:"auto_discover_path"yaml:"auto_discover_path"`
78- KeyringPaths string `json:"keyring_paths"yaml:"keyring_paths"`
79- CacheExpiration jsonutil.Duration `json:"cache_expiration"yaml:"cache_expiration"`
80- Plugins * pluginConfig `json:"plugins"yaml:"plugins"`
81- ListenAddr string `json:"listen_addr,omitempty"yaml:"listen_addr"`
82- ListenPort int `json:"listen_port,omitempty"yaml:"listen_port"`
83- Pprof bool `json:"pprof"yaml:"pprof"`
84- MaxPluginRestarts int `json:"max_plugin_restarts"yaml:"max_plugin_restarts"`
74+ MaxRunningPlugins int `json:"max_running_plugins"yaml:"max_running_plugins"`
75+ PluginLoadTimeout int `json:"plugin_load_timeout"yaml:"plugin_load_timeout"`
76+ PluginTrust int `json:"plugin_trust_level"yaml:"plugin_trust_level"`
77+ AutoDiscoverPath string `json:"auto_discover_path"yaml:"auto_discover_path"`
78+ KeyringPaths string `json:"keyring_paths"yaml:"keyring_paths"`
79+ CacheExpiration jsonutil.Duration `json:"cache_expiration"yaml:"cache_expiration"`
80+ Plugins * pluginConfig `json:"plugins"yaml:"plugins"`
81+ Tags map [string ]map [string ]string `json:"tags,omitempty"yaml:"tags"`
82+ ListenAddr string `json:"listen_addr,omitempty"yaml:"listen_addr"`
83+ ListenPort int `json:"listen_port,omitempty"yaml:"listen_port"`
84+ Pprof bool `json:"pprof"yaml:"pprof"`
85+ MaxPluginRestarts int `json:"max_plugin_restarts"yaml:"max_plugin_restarts"`
8586}
8687
8788const (
@@ -117,6 +118,11 @@ const (
117118 "properties" : {},
118119 "additionalProperties": true
119120 },
121+ "tags": {
122+ "type": ["object", "null"],
123+ "properties" : {},
124+ "additionalProperties": true
125+ },
120126 "listen_addr": {
121127 "type": "string"
122128 },
@@ -147,6 +153,7 @@ func GetDefaultConfig() *Config {
147153 KeyringPaths : defaultKeyringPaths ,
148154 CacheExpiration : jsonutil.Duration {defaultCacheExpiration },
149155 Plugins : newPluginConfig (),
156+ Tags : newPluginTags (),
150157 Pprof : defaultPprof ,
151158 MaxPluginRestarts : MaxPluginRestartCount ,
152159 }
@@ -182,6 +189,10 @@ func newPluginConfig() *pluginConfig {
182189 }
183190}
184191
192+ func newPluginTags () map [string ]map [string ]string {
193+ return make (map [string ]map [string ]string )
194+ }
195+
185196func (p * Config ) GetPluginConfigDataNode (pluginType core.PluginType , name string , ver int ) cdata.ConfigDataNode {
186197 return * p .Plugins .getPluginConfigDataNode (pluginType , name , ver )
187198}
@@ -295,14 +306,16 @@ func (p *pluginConfig) switchPluginConfigType(pluginType core.PluginType) *plugi
295306 case core .PublisherPluginType :
296307 return p .Publisher
297308 }
298- // never happens
299309 return nil
300310}
301311
302312func (p * pluginConfig ) mergePluginConfigDataNode (pluginType core.PluginType , name string , ver int , cdn * cdata.ConfigDataNode ) {
303313 // clear cache
304314 p .pluginCache = make (map [string ]* cdata.ConfigDataNode )
305315 configItem := p .switchPluginConfigType (pluginType )
316+ if configItem == nil {
317+ return
318+ }
306319
307320 // merge new config into existing
308321 if res , ok := configItem .Plugins [name ]; ok {
@@ -331,6 +344,9 @@ func (p *pluginConfig) deletePluginConfigDataNodeField(pluginType core.PluginTyp
331344 // clear cache
332345 p .pluginCache = make (map [string ]* cdata.ConfigDataNode )
333346 configItem := p .switchPluginConfigType (pluginType )
347+ if configItem == nil {
348+ return
349+ }
334350
335351 if res , ok := configItem .Plugins [name ]; ok {
336352 if res2 , ok2 := res .Versions [ver ]; ok2 {
@@ -340,7 +356,7 @@ func (p *pluginConfig) deletePluginConfigDataNodeField(pluginType core.PluginTyp
340356 res .DeleteItem (key )
341357 return
342358 }
343- p . Collector .All .DeleteItem (key )
359+ configItem .All .DeleteItem (key )
344360
345361}
346362
@@ -358,6 +374,9 @@ func (p *pluginConfig) getPluginConfigDataNode(pluginType core.PluginType, name
358374
359375 // check for plugin config
360376 configItem := p .switchPluginConfigType (pluginType )
377+ if configItem == nil {
378+ return nil
379+ }
361380 p .pluginCache [key ].Merge (configItem .All )
362381 if res , ok := configItem .Plugins [name ]; ok {
363382 p .pluginCache [key ].Merge (res .ConfigDataNode )
0 commit comments