mirror of
https://github.com/netbox-community/netbox.git
synced 2025-07-19 09:53:34 -06:00
Fix circuit termination tracing & update tests
This commit is contained in:
parent
8bc6d8cb23
commit
c88f7b8408
@ -435,20 +435,22 @@ class CablePath(models.Model):
|
||||
assert all(ct.term_side == term_side for ct in remote_terminations[1:])
|
||||
circuit_termination = CircuitTermination.objects.filter(
|
||||
circuit=remote_terminations[0].circuit,
|
||||
term_side='Z' if term_side == 'A' else 'Z'
|
||||
term_side='Z' if term_side == 'A' else 'A'
|
||||
).first()
|
||||
if circuit_termination is None:
|
||||
break
|
||||
elif circuit_termination.provider_network:
|
||||
# Circuit terminates to a ProviderNetwork
|
||||
path.append([
|
||||
object_to_path_node(circuit_termination.provider_network)
|
||||
path.extend([
|
||||
[object_to_path_node(circuit_termination)],
|
||||
[object_to_path_node(circuit_termination.provider_network)],
|
||||
])
|
||||
break
|
||||
elif circuit_termination.site and not circuit_termination.cable:
|
||||
# Circuit terminates to a Site
|
||||
path.append([
|
||||
object_to_path_node(circuit_termination.site)
|
||||
path.extend([
|
||||
[object_to_path_node(circuit_termination)],
|
||||
[object_to_path_node(circuit_termination.site)],
|
||||
])
|
||||
break
|
||||
|
||||
|
@ -102,14 +102,14 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs):
|
||||
create_cablepath(terms)
|
||||
else:
|
||||
rebuild_paths(terms)
|
||||
# elif instance.status != instance._orig_status:
|
||||
# # We currently don't support modifying either termination of an existing Cable. (This
|
||||
# # may change in the future.) However, we do need to capture status changes and update
|
||||
# # any CablePaths accordingly.
|
||||
# if instance.status != LinkStatusChoices.STATUS_CONNECTED:
|
||||
# CablePath.objects.filter(path__contains=instance).update(is_active=False)
|
||||
# else:
|
||||
# rebuild_paths(instance)
|
||||
elif instance.status != instance._orig_status:
|
||||
# We currently don't support modifying either termination of an existing Cable. (This
|
||||
# may change in the future.) However, we do need to capture status changes and update
|
||||
# any CablePaths accordingly.
|
||||
if instance.status != LinkStatusChoices.STATUS_CONNECTED:
|
||||
CablePath.objects.filter(_nodes__contains=instance).update(is_active=False)
|
||||
else:
|
||||
rebuild_paths([instance])
|
||||
|
||||
|
||||
# @receiver(post_save, sender=CableTermination)
|
||||
|
@ -385,7 +385,6 @@ class CablePathTestCase(TestCase):
|
||||
)
|
||||
self.assertPathExists(
|
||||
(interface2, cable2, frontport1_2, rearport1, cable3, rearport2, frontport2_2),
|
||||
is_active=False,
|
||||
is_complete=False
|
||||
)
|
||||
self.assertEqual(CablePath.objects.count(), 2)
|
||||
@ -427,8 +426,8 @@ class CablePathTestCase(TestCase):
|
||||
cable3.delete()
|
||||
|
||||
# Check for four partial paths; one from each interface
|
||||
self.assertEqual(CablePath.objects.filter(destination_id__isnull=True).count(), 4)
|
||||
self.assertEqual(CablePath.objects.filter(destination_id__isnull=False).count(), 0)
|
||||
self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
|
||||
self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
|
||||
interface1.refresh_from_db()
|
||||
interface2.refresh_from_db()
|
||||
interface3.refresh_from_db()
|
||||
@ -1116,8 +1115,8 @@ class CablePathTestCase(TestCase):
|
||||
cable4.delete()
|
||||
|
||||
# Check for four partial paths; one from each interface
|
||||
self.assertEqual(CablePath.objects.filter(destination_id__isnull=True).count(), 4)
|
||||
self.assertEqual(CablePath.objects.filter(destination_id__isnull=False).count(), 0)
|
||||
self.assertEqual(CablePath.objects.filter(is_complete=False).count(), 4)
|
||||
self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
|
||||
|
||||
def test_213_multiple_circuits_to_interface(self):
|
||||
"""
|
||||
|
Loading…
Reference in New Issue
Block a user