Fix circuit termination tracing & update tests

This commit is contained in:
jeremystretch 2022-05-10 13:45:52 -04:00
parent 8bc6d8cb23
commit c88f7b8408
3 changed files with 19 additions and 18 deletions

View File

@ -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

View File

@ -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)

View File

@ -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):
"""