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:]) assert all(ct.term_side == term_side for ct in remote_terminations[1:])
circuit_termination = CircuitTermination.objects.filter( circuit_termination = CircuitTermination.objects.filter(
circuit=remote_terminations[0].circuit, circuit=remote_terminations[0].circuit,
term_side='Z' if term_side == 'A' else 'Z' term_side='Z' if term_side == 'A' else 'A'
).first() ).first()
if circuit_termination is None: if circuit_termination is None:
break break
elif circuit_termination.provider_network: elif circuit_termination.provider_network:
# Circuit terminates to a ProviderNetwork # Circuit terminates to a ProviderNetwork
path.append([ path.extend([
object_to_path_node(circuit_termination.provider_network) [object_to_path_node(circuit_termination)],
[object_to_path_node(circuit_termination.provider_network)],
]) ])
break break
elif circuit_termination.site and not circuit_termination.cable: elif circuit_termination.site and not circuit_termination.cable:
# Circuit terminates to a Site # Circuit terminates to a Site
path.append([ path.extend([
object_to_path_node(circuit_termination.site) [object_to_path_node(circuit_termination)],
[object_to_path_node(circuit_termination.site)],
]) ])
break break

View File

@ -102,14 +102,14 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs):
create_cablepath(terms) create_cablepath(terms)
else: else:
rebuild_paths(terms) rebuild_paths(terms)
# elif instance.status != instance._orig_status: elif instance.status != instance._orig_status:
# # We currently don't support modifying either termination of an existing Cable. (This # 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 # may change in the future.) However, we do need to capture status changes and update
# # any CablePaths accordingly. # any CablePaths accordingly.
# if instance.status != LinkStatusChoices.STATUS_CONNECTED: if instance.status != LinkStatusChoices.STATUS_CONNECTED:
# CablePath.objects.filter(path__contains=instance).update(is_active=False) CablePath.objects.filter(_nodes__contains=instance).update(is_active=False)
# else: else:
# rebuild_paths(instance) rebuild_paths([instance])
# @receiver(post_save, sender=CableTermination) # @receiver(post_save, sender=CableTermination)

View File

@ -385,7 +385,6 @@ class CablePathTestCase(TestCase):
) )
self.assertPathExists( self.assertPathExists(
(interface2, cable2, frontport1_2, rearport1, cable3, rearport2, frontport2_2), (interface2, cable2, frontport1_2, rearport1, cable3, rearport2, frontport2_2),
is_active=False,
is_complete=False is_complete=False
) )
self.assertEqual(CablePath.objects.count(), 2) self.assertEqual(CablePath.objects.count(), 2)
@ -427,8 +426,8 @@ class CablePathTestCase(TestCase):
cable3.delete() cable3.delete()
# Check for four partial paths; one from each interface # 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(is_complete=False).count(), 4)
self.assertEqual(CablePath.objects.filter(destination_id__isnull=False).count(), 0) self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
interface1.refresh_from_db() interface1.refresh_from_db()
interface2.refresh_from_db() interface2.refresh_from_db()
interface3.refresh_from_db() interface3.refresh_from_db()
@ -1116,8 +1115,8 @@ class CablePathTestCase(TestCase):
cable4.delete() cable4.delete()
# Check for four partial paths; one from each interface # 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(is_complete=False).count(), 4)
self.assertEqual(CablePath.objects.filter(destination_id__isnull=False).count(), 0) self.assertEqual(CablePath.objects.filter(is_complete=True).count(), 0)
def test_213_multiple_circuits_to_interface(self): def test_213_multiple_circuits_to_interface(self):
""" """