Skip to content

Commit

Permalink
Merge branch 'jsenecal-patch-1'
Browse files Browse the repository at this point in the history
  • Loading branch information
Felix Peters committed Feb 22, 2023
2 parents 464d211 + c66ca43 commit 948050d
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 26 deletions.
5 changes: 3 additions & 2 deletions netbox_prometheus_sd/api/serializers.py
Expand Up @@ -24,7 +24,7 @@ def get_targets(self, obj):

def get_labels(self, obj):
labels = LabelDict(
{"status": obj.status, "model": obj.__class__.__name__, "name": obj.name}
{"status": obj.status, "model": obj.__class__.__name__, "name": obj.name, "id": obj.id}
)

utils.extract_primary_ip(obj, labels)
Expand Down Expand Up @@ -66,7 +66,7 @@ def get_targets(self, obj):

def get_labels(self, obj):
labels = LabelDict(
{"status": obj.status, "model": obj.__class__.__name__, "name": obj.name}
{"status": obj.status, "model": obj.__class__.__name__, "name": obj.name, "id": obj.id}
)

utils.extract_primary_ip(obj, labels)
Expand Down Expand Up @@ -111,6 +111,7 @@ def get_labels(self, obj):
"status": obj.status,
"model": obj.__class__.__name__,
"ip": self.extract_ip(obj),
"id": obj.id
}
)
if obj.role:
Expand Down
54 changes: 30 additions & 24 deletions netbox_prometheus_sd/tests/test_serializers.py
Expand Up @@ -11,11 +11,11 @@
class PrometheusVirtualMachineSerializerTests(TestCase):
def test_vm_minimal_to_target(self):

data = PrometheusVirtualMachineSerializer(
instance=utils.build_minimal_vm("vm-01.example.com")
).data
instance = utils.build_minimal_vm("vm-01.example.com")
data = PrometheusVirtualMachineSerializer(instance=instance).data

self.assertEqual(data["targets"], ["vm-01.example.com"])
self.assertDictContainsSubset({"__meta_netbox_id": instance.id}, data["labels"])
self.assertDictContainsSubset(
{"__meta_netbox_model": "VirtualMachine"}, data["labels"]
)
Expand All @@ -31,11 +31,11 @@ def test_vm_minimal_to_target(self):
)

def test_vm_full_to_target(self):
data = PrometheusVirtualMachineSerializer(
instance=utils.build_vm_full("vm-full-01.example.com")
).data
instance = utils.build_vm_full("vm-full-01.example.com")
data = PrometheusVirtualMachineSerializer(instance=instance).data

self.assertEqual(data["targets"], ["vm-full-01.example.com"])
self.assertDictContainsSubset({"__meta_netbox_id": instance.id}, data["labels"])
self.assertDictContainsSubset(
{"__meta_netbox_model": "VirtualMachine"}, data["labels"]
)
Expand Down Expand Up @@ -81,30 +81,36 @@ def test_vm_full_to_target(self):
{"__meta_netbox_custom_field_bool": "True"}, data["labels"]
)
self.assertDictContainsSubset(
{"__meta_netbox_custom_field_json": "{'foo': ['bar', 'baz']}"}, data["labels"]
{"__meta_netbox_custom_field_json": "{'foo': ['bar', 'baz']}"},
data["labels"],
)
self.assertDictContainsSubset(
{"__meta_netbox_custom_field_multi_selection": "['foo', 'baz']"}, data["labels"]
{"__meta_netbox_custom_field_multi_selection": "['foo', 'baz']"},
data["labels"],
)
self.assertDictContainsSubset(
{
"__meta_netbox_custom_field_contact":
"[{'id': 1, 'url': 'http://localhost:8000/api/tenancy/contacts/1/', 'display': 'Foo', 'name': 'Foo'}]"
}, data["labels"]
},
data["labels"],
)
self.assertDictContainsSubset(
{"__meta_netbox_custom_field_text_long": "This is\r\na pretty\r\nlog\r\nText"}, data["labels"]
{
"__meta_netbox_custom_field_text_long": "This is\r\na pretty\r\nlog\r\nText"
},
data["labels"],
)


class PrometheusDeviceSerializerTests(TestCase):
def test_device_minimal_to_target(self):

data = PrometheusDeviceSerializer(
instance=utils.build_minimal_device("firewall-01")
).data
instance = utils.build_minimal_device("firewall-01")
data = PrometheusDeviceSerializer(instance=instance).data

self.assertEqual(data["targets"], ["firewall-01"])
self.assertDictContainsSubset({"__meta_netbox_id": instance.id}, data["labels"])
self.assertDictContainsSubset({"__meta_netbox_model": "Device"}, data["labels"])
self.assertDictContainsSubset(
{"__meta_netbox_role": "Firewall"}, data["labels"]
Expand All @@ -124,11 +130,11 @@ def test_device_minimal_to_target(self):
)

def test_device_full_to_target(self):
data = PrometheusDeviceSerializer(
instance=utils.build_device_full("firewall-full-01")
).data
instance = utils.build_device_full("firewall-full-01")
data = PrometheusDeviceSerializer(instance=instance).data

self.assertEqual(data["targets"], ["firewall-full-01"])
self.assertDictContainsSubset({"__meta_netbox_id": instance.id}, data["labels"])
self.assertDictContainsSubset({"__meta_netbox_model": "Device"}, data["labels"])
self.assertDictContainsSubset(
{"__meta_netbox_platform": "Junos"}, data["labels"]
Expand Down Expand Up @@ -158,11 +164,11 @@ def test_device_full_to_target(self):

class PrometheusIPAddressSerializerTests(TestCase):
def test_ip_minimal_to_target(self):
data = PrometheusIPAddressSerializer(
instance=utils.build_minimal_ip("10.10.10.10/24")
).data
instance = utils.build_minimal_ip("10.10.10.10/24")
data = PrometheusIPAddressSerializer(instance=instance).data

self.assertEqual(data["targets"], ["10.10.10.10"])
self.assertDictContainsSubset({"__meta_netbox_id": instance.id}, data["labels"])
self.assertDictContainsSubset(
{"__meta_netbox_status": "active"}, data["labels"]
)
Expand All @@ -171,17 +177,17 @@ def test_ip_minimal_to_target(self):
)

def test_ip_full_to_target(self):
data = PrometheusIPAddressSerializer(
instance=utils.build_full_ip(
address="10.10.10.10/24", dns_name="foo.example.com"
)
).data
instance = utils.build_full_ip(
address="10.10.10.10/24", dns_name="foo.example.com"
)
data = PrometheusIPAddressSerializer(instance=instance).data

self.assertEqual(
data["targets"],
["foo.example.com"],
"IP with DNS name should use DNS name as target",
)
self.assertDictContainsSubset({"__meta_netbox_id": instance.id}, data["labels"])
self.assertDictContainsSubset(
{"__meta_netbox_status": "active"}, data["labels"]
)
Expand Down

0 comments on commit 948050d

Please sign in to comment.