Previously, the database query was not reliably detecting
hosts which were to be released and made available
for new bookings. This should now take all bookings that
are over and have been cleaned by the lab, and make the
hosts available for reuse.
Change-Id: I040c2e02ac48d7bfde3fc1cf6bac4e59a48c8933
Signed-off-by: Parker Berberian <pberberian@iol.unh.edu>
from django.db.models import Q
from booking.models import Booking
from notifier.manager import NotificationHandler
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
from resource_inventory.resource_manager import ResourceManager
"""
gets all hosts from the database that need to be freed and frees them
"""
"""
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_jobs = Job.objects.filter(hostnetworkrelation__status__ne=200, hosthardwarerelation__status__ne=200)
- 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
end__lt=timezone.now(),
job__complete=True,
resource__isnull=False