diff --git a/etc/config/config.yaml b/etc/config/config.yaml index a4c6a32..caa3b2b 100644 --- a/etc/config/config.yaml +++ b/etc/config/config.yaml @@ -30,6 +30,11 @@ discoveries: manufacturer: "cisco" region: "eu-west" status: "1" + - custom_labels: + job: "linux-kvm" + target: 4 + platform: "linux-kvm" + region: "eu-west" virtualization: vm: - custom_labels: diff --git a/internal/discovery/netbox_discovery.go b/internal/discovery/netbox_discovery.go index 2760a4a..4bf10d4 100644 --- a/internal/discovery/netbox_discovery.go +++ b/internal/discovery/netbox_discovery.go @@ -344,6 +344,8 @@ func (sd *NetboxDiscovery) getDeviceIP(t int, id int64, i *models.NestedIPAddres ips = append(ips, ip) case loopback10: ips, err = sd.netbox.DeviceInterfaceNameIPs("Loopback10", strconv.FormatInt(id, 10)) + case bond0: + ips, err = sd.netbox.DeviceInterfaceNameIPs("bond0", strconv.FormatInt(id, 10)) default: return ips, fmt.Errorf("Error getting ip from device: %d. Error: %s", id, "unknown target in config") } diff --git a/internal/discovery/netbox_models.go b/internal/discovery/netbox_models.go index c5d432e..3c03b89 100644 --- a/internal/discovery/netbox_models.go +++ b/internal/discovery/netbox_models.go @@ -9,6 +9,7 @@ const ( primaryIP int = 1 managementIP int = 2 loopback10 int = 3 + bond0 int = 4 ) type ( diff --git a/pkg/netbox/netbox.go b/pkg/netbox/netbox.go index d3b353c..863e0c0 100644 --- a/pkg/netbox/netbox.go +++ b/pkg/netbox/netbox.go @@ -335,10 +335,10 @@ func (nb *Netbox) DeviceInterfaceNameIPs(name, deviceID string) (ips []string, e } // Interface retrieves the interface on the device -func (nb *Netbox) Interface(deviceID string, interfaceName string) (*models.Interface, error) { +func (nb *Netbox) Interface(deviceID string, interfaceNamePrefix string) (*models.Interface, error) { params := dcim.NewDcimInterfacesListParams() params.DeviceID = &deviceID - params.Name = &interfaceName + params.NameIsw = &interfaceNamePrefix params.WithContext(context.Background()) limit := int64(1) @@ -349,10 +349,10 @@ func (nb *Netbox) Interface(deviceID string, interfaceName string) (*models.Inte return nil, err } if *list.Payload.Count < 1 { - return nil, fmt.Errorf("no %s interface found for device %s", interfaceName, deviceID) + return nil, fmt.Errorf("no %s interface found for device %s", interfaceNamePrefix, deviceID) } if *list.Payload.Count > 1 { - return nil, fmt.Errorf("more than 1 %s interface found for device %s", interfaceName, deviceID) + return nil, fmt.Errorf("more than 1 %s interface found for device %s", interfaceNamePrefix, deviceID) } return list.Payload.Results[0], nil