diff --git a/netbox_prometheus_sd/api/serializers.py b/netbox_prometheus_sd/api/serializers.py index 281e7d7..e489cd7 100644 --- a/netbox_prometheus_sd/api/serializers.py +++ b/netbox_prometheus_sd/api/serializers.py @@ -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) @@ -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) @@ -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: diff --git a/netbox_prometheus_sd/tests/test_serializers.py b/netbox_prometheus_sd/tests/test_serializers.py index 5859da6..097cbda 100644 --- a/netbox_prometheus_sd/tests/test_serializers.py +++ b/netbox_prometheus_sd/tests/test_serializers.py @@ -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"] ) @@ -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"] ) @@ -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"] @@ -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"] @@ -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"] ) @@ -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"] )