[haizea-commit] r593 - branches/TP2.0/src/haizea/core
haizea-commit at mailman.cs.uchicago.edu
haizea-commit at mailman.cs.uchicago.edu
Thu Jun 18 12:29:22 CDT 2009
Author: borja
Date: 2009-06-18 12:29:21 -0500 (Thu, 18 Jun 2009)
New Revision: 593
Modified:
branches/TP2.0/src/haizea/core/leases.py
Log:
Collapsed lease classes into a single class.
Modified: branches/TP2.0/src/haizea/core/leases.py
===================================================================
--- branches/TP2.0/src/haizea/core/leases.py 2009-06-18 17:28:14 UTC (rev 592)
+++ branches/TP2.0/src/haizea/core/leases.py 2009-06-18 17:29:21 UTC (rev 593)
@@ -19,14 +19,6 @@
"""This module provides the lease data structures, and a couple of auxiliary
data structures.
-* Lease data structures
- * Lease: Base class for leases
- * ARLease: Advance reservation lease
- * BestEffortLease: Best-effort lease
- * ImmediateLease: Immediate lease
-* Miscellaneous structures
- * Timestamp: A wrapper around requested/scheduled/actual timestamps
- * Duration: A wrapper around requested/accumulated/actual durations
"""
from haizea.common.constants import LOGLEVEL_VDEBUG
@@ -85,8 +77,8 @@
STATE_DONE : "Done",
STATE_FAIL : "Fail"}
- def __init__(self, submit_time, start, duration, diskimage_id,
- diskimage_size, numnodes, requested_resources, preemptible):
+ def __init__(self, submit_time, requested_resources, start, duration,
+ deadline, preemptible, software):
# Lease ID (read only)
self.id = get_lease_id()
@@ -95,17 +87,15 @@
self.start = start
self.duration = duration
self.end = None
- self.diskimage_id = diskimage_id
- self.diskimage_size = diskimage_size
- # TODO: The following assumes homogeneous nodes. Should be modified
- # to account for heterogeneous nodes.
- self.numnodes = numnodes
+ #self.diskimage_id = diskimage_id
+ #self.diskimage_size = diskimage_size
self.requested_resources = requested_resources
self.preemptible = preemptible
# Bookkeeping attributes
# (keep track of the lease's state, resource reservations, etc.)
self.state = LeaseStateMachine()
+ self.numnodes = len(requested_resources)
self.diskimagemap = {}
self.memimagemap = {}
self.preparation_rrs = []
@@ -113,7 +103,7 @@
# Enactment information. Should only be manipulated by enactment module
self.enactment_info = None
- self.vnode_enactment_info = dict([(n+1, None) for n in range(numnodes)])
+ self.vnode_enactment_info = dict([(n+1, None) for n in range(self.numnodes)])
self.logger = logging.getLogger("LEASES")
@@ -130,7 +120,6 @@
self.logger.log(loglevel, "State : %s" % Lease.state_str[self.get_state()])
self.logger.log(loglevel, "Disk image : %s" % self.diskimage_id)
self.logger.log(loglevel, "Disk image size: %s" % self.diskimage_size)
- self.logger.log(loglevel, "Num nodes : %s" % self.numnodes)
self.logger.log(loglevel, "Resource req : %s" % self.requested_resources)
self.logger.log(loglevel, "Disk image map : %s" % pretty_nodemap(self.diskimagemap))
self.logger.log(loglevel, "Mem image map : %s" % pretty_nodemap(self.memimagemap))
@@ -179,7 +168,18 @@
def clear_rrs(self):
self.preparation_rrs = []
self.vm_rrs = []
+
+ def get_waiting_time(self):
+ return self.start.actual - self.submit_time
+ def get_slowdown(self, bound=10):
+ time_on_dedicated = self.duration.original
+ time_on_loaded = self.end - self.submit_time
+ bound = TimeDelta(seconds=bound)
+ if time_on_dedicated < bound:
+ time_on_dedicated = bound
+ return time_on_loaded / time_on_dedicated
+
def add_boot_overhead(self, t):
self.duration.incr(t)
@@ -280,95 +280,7 @@
def __init__(self):
StateMachine.__init__(self, LeaseStateMachine.initial_state, LeaseStateMachine.transitions, Lease.state_str)
-
-class ARLease(Lease):
- def __init__(self, submit_time, start, duration, diskimage_id,
- diskimage_size, numnodes, resreq, preemptible,
- # AR-specific parameters:
- realdur = None):
- start = Timestamp(start)
- duration = Duration(duration)
- if realdur != duration.requested:
- duration.known = realdur # ONLY for simulation
- Lease.__init__(self, submit_time, start, duration, diskimage_id,
- diskimage_size, numnodes, resreq, preemptible)
-
- def print_contents(self, loglevel=LOGLEVEL_VDEBUG):
- self.logger.log(loglevel, "__________________________________________________")
- Lease.print_contents(self, loglevel)
- self.logger.log(loglevel, "Type : AR")
- self.logger.log(loglevel, "Start time : %s" % self.start)
- self.print_rrs(loglevel)
- self.logger.log(loglevel, "--------------------------------------------------")
-
- def xmlrpc_marshall(self):
- l = Lease.xmlrpc_marshall(self)
- l["type"] = "AR"
- return l
-
-class BestEffortLease(Lease):
- def __init__(self, submit_time, duration, diskimage_id,
- diskimage_size, numnodes, resreq, preemptible,
- # BE-specific parameters:
- realdur = None):
- start = Timestamp(None) # i.e., start on a best-effort basis
- duration = Duration(duration)
- if realdur != duration.requested:
- duration.known = realdur # ONLY for simulation
- # When the images will be available
- self.imagesavail = None
- Lease.__init__(self, submit_time, start, duration, diskimage_id,
- diskimage_size, numnodes, resreq, preemptible)
-
- def print_contents(self, loglevel=LOGLEVEL_VDEBUG):
- self.logger.log(loglevel, "__________________________________________________")
- Lease.print_contents(self, loglevel)
- self.logger.log(loglevel, "Type : BEST-EFFORT")
- self.logger.log(loglevel, "Images Avail @ : %s" % self.imagesavail)
- self.print_rrs(loglevel)
- self.logger.log(loglevel, "--------------------------------------------------")
-
- def get_waiting_time(self):
- return self.start.actual - self.submit_time
-
- def get_slowdown(self, bound=10):
- time_on_dedicated = self.duration.original
- time_on_loaded = self.end - self.submit_time
- bound = TimeDelta(seconds=bound)
- if time_on_dedicated < bound:
- time_on_dedicated = bound
- return time_on_loaded / time_on_dedicated
-
- def xmlrpc_marshall(self):
- l = Lease.xmlrpc_marshall(self)
- l["type"] = "BE"
- return l
-
-
-class ImmediateLease(Lease):
- def __init__(self, submit_time, duration, diskimage_id,
- diskimage_size, numnodes, resreq, preemptible,
- # Immediate-specific parameters:
- realdur = None):
- start = Timestamp(None) # i.e., start on a best-effort basis
- duration = Duration(duration)
- duration.known = realdur # ONLY for simulation
- Lease.__init__(self, submit_time, start, duration, diskimage_id,
- diskimage_size, numnodes, resreq, preemptible)
-
- def print_contents(self, loglevel=LOGLEVEL_VDEBUG):
- self.logger.log(loglevel, "__________________________________________________")
- Lease.print_contents(self, loglevel)
- self.logger.log(loglevel, "Type : IMMEDIATE")
- self.print_rrs(loglevel)
- self.logger.log(loglevel, "--------------------------------------------------")
-
- def xmlrpc_marshall(self):
- l = Lease.xmlrpc_marshall(self)
- l["type"] = "IM"
- return l
-
class Timestamp(object):
def __init__(self, requested):
self.requested = requested
More information about the Haizea-commit
mailing list