From cf51f4e6e06cf5a04891188596bc38df32e16abf Mon Sep 17 00:00:00 2001
From: fmkiotheka <fmkiotheka@inf.ufpr.br>
Date: Tue, 17 Jun 2025 17:01:45 -0300
Subject: [PATCH] fix: description not being updated

---
 netbox_proxmox_sync/api/netbox/update.py   | 12 +++++-------
 netbox_proxmox_sync/api/proxmox/extract.py |  6 +++---
 netbox_proxmox_sync/api/utils/models.py    | 16 ++++++++--------
 setup.py                                   |  2 +-
 4 files changed, 17 insertions(+), 19 deletions(-)

diff --git a/netbox_proxmox_sync/api/netbox/update.py b/netbox_proxmox_sync/api/netbox/update.py
index ab56047..557c531 100644
--- a/netbox_proxmox_sync/api/netbox/update.py
+++ b/netbox_proxmox_sync/api/netbox/update.py
@@ -37,15 +37,13 @@ def vms(proxmox_vms, netbox_vms):
     created = [vm for vm in proxmox_vms if vm['custom_fields']['vmid'] not in nb_vms]
     deleted = [vm for vm in netbox_vms if vm['custom_fields']['vmid'] not in px_vms]
     updated = []
-    for name in px_vms:
+    for vmid, px_vm in px_vms.items():
         changed = False
-        px_vm = px_vms[name]
-        if nb_vms.get(name) is None:
-            continue
-        nb_vm = nb_vms[name]
+        if vmid not in nb_vms: continue
+        nb_vm = nb_vms[vmid]
         # Update all fields
-        for field in px_vm:
-            if nb_vm.get(field) is None:
+        for field in px_vm.keys():
+            if field not in nb_vm:
                 changed = True
                 nb_vm[field] = px_vm[field]
             else:
diff --git a/netbox_proxmox_sync/api/proxmox/extract.py b/netbox_proxmox_sync/api/proxmox/extract.py
index 8edb514..7daf499 100644
--- a/netbox_proxmox_sync/api/proxmox/extract.py
+++ b/netbox_proxmox_sync/api/proxmox/extract.py
@@ -19,9 +19,9 @@ def extract_vm_data(cluster_name, node_name, vm_status):
     except Exception:
         raise APIError('Failed to connect to Proxmox Cluster!')
     tags = []
-    if vm_config.get('tags') is not None:
-        tags = vm_config['tags'].split(';')
-    vm_data = vm_from_proxmox(cluster_name, node_name, vm_status, tags)
+    if 'tags' in vm_status:
+        tags = vm_status['tags'].split(';')
+    vm_data = vm_from_proxmox(cluster_name, node_name, vm_status, vm_config, tags)
     interfaces_data = extract_vm_interfaces(vm_config)
 
     return vm_data, interfaces_data
diff --git a/netbox_proxmox_sync/api/utils/models.py b/netbox_proxmox_sync/api/utils/models.py
index 5974e7e..a5e9185 100644
--- a/netbox_proxmox_sync/api/utils/models.py
+++ b/netbox_proxmox_sync/api/utils/models.py
@@ -132,23 +132,23 @@ def tag_from_proxmox(tag_name, color=NETBOX_DEFAULT_TAG_COLOR):
     ).to_dict()
 
 
-def vm_from_proxmox(cluster_name, proxmox_node_name, proxmox_vm, tags=[]):
-    maxdisk = proxmox_vm.get('maxdisk')
+def vm_from_proxmox(cluster_name, proxmox_node_name, proxmox_vm_status, proxmox_vm_config, tags=[]):
+    maxdisk = proxmox_vm_status.get('maxdisk')
     if maxdisk is not None:
         maxdisk = int(maxdisk) / 2 ** 20  # B -> MB
-    memory = int(proxmox_vm['maxmem']) / 2**20  # B -> MB
+    memory = int(proxmox_vm_status['maxmem']) / 2**20  # B -> MB
     return VirtualMachine(
-        vmid=proxmox_vm['vmid'],
-        name=proxmox_vm['name'],
-        status='active' if proxmox_vm['status'] == 'running' else 'offline',
+        vmid=proxmox_vm_status['vmid'],
+        name=proxmox_vm_status['name'],
+        status='active' if proxmox_vm_status['status'] == 'running' else 'offline',
         node_name=proxmox_node_name,
         cluster_name=cluster_name,
-        vcpus=proxmox_vm['cpus'],
+        vcpus=proxmox_vm_status['cpus'],
         role_id=NETBOX_VM_ROLE_ID,
         maxmem=memory,
         tags=tags,
         maxdisk=maxdisk,
-        description=proxmox_vm.get('description'),
+        description=proxmox_vm_config.get('description'),
     ).to_dict()
 
 
diff --git a/setup.py b/setup.py
index 3eea31b..a2f6ec6 100644
--- a/setup.py
+++ b/setup.py
@@ -2,7 +2,7 @@ from setuptools import find_packages, setup
 
 setup(
     name='netbox-proxmox-sync',
-    version='2.2.3',
+    version='2.2.4',
     description='Import Proxmox cluster info into NetBox.',
     install_requires=['pynetbox', 'proxmoxer'],
     include_package_data=True,
-- 
GitLab