diff --git a/collector/arp_linux.go b/collector/arp_linux.go index f997c111..cd61d9a7 100644 --- a/collector/arp_linux.go +++ b/collector/arp_linux.go @@ -32,11 +32,19 @@ type arpCollector struct { } func init() { - registerCollector("arp", defaultEnabled, NewARPCollector) + registerCollector("arp", defaultEnabled, func(config any, logger log.Logger) (Collector, error) { + arpConfig := config.(ArpConfig) + return NewARPCollector(arpConfig, logger) + }) +} + +type ArpConfig struct { + DeviceInclude *string + DeviceExclude *string } // NewARPCollector returns a new Collector exposing ARP stats. -func NewARPCollector(config NodeCollectorConfig, logger log.Logger) (Collector, error) { +func NewARPCollector(config ArpConfig, logger log.Logger) (Collector, error) { fs, err := procfs.NewFS(*procPath) if err != nil { return nil, fmt.Errorf("failed to open procfs: %w", err) @@ -44,7 +52,7 @@ func NewARPCollector(config NodeCollectorConfig, logger log.Logger) (Collector, return &arpCollector{ fs: fs, - deviceFilter: newDeviceFilter(*config.Arp.DeviceExclude, *config.Arp.DeviceInclude), + deviceFilter: newDeviceFilter(*config.DeviceExclude, *config.DeviceInclude), entries: prometheus.NewDesc( prometheus.BuildFQName(namespace, "arp", "entries"), "ARP entries by device", diff --git a/collector/collector.go b/collector/collector.go index 85c9a5f4..59d12464 100644 --- a/collector/collector.go +++ b/collector/collector.go @@ -50,14 +50,14 @@ const ( ) var ( - factories = make(map[string]func(config NodeCollectorConfig, logger log.Logger) (Collector, error)) + factories = make(map[string]func(config any, logger log.Logger) (Collector, error)) initiatedCollectorsMtx = sync.Mutex{} initiatedCollectors = make(map[string]Collector) collectorState = make(map[string]*bool) forcedCollectors = map[string]bool{} // collectors which have been explicitly enabled or disabled ) -func registerCollector(collector string, isDefaultEnabled bool, factory func(config NodeCollectorConfig, logger log.Logger) (Collector, error)) { +func registerCollector(collector string, isDefaultEnabled bool, factory func(config any, logger log.Logger) (Collector, error)) { var helpDefaultState string if isDefaultEnabled { helpDefaultState = "enabled" diff --git a/collector/config.go b/collector/config.go index fb3e576b..416d3c05 100644 --- a/collector/config.go +++ b/collector/config.go @@ -19,8 +19,3 @@ package collector type NodeCollectorConfig struct { Arp ArpConfig } - -type ArpConfig struct { - DeviceInclude *string - DeviceExclude *string -}