Skip to content

Commit

Permalink
feat: add netbox 4.0 compatible imports
Browse files Browse the repository at this point in the history
  • Loading branch information
Felix Peters committed May 22, 2024
1 parent bfc76c2 commit 2d874f9
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 11 deletions.
7 changes: 5 additions & 2 deletions netbox_prometheus_sd/__init__.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
from extras.plugins import PluginConfig

try:
from netbox.plugins import PluginConfig
except ImportError:
# Fallback for old NetBox versions < 4.0
from extras.plugins import PluginConfig

class PrometheusSD(PluginConfig):
name = "netbox_prometheus_sd"
Expand Down
9 changes: 8 additions & 1 deletion netbox_prometheus_sd/filtersets.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
from django.db.models import Q
from django.utils.translation import gettext as _

from utilities.filters import MultiValueCharFilter, MultiValueNumberFilter
from utilities.filters import MultiValueCharFilter, MultiValueNumberFilter, NumericArrayFilter

try:
from ipam.filtersets import ServiceFilterSet as NetboxServiceFilterSet
Expand All @@ -29,6 +29,13 @@ class ServiceFilterSet(NetboxServiceFilterSet):
label=_('Tenant (slug)'),
)

# fix to make the test_missing_filters pass
# see: https://github.com/netbox-community/netbox/blob/master/netbox/utilities/testing/filtersets.py#L98
ports = NumericArrayFilter(
field_name='ports',
lookup_expr='contains'
)

# pylint: disable=unused-argument
def filter_by_cluster_tenant_id(self, queryset, name, value):
return queryset.filter(
Expand Down
23 changes: 15 additions & 8 deletions netbox_prometheus_sd/tests/test_api.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,21 @@
import json

from django.test import TestCase
from django.contrib.contenttypes.models import ContentType
from django.contrib.auth.models import User

from rest_framework.test import APIClient
from rest_framework import status
try:
from users.models import User
from core.models import ObjectType

except ImportError:
# Fallback for old NetBox versions < 4.0
from django.contrib.contenttypes.models import ContentType as ObjectType
from django.contrib.auth.models import User

from users.models import ObjectPermission

from rest_framework.test import APIClient
from rest_framework import status

from . import utils


Expand All @@ -25,16 +32,16 @@ def setUp(self):
obj_perm.save()
obj_perm.users.add(user) # pylint: disable=no-member
obj_perm.object_types.add( # pylint: disable=no-member
ContentType.objects.get(app_label="dcim", model="device")
ObjectType.objects.get(app_label="dcim", model="device")
)
obj_perm.object_types.add( # pylint: disable=no-member
ContentType.objects.get(app_label="ipam", model="ipaddress")
ObjectType.objects.get(app_label="ipam", model="ipaddress")
)
obj_perm.object_types.add( # pylint: disable=no-member
ContentType.objects.get(app_label="ipam", model="service")
ObjectType.objects.get(app_label="ipam", model="service")
)
obj_perm.object_types.add( # pylint: disable=no-member
ContentType.objects.get(app_label="virtualization", model="virtualmachine")
ObjectType.objects.get(app_label="virtualization", model="virtualmachine")
)
self.client.force_authenticate(user)

Expand Down

0 comments on commit 2d874f9

Please sign in to comment.