From 849bd27d4cbb09ebc86fe53d70608011e9481a40 Mon Sep 17 00:00:00 2001 From: Joachim Burket Date: Thu, 23 Jan 2025 13:56:59 +0100 Subject: [PATCH 1/2] add the 'serial' field to NetBox VirtualMachine and set it from VMWare 'instanceUuid' Signed-off-by: Joachim Burket --- module/netbox/object_classes.py | 1 + module/sources/vmware/connection.py | 1 + 2 files changed, 2 insertions(+) diff --git a/module/netbox/object_classes.py b/module/netbox/object_classes.py index dd84862f..8cb8ff82 100644 --- a/module/netbox/object_classes.py +++ b/module/netbox/object_classes.py @@ -1624,6 +1624,7 @@ class NBVM(NetBoxObject): def __init__(self, *args, **kwargs): self.data_model = { "name": 64, + "serial": 50, "status": ["offline", "active", "planned", "staged", "failed", "decommissioning"], "cluster": NBCluster, "role": NBDeviceRole, diff --git a/module/sources/vmware/connection.py b/module/sources/vmware/connection.py index f8f8bfd8..b75d5942 100644 --- a/module/sources/vmware/connection.py +++ b/module/sources/vmware/connection.py @@ -2176,6 +2176,7 @@ def add_virtual_machine(self, obj): vm_data = { "name": name, + "serial": vm_uuid, "cluster": nb_cluster_object, "status": status, "memory": vm_memory, From 2963de5141bd498e841dec5d3bc8feda45698fbd Mon Sep 17 00:00:00 2001 From: joachimBurket Date: Thu, 23 Jan 2025 16:14:01 +0100 Subject: [PATCH 2/2] only set the 'serial' field for NetBox version >=4.1.0 Signed-off-by: joachimBurket --- module/sources/vmware/connection.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/module/sources/vmware/connection.py b/module/sources/vmware/connection.py index b75d5942..27c177c8 100644 --- a/module/sources/vmware/connection.py +++ b/module/sources/vmware/connection.py @@ -2176,7 +2176,6 @@ def add_virtual_machine(self, obj): vm_data = { "name": name, - "serial": vm_uuid, "cluster": nb_cluster_object, "status": status, "memory": vm_memory, @@ -2197,6 +2196,10 @@ def add_virtual_machine(self, obj): if isinstance(comp, vim.vm.device.VirtualDisk) ]) / 1024 / 1024) + # Add adaptation for the new 'serial' field in NetBox 4.1.0 VM model + if version.parse(self.inventory.netbox_api_version) >= version.parse("4.1.0"): + vm_data["serial"] = vm_uuid + if platform is not None: vm_data["platform"] = {"name": platform} if annotation is not None: