[haizea-commit] r566 - in trunk/src/haizea/resourcemanager: . scheduler
haizea-commit at mailman.cs.uchicago.edu
haizea-commit at mailman.cs.uchicago.edu
Thu Feb 12 18:04:12 CST 2009
Author: borja
Date: 2009-02-12 18:04:10 -0600 (Thu, 12 Feb 2009)
New Revision: 566
Modified:
trunk/src/haizea/resourcemanager/accounting.py
trunk/src/haizea/resourcemanager/scheduler/lease_scheduler.py
trunk/src/haizea/resourcemanager/scheduler/vm_scheduler.py
Log:
Minor fixes
Modified: trunk/src/haizea/resourcemanager/accounting.py
===================================================================
--- trunk/src/haizea/resourcemanager/accounting.py 2009-02-13 00:03:42 UTC (rev 565)
+++ trunk/src/haizea/resourcemanager/accounting.py 2009-02-13 00:04:10 UTC (rev 566)
@@ -171,7 +171,7 @@
raise e
# Add lease data
- leases = self.rm.scheduler.completedleases.entries
+ leases = self.rm.scheduler.completed_leases.entries
# Remove some data that won't be necessary in the reporting tools
for l in leases.values():
l.clear_rrs()
Modified: trunk/src/haizea/resourcemanager/scheduler/lease_scheduler.py
===================================================================
--- trunk/src/haizea/resourcemanager/scheduler/lease_scheduler.py 2009-02-13 00:03:42 UTC (rev 565)
+++ trunk/src/haizea/resourcemanager/scheduler/lease_scheduler.py 2009-02-13 00:04:10 UTC (rev 566)
@@ -27,6 +27,7 @@
This module also includes a Queue class and a LeaseTable class, which are used
by the lease scheduler.
"""
+
import haizea.common.constants as constants
from haizea.common.utils import round_datetime_delta, round_datetime, estimate_transfer_time, get_config, get_accounting, get_clock
from haizea.resourcemanager.leases import Lease, ARLease, BestEffortLease, ImmediateLease
@@ -42,6 +43,12 @@
class LeaseScheduler(object):
"""The Haizea Lease Scheduler
+ This is the main scheduling class in Haizea. It handles lease scheduling which,
+ in turn involved VM scheduling, preparation scheduling (such as transferring
+ a VM image), and numerous bookkeeping operations. All these operations are
+ handled by other classes, so this class acts mostly as an orchestrator that
+ coordinates all the different operations involved in scheduling a lease.
+
Public methods:
request_lease -- Entry point of leases into the scheduler
schedule -- The scheduling function
@@ -86,7 +93,7 @@
# Create other data structures
self.queue = Queue(self)
self.leases = LeaseTable(self)
- self.completedleases = LeaseTable(self)
+ self.completed_leases = LeaseTable(self)
# Handlers are callback functions that get called whenever a type of
# resource reservation starts or ends. Each scheduler publishes the
@@ -158,7 +165,7 @@
get_accounting().incr_counter(constants.COUNTER_IMREJECTED, lease.id)
self.logger.info("Immediate lease request #%i has been rejected: %s" % (lease.id, exc.message))
lease.set_state(Lease.STATE_REJECTED)
- self.completedleases.add(lease)
+ self.completed_leases.add(lease)
self.leases.remove(lease)
# Schedule AR requests
@@ -175,7 +182,7 @@
get_accounting().incr_counter(constants.COUNTER_ARREJECTED, lease.id)
self.logger.info("AR lease request #%i has been rejected: %s" % (lease.id, exc.message))
lease.set_state(Lease.STATE_REJECTED)
- self.completedleases.add(lease)
+ self.completed_leases.add(lease)
self.leases.remove(lease)
# Process queue (i.e., traverse queue in search of leases that can be scheduled)
@@ -338,7 +345,7 @@
# Change state, and remove from lease table
lease.set_state(Lease.STATE_CANCELLED)
- self.completedleases.add(lease)
+ self.completed_leases.add(lease)
self.leases.remove(lease)
@@ -358,7 +365,7 @@
for r in rrs:
self.slottable.removeReservation(r)
lease.set_state(Lease.STATE_FAILED)
- self.completedleases.add(lease)
+ self.completed_leases.add(lease)
self.leases.remove(lease)
elif treatment == constants.ONFAILURE_EXIT or treatment == constants.ONFAILURE_EXIT_RAISE:
# In this case, a lease failure makes Haizea exit. This is useful when debugging,
@@ -655,13 +662,19 @@
l.duration.actual = l.duration.accumulated
l.end = round_datetime(get_clock().get_time())
self.preparation_scheduler.cleanup(l)
- self.completedleases.add(l)
+ self.completed_leases.add(l)
self.leases.remove(l)
if isinstance(l, BestEffortLease):
get_accounting().incr_counter(constants.COUNTER_BESTEFFORTCOMPLETED, l.id)
class Queue(object):
+ """A simple queue for leases
+
+ This class is a simple queue container for leases, with some
+ extra syntactic sugar added for convenience.
+ """
+
def __init__(self, scheduler):
self.scheduler = scheduler
self.__q = []
@@ -695,6 +708,12 @@
return iter(self.__q)
class LeaseTable(object):
+ """A simple container for leases
+
+ This class is a simple dictionary-like container for leases, with some
+ extra syntactic sugar added for convenience.
+ """
+
def __init__(self, scheduler):
self.scheduler = scheduler
self.entries = {}
Modified: trunk/src/haizea/resourcemanager/scheduler/vm_scheduler.py
===================================================================
--- trunk/src/haizea/resourcemanager/scheduler/vm_scheduler.py 2009-02-13 00:03:42 UTC (rev 565)
+++ trunk/src/haizea/resourcemanager/scheduler/vm_scheduler.py 2009-02-13 00:04:10 UTC (rev 566)
@@ -22,7 +22,7 @@
from haizea.resourcemanager.leases import Lease, ARLease, BestEffortLease, ImmediateLease
from haizea.resourcemanager.scheduler.slottable import ResourceReservation, ResourceTuple
from haizea.resourcemanager.scheduler.resourcepool import ResourcePool, ResourcePoolWithReusableImages
-from haizea.resourcemanager.scheduler import ReservationEventHandler, RescheduleLeaseException, NormalEndLeaseException, EnactmentError
+from haizea.resourcemanager.scheduler import ReservationEventHandler, RescheduleLeaseException, NormalEndLeaseException, EnactmentError, NotSchedulableException
from operator import attrgetter, itemgetter
from mx.DateTime import TimeDelta
More information about the Haizea-commit
mailing list