netclass: retrieve interface names and filter before parsing
We should filter excluded interfaces before parsing the interface
details.
This change is based on
@@ -183,15 +183,21 @@ func pushMetric(ch chan<- prometheus.Metric, subsystem string, name string, valu
}
func (c *netClassCollector) getNetClassInfo() (sysfs.NetClass, error) {
- netClass, err := c.fs.NetClass()
+ netClass := sysfs.NetClass{}
+ netDevices, err := c.fs.NetClassDevices()
if err != nil {
return netClass, err
}
- for device := range netClass {
+ for _, device := range netDevices {
if c.ignoredDevicesPattern.MatchString(device) {
- delete(netClass, device)
+ continue
}
+ interfaceClass, err := c.fs.NetClassByIface(device)
+ if err != nil {
+ return netClass, err
+ }
+ netClass[device] = *interfaceClass
}
return netClass, nil
