master
go 46 lines 1.29 KB
Raw
1 // SPDX-License-Identifier: GPL-3.0-or-later
2
3 package chartengine
4
5 import (
6 "fmt"
7
8 metrixselector "github.com/netdata/netdata/go/plugins/pkg/metrix/selector"
9 "github.com/netdata/netdata/go/plugins/plugin/framework/charttpl"
10 )
11
12 func resolveEffectivePolicy(cfg engineConfig, templatePolicy *charttpl.Engine) (AutogenPolicy, metrixselector.Selector, error) {
13 autogen := defaultAutogenPolicy()
14 var selector metrixselector.Selector
15
16 if templatePolicy != nil {
17 if templatePolicy.Autogen != nil {
18 normalized, err := normalizeAutogenPolicy(AutogenPolicy{
19 Enabled: templatePolicy.Autogen.Enabled,
20 MaxTypeIDLen: templatePolicy.Autogen.MaxTypeIDLen,
21 ExpireAfterSuccessCycles: templatePolicy.Autogen.ExpireAfterSuccessCycles,
22 })
23 if err != nil {
24 return AutogenPolicy{}, nil, fmt.Errorf("template engine.autogen: %w", err)
25 }
26 autogen = normalized
27 }
28
29 if templatePolicy.Selector != nil {
30 compiled, err := compileEngineSelector(*templatePolicy.Selector)
31 if err != nil {
32 return AutogenPolicy{}, nil, fmt.Errorf("template engine.selector: %w", err)
33 }
34 selector = compiled
35 }
36 }
37
38 if cfg.autogenOverride.set {
39 autogen = cfg.autogenOverride.value
40 }
41 if cfg.selectorOverride.set {
42 selector = cfg.selectorOverride.value
43 }
44
45 return autogen, selector, nil
46 }