From fdf7794fe175ad13ca5ad27bb1be84ed9fd288ad Mon Sep 17 00:00:00 2001 From: Alex Gittings Date: Tue, 17 Feb 2026 16:35:26 +0000 Subject: [PATCH] fix(slurpitsync): improve node ID handling for matching nodes --- infrahub_sync/adapters/slurpitsync.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/infrahub_sync/adapters/slurpitsync.py b/infrahub_sync/adapters/slurpitsync.py index 4f6971f..ae099be 100644 --- a/infrahub_sync/adapters/slurpitsync.py +++ b/infrahub_sync/adapters/slurpitsync.py @@ -253,8 +253,12 @@ def slurpit_obj_to_diffsync( if not field_is_list: if node := obj.get(field.mapping): matching_nodes = [] - node_id = build_mapping(adapter=self, reference=field.reference, obj=obj, field=field) - matching_nodes = [item for item in nodes if str(item) == node_id] + # If node is a simple string/value, use it directly; otherwise build from nested object + if isinstance(node, (str, int)): + node_id = str(node) + else: + node_id = build_mapping(adapter=self, reference=field.reference, obj=obj, field=field) + matching_nodes = [item for item in nodes if item.get_unique_id() == node_id] if len(matching_nodes) == 0: self.skipped.append(node) return None @@ -266,7 +270,7 @@ def slurpit_obj_to_diffsync( data[field.name] = [] if node := obj.get(field.mapping): node_id = build_mapping(adapter=self, reference=field.reference, obj=obj, field=field) - matching_nodes = [item for item in nodes if str(item) == node_id] + matching_nodes = [item for item in nodes if item.get_unique_id() == node_id] if len(matching_nodes) == 0: self.skipped.append(node) continue