From 9bec73b3f007cc2d530a13ae0318f5e1b30e5cca Mon Sep 17 00:00:00 2001 From: defiQUG Date: Thu, 9 Apr 2026 02:32:49 -0700 Subject: [PATCH] feat(portal/it): show same_name_duplicate_ip_guests and clarify hard duplicates Made-with: Cursor --- portal/src/app/it/page.tsx | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/portal/src/app/it/page.tsx b/portal/src/app/it/page.tsx index bc45365..b48f4c5 100644 --- a/portal/src/app/it/page.tsx +++ b/portal/src/app/it/page.tsx @@ -10,6 +10,7 @@ type DriftShape = { collected_at?: string; guest_count?: number; duplicate_ips?: Record; + same_name_duplicate_ip_guests?: Record; guest_lan_ips_not_in_declared_sources?: string[]; declared_lan11_ips_not_on_live_guests?: string[]; vmid_ip_mismatch_live_vs_all_vmids_doc?: Array<{ vmid: string; live_ip: string; all_vmids_doc_ip: string }>; @@ -76,6 +77,9 @@ export default function ItOpsPage() { }; const dupCount = drift?.duplicate_ips ? Object.keys(drift.duplicate_ips).length : 0; + const sameNameDupCount = drift?.same_name_duplicate_ip_guests + ? Object.keys(drift.same_name_duplicate_ip_guests).length + : 0; return (

Guests (live): {drift.guest_count ?? '—'}

-

Duplicate guest IPs: {dupCount}

+

Duplicate guest IPs (different names): {dupCount}

+

Same-name IP clones (informational): {sameNameDupCount}

LAN guests not in declared sources:{' '} {drift.guest_lan_ips_not_in_declared_sources?.length ?? 0} @@ -159,7 +164,7 @@ export default function ItOpsPage() { {dupCount > 0 && ( - Duplicate IPs (fix on cluster) + Duplicate IPs — different guest names

@@ -169,6 +174,23 @@ export default function ItOpsPage() {
               
             )}
 
+            {sameNameDupCount > 0 && (
+              
+                
+                  Same-name guests sharing an IP
+                
+                
+                  

+ Multiple VMIDs use the same IP and identical hostname (e.g. clones). Resolve in Proxmox; + export no longer fails CI on this alone. +

+
+                    {JSON.stringify(drift.same_name_duplicate_ip_guests, null, 2)}
+                  
+
+
+ )} + {(drift.notes?.length ?? 0) > 0 && (