From 50ca172dc9fc324912d0b8e01bfd751e8a7fc1d1 Mon Sep 17 00:00:00 2001
From: Anders Harrisson <anders.harrisson@ess.eu>
Date: Tue, 3 Dec 2024 11:26:50 +0100
Subject: [PATCH] Add host variables for NetBox object id and object model
 label

JIRA INFRA-11155
---
 netbox_awx_plugin/serializers.py            | 7 ++++++-
 netbox_awx_plugin/tests/test_serializers.py | 8 ++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/netbox_awx_plugin/serializers.py b/netbox_awx_plugin/serializers.py
index 7e2b7c9..f21e5c1 100644
--- a/netbox_awx_plugin/serializers.py
+++ b/netbox_awx_plugin/serializers.py
@@ -85,7 +85,10 @@ class IPAddressSerializer(serializers.BaseSerializer):
 
 class DeviceSerializer(serializers.BaseSerializer):
     def to_representation(self, instance):
-        variables = {}
+        variables = {
+            "netbox_model_label": instance._meta.label,
+            "netbox_id": instance.id,
+        }
         variables["netbox_interfaces"] = []
         for interface in instance.interfaces.all():
             serializer = InterfaceSerializer(interface)
@@ -112,6 +115,8 @@ class VMInterfaceSerializer(serializers.BaseSerializer):
 class VMSerializer(serializers.BaseSerializer):
     def to_representation(self, instance):
         variables = {
+            "netbox_model_label": instance._meta.label,
+            "netbox_id": instance.id,
             "netbox_virtualmachine_name": instance.name,
             "netbox_virtualmachine_vcpus": float(instance.vcpus) if instance.vcpus is not None else 0.0,
             "netbox_virtualmachine_memory": instance.memory or 0,
diff --git a/netbox_awx_plugin/tests/test_serializers.py b/netbox_awx_plugin/tests/test_serializers.py
index 315372c..df1580c 100644
--- a/netbox_awx_plugin/tests/test_serializers.py
+++ b/netbox_awx_plugin/tests/test_serializers.py
@@ -225,6 +225,8 @@ class DeviceSerializerTest(TestCase):
             "description": 'Test Device Description',
             "enabled": True,
             "variables": json.dumps({
+                "netbox_model_label": "dcim.Device",
+                "netbox_id": 2,
                 "netbox_interfaces": [
                     {
                         "name": 'eth0',
@@ -309,6 +311,8 @@ class VMSerializerTest(TestCase):
             "description": 'Test VM Description',
             "enabled": True,
             "variables": json.dumps({
+                "netbox_model_label": "virtualization.VirtualMachine",
+                "netbox_id": 3,
                 "netbox_virtualmachine_name": 'Test VM',
                 "netbox_virtualmachine_vcpus": 4.0,
                 "netbox_virtualmachine_memory": 8192,
@@ -421,6 +425,8 @@ class DeviceSerializerNoPrimaryIPTest(TestCase):
             "description": 'Test Device Description',
             "enabled": True,
             "variables": json.dumps({
+                "netbox_model_label": "dcim.Device",
+                "netbox_id": 1,
                 "netbox_interfaces": [
                     {
                         "name": 'eth0',
@@ -471,6 +477,8 @@ class VMSerializerNoPrimaryIPTest(TestCase):
             "description": 'Test VM Description',
             "enabled": True,
             "variables": json.dumps({
+                "netbox_model_label": "virtualization.VirtualMachine",
+                "netbox_id": 2,
                 "netbox_virtualmachine_name": 'Test VM',
                 "netbox_virtualmachine_vcpus": 4.0,
                 "netbox_virtualmachine_memory": 8192,
-- 
GitLab