1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

Update & restore rebuild_paths()

This commit is contained in:
jeremystretch
2022-05-10 10:30:58 -04:00
parent 5667a9c456
commit d89f067c00
3 changed files with 12 additions and 11 deletions

View File

@ -23,5 +23,5 @@ def rebuild_cablepaths(instance, raw=False, **kwargs):
""" """
if not raw: if not raw:
peer_termination = instance.get_peer_termination() peer_termination = instance.get_peer_termination()
# if peer_termination: if peer_termination:
# rebuild_paths(peer_termination) rebuild_paths([peer_termination])

View File

@ -100,8 +100,8 @@ def update_connected_endpoints(instance, created, raw=False, **kwargs):
# Examine type of first termination to determine object type (all must be the same) # Examine type of first termination to determine object type (all must be the same)
if isinstance(terms[0], PathEndpoint): if isinstance(terms[0], PathEndpoint):
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

View File

@ -52,16 +52,17 @@ def create_cablepath(terminations):
cp.save() cp.save()
def rebuild_paths(obj): def rebuild_paths(terminations):
""" """
Rebuild all CablePaths which traverse the specified node Rebuild all CablePaths which traverse the specified node
""" """
from dcim.models import CablePath from dcim.models import CablePath
cable_paths = CablePath.objects.filter(path__contains=obj) for obj in terminations:
cable_paths = CablePath.objects.filter(_nodes__contains=obj)
with transaction.atomic(): with transaction.atomic():
for cp in cable_paths: for cp in cable_paths:
cp.delete() cp.delete()
if cp.origin: origins = [path_node_to_object(node) for node in cp.path[0]]
create_cablepath(cp.origin) create_cablepath(origins)