From 854d033a9954d59f466d5d6bb659845cd54b6335 Mon Sep 17 00:00:00 2001 From: mvrp21 <mvrp21@inf.ufpr.br> Date: Tue, 11 Jun 2024 11:22:50 -0300 Subject: [PATCH] fix: interface update Signed-off-by: mvrp21 <mvrp21@inf.ufpr.br> --- netbox_proxmox_sync/api/proxmox/update.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/netbox_proxmox_sync/api/proxmox/update.py b/netbox_proxmox_sync/api/proxmox/update.py index 854c5d5..f437760 100644 --- a/netbox_proxmox_sync/api/proxmox/update.py +++ b/netbox_proxmox_sync/api/proxmox/update.py @@ -122,7 +122,7 @@ def update_old_interfaces(proxmox_interfaces, netbox_interfaces): for ni in netbox_interfaces: updated_interface = False # same VM, same interface name, see if it's necessary to update - if ni.virtual_machine.name == pi['virtual_machine']['name']: + if ni.virtual_machine['name'] == pi['virtual_machine']['name']: if ni.name == pi['name']: found = True updated_interface = ni.untagged_vlan.vid != pi['untagged_vlan']['vid'] or \ @@ -130,7 +130,12 @@ def update_old_interfaces(proxmox_interfaces, netbox_interfaces): ni.mac_address = pi['mac_address'].upper() ni.untagged_vlan = pi['untagged_vlan'] if updated_interface: - updated.append(dict(ni)) + ui = dict(ni) + # Virtual machine won't change, nor mode + del ui['virtual_machine'] + del ui['mode'] + # better to be a dict here + updated.append(ui) break # if not found: create if not found: @@ -139,7 +144,7 @@ def update_old_interfaces(proxmox_interfaces, netbox_interfaces): found = False # if not found in proxmox: delete (seem simple?) for pi in proxmox_interfaces: - if ni.virtual_machine.name == pi['virtual_machine']['name']: + if ni.virtual_machine['name'] == pi['virtual_machine']['name']: if ni.name == pi['name']: found = True break @@ -164,6 +169,8 @@ def update_virtual_machines(cluster_id, proxmox_vms, proxmox_interfaces): to_create = [vm for vm in proxmox_vms if vm['name'] not in old_vms] updated = update_old_vms(old_vms, new_vms) + for interface in netbox_interfaces: + interface.virtual_machine = {'name': interface.virtual_machine['name']} to_create_i, updated_i, deleted_i = update_old_interfaces( proxmox_interfaces, netbox_interfaces ) -- GitLab