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