[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