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