diff --git a/cmd/otel-allocator/prehook/prehook.go b/cmd/otel-allocator/prehook/prehook.go index f356f7c2d8..abddaf618d 100644 --- a/cmd/otel-allocator/prehook/prehook.go +++ b/cmd/otel-allocator/prehook/prehook.go @@ -15,18 +15,12 @@ package prehook import ( - "errors" - "github.com/go-logr/logr" "github.com/prometheus/prometheus/model/relabel" "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/target" ) -const ( - relabelConfigTargetFilterName = "relabel-config" -) - type Hook interface { Apply(map[string]*target.Item) map[string]*target.Item SetConfig(map[string][]*relabel.Config) @@ -36,7 +30,9 @@ type Hook interface { type HookProvider func(log logr.Logger) Hook var ( - registry = map[string]HookProvider{} + registry = map[string]HookProvider{ + relabelConfigTargetFilterName: newRelabelConfigTargetFilter, + } ) func New(name string, log logr.Logger) Hook { @@ -47,18 +43,3 @@ func New(name string, log logr.Logger) Hook { log.Info("Unrecognized filter strategy; filtering disabled") return nil } - -func Register(name string, provider HookProvider) error { - if _, ok := registry[name]; ok { - return errors.New("already registered") - } - registry[name] = provider - return nil -} - -func init() { - err := Register(relabelConfigTargetFilterName, NewRelabelConfigTargetFilter) - if err != nil { - panic(err) - } -} diff --git a/cmd/otel-allocator/prehook/relabel.go b/cmd/otel-allocator/prehook/relabel.go index 6c96affa39..e07a721e0e 100644 --- a/cmd/otel-allocator/prehook/relabel.go +++ b/cmd/otel-allocator/prehook/relabel.go @@ -21,19 +21,23 @@ import ( "github.com/open-telemetry/opentelemetry-operator/cmd/otel-allocator/target" ) -type RelabelConfigTargetFilter struct { +const ( + relabelConfigTargetFilterName = "relabel-config" +) + +type relabelConfigTargetFilter struct { log logr.Logger relabelCfg map[string][]*relabel.Config } -func NewRelabelConfigTargetFilter(log logr.Logger) Hook { - return &RelabelConfigTargetFilter{ +func newRelabelConfigTargetFilter(log logr.Logger) Hook { + return &relabelConfigTargetFilter{ log: log, relabelCfg: make(map[string][]*relabel.Config), } } -func (tf *RelabelConfigTargetFilter) Apply(targets map[string]*target.Item) map[string]*target.Item { +func (tf *relabelConfigTargetFilter) Apply(targets map[string]*target.Item) map[string]*target.Item { numTargets := len(targets) // need to wait until relabelCfg is set @@ -58,7 +62,7 @@ func (tf *RelabelConfigTargetFilter) Apply(targets map[string]*target.Item) map[ return targets } -func (tf *RelabelConfigTargetFilter) SetConfig(cfgs map[string][]*relabel.Config) { +func (tf *relabelConfigTargetFilter) SetConfig(cfgs map[string][]*relabel.Config) { relabelCfgCopy := make(map[string][]*relabel.Config) for key, val := range cfgs { relabelCfgCopy[key] = tf.replaceRelabelConfig(val) @@ -71,7 +75,7 @@ func (tf *RelabelConfigTargetFilter) SetConfig(cfgs map[string][]*relabel.Config // for why SHARD == 0 is a necessary substitution. Otherwise the keep action that uses this env variable, // would not match the regex and all targets end up dropped. Also note, $(SHARD) will always be 0 and it // does not make sense to read from the environment because it is never set in the allocator. -func (tf *RelabelConfigTargetFilter) replaceRelabelConfig(cfg []*relabel.Config) []*relabel.Config { +func (tf *relabelConfigTargetFilter) replaceRelabelConfig(cfg []*relabel.Config) []*relabel.Config { for i := range cfg { str := cfg[i].Regex.String() if str == "$(SHARD)" { @@ -82,7 +86,7 @@ func (tf *RelabelConfigTargetFilter) replaceRelabelConfig(cfg []*relabel.Config) return cfg } -func (tf *RelabelConfigTargetFilter) GetConfig() map[string][]*relabel.Config { +func (tf *relabelConfigTargetFilter) GetConfig() map[string][]*relabel.Config { relabelCfgCopy := make(map[string][]*relabel.Config) for k, v := range tf.relabelCfg { relabelCfgCopy[k] = v