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()
+