From: Scott Baker Date: Sun, 19 May 2013 23:20:09 +0000 (-0700) Subject: reservation agent WIP check-in X-Git-Tag: 1.0~36 X-Git-Url: http://git.onelab.eu/?p=plstackapi.git;a=commitdiff_plain;h=b453eef537e1e95bf68c038d07e1e92590a96f18 reservation agent WIP check-in --- diff --git a/planetstack/openstack/reservationagent.py b/planetstack/openstack/reservationagent.py new file mode 100644 index 0000000..86c4e91 --- /dev/null +++ b/planetstack/openstack/reservationagent.py @@ -0,0 +1,51 @@ +import datetime +import os +import sys +#os.environ.setdefault("DJANGO_SETTINGS_MODULE", "planetstack.settings") +import time +import django.utils +from core.models.sliver import Sliver +from core.models.reservation import Reservation, ReservedResource + +class ReservationAgent: + + def run(self): + while True : + slivers = {} + + tNow = django.utils.timezone.now() + print "Processing reservations, tNow is %s" % tNow + reservations = Reservation.objects.filter(startTime__lte = tNow) + for reservation in reservations: + print " Processing reservation %s" % reservation + if reservation.endTime <= tNow: + print " deleting expired reservation" + reservation.delete() + for reservedResource in reservation.reservedResources.all(): + sliver_resources = slivers.get(reservedResource.sliver.id, {}) + sliver_resources[reservedResource.resource.name] = reservedResource.quantity + slivers[reservedResource.sliver.id] = sliver_resources + + print "Sliver reservation set" + for (sliverid, sliver_resources) in slivers.items(): + print " sliver", sliverid, + for (name, value) in sliver_resources.items(): + print str(name)+":", value, + print + + print "Updating slivers" + for sliver in Sliver.objects.all(): + sliver_resv = slivers.get(sliver.id, {}) + numberCores = sliver_resv.get("numberCores", 0) + if numberCores != sliver.numberCores: + print "sliver %s setting numberCores to %s" % (sliver.name, numberCores) + sliver.numberCores = numberCores + sliver.save() + + print "sleep" + time.sleep(7) + + +if __name__ == '__main__': + ReservationAgent().run() +