From cd7179937376ea7c7b81deedf37509717ed85143 Mon Sep 17 00:00:00 2001 From: Jeremy Stretch Date: Wed, 30 Sep 2020 17:09:39 -0400 Subject: [PATCH] Ignore the position stack when traversing single-position rear ports --- netbox/dcim/utils.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/netbox/dcim/utils.py b/netbox/dcim/utils.py index 2baa91622..75029cacc 100644 --- a/netbox/dcim/utils.py +++ b/netbox/dcim/utils.py @@ -34,14 +34,18 @@ def trace_paths(node): # Follow a FrontPort to its corresponding RearPort if isinstance(peer_termination, FrontPort): path.append(object_to_path_node(peer_termination)) - position_stack.append(peer_termination.rear_port_position) node = peer_termination.rear_port + if node.positions > 1: + position_stack.append(peer_termination.rear_port_position) path.append(object_to_path_node(node)) # Follow a RearPort to its corresponding FrontPort elif isinstance(peer_termination, RearPort): path.append(object_to_path_node(peer_termination)) - if position_stack: + if peer_termination.positions == 1: + node = FrontPort.objects.get(rear_port=peer_termination, rear_port_position=1) + path.append(object_to_path_node(node)) + elif position_stack: position = position_stack.pop() node = FrontPort.objects.get(rear_port=peer_termination, rear_port_position=position) path.append(object_to_path_node(node))