summaryrefslogtreecommitdiffstats
path: root/dashboard/src/dashboard/tasks.py
diff options
context:
space:
mode:
Diffstat (limited to 'dashboard/src/dashboard/tasks.py')
-rw-r--r--dashboard/src/dashboard/tasks.py18
1 files changed, 10 insertions, 8 deletions
diff --git a/dashboard/src/dashboard/tasks.py b/dashboard/src/dashboard/tasks.py
index b1d97b7..597629f 100644
--- a/dashboard/src/dashboard/tasks.py
+++ b/dashboard/src/dashboard/tasks.py
@@ -11,10 +11,9 @@
from celery import shared_task
from django.utils import timezone
-from django.db.models import Q
from booking.models import Booking
from notifier.manager import NotificationHandler
-from api.models import JobStatus, SoftwareRelation, HostHardwareRelation, HostNetworkRelation, AccessRelation
+from api.models import Job, JobStatus, SoftwareRelation, HostHardwareRelation, HostNetworkRelation, AccessRelation
from resource_inventory.resource_manager import ResourceManager
@@ -41,7 +40,7 @@ def booking_poll():
if vlan.public:
try:
host.lab.vlan_manager.release_public_vlan(vlan.vlan_id)
- except: # will fail if we already released in this loop
+ except Exception: # will fail if we already released in this loop
pass
else:
vlans.append(vlan.vlan_id)
@@ -92,12 +91,15 @@ def free_hosts():
"""
gets all hosts from the database that need to be freed and frees them
"""
- networks = ~Q(~Q(job__hostnetworkrelation__status=200))
- hardware = ~Q(~Q(job__hosthardwarerelation__status=200))
+ undone_statuses = [JobStatus.NEW, JobStatus.CURRENT, JobStatus.ERROR]
+ undone_jobs = Job.objects.filter(
+ hostnetworkrelation__status__in=undone_statuses,
+ hosthardwarerelation__status__in=undone_statuses
+ )
- bookings = Booking.objects.filter(
- networks,
- hardware,
+ bookings = Booking.objects.exclude(
+ job__in=undone_jobs
+ ).filter(
end__lt=timezone.now(),
job__complete=True,
resource__isnull=False