From: Sawyer Bergeron Date: Tue, 30 Mar 2021 17:54:21 +0000 (+0000) Subject: Merge "Update actions to free hosts and vlans" X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=commitdiff_plain;h=6366b17;p=laas.git Merge "Update actions to free hosts and vlans" --- 6366b1776bc51c29d4ba4c256f51d16acc52d871 diff --cc src/dashboard/admin_utils.py index ad276d9,b69981c..186a64f --- a/src/dashboard/admin_utils.py +++ b/src/dashboard/admin_utils.py @@@ -306,13 -223,22 +309,28 @@@ def force_release_booking(booking_id: i task.save() + def free_leaked_public_vlans(safety_buffer_days=2): + for lab in Lab.objects.all(): + current_booking_set = Booking.objects.filter(end__gte=timezone.now() + timedelta(days=safety_buffer_days)) + + marked_nets = set() + + for booking in current_booking_set: + for network in get_network_metadata(booking.id): + marked_nets.add(network["vlan_id"]) + + for net in PublicNetwork.objects.filter(lab=lab).filter(in_use=True): + if net.vlan not in marked_nets: + lab.vlan_manager.release_public_vlan(net.vlan) + + def get_network_metadata(booking_id: int): + """ + Takes a booking id and prints all (known) networks that are owned by it. + Returns an object of the form {: {"vlan_id": int, "netname": str , "public": bool