[haizea-commit] r553 - in trunk/src/haizea: common resourcemanager

haizea-commit at mailman.cs.uchicago.edu haizea-commit at mailman.cs.uchicago.edu
Fri Dec 19 15:32:58 CST 2008


Author: borja
Date: 2008-12-19 15:32:52 -0600 (Fri, 19 Dec 2008)
New Revision: 553

Modified:
   trunk/src/haizea/common/utils.py
   trunk/src/haizea/resourcemanager/datastruct.py
Log:
Beginnings of Lease state machine

Modified: trunk/src/haizea/common/utils.py
===================================================================
--- trunk/src/haizea/common/utils.py	2008-12-17 02:14:27 UTC (rev 552)
+++ trunk/src/haizea/common/utils.py	2008-12-19 21:32:52 UTC (rev 553)
@@ -126,3 +126,6 @@
 def get_clock():
     from haizea.resourcemanager.rm import ResourceManager
     return ResourceManager.get_singleton().clock
+
+class StateMachine(object):
+    pass
\ No newline at end of file

Modified: trunk/src/haizea/resourcemanager/datastruct.py
===================================================================
--- trunk/src/haizea/resourcemanager/datastruct.py	2008-12-17 02:14:27 UTC (rev 552)
+++ trunk/src/haizea/resourcemanager/datastruct.py	2008-12-19 21:32:52 UTC (rev 553)
@@ -40,7 +40,7 @@
 """
 
 from haizea.common.constants import RES_MEM, MIGRATE_NONE, MIGRATE_MEM, MIGRATE_MEMDISK, LOGLEVEL_VDEBUG
-from haizea.common.utils import round_datetime_delta, get_lease_id, pretty_nodemap, estimate_transfer_time, xmlrpc_marshall_singlevalue
+from haizea.common.utils import StateMachine, round_datetime_delta, get_lease_id, pretty_nodemap, estimate_transfer_time, xmlrpc_marshall_singlevalue
 
 from operator import attrgetter
 from mx.DateTime import TimeDelta
@@ -203,6 +203,58 @@
                 
         return l
         
+class LeaseStateMachine(StateMachine):
+    initial_state = Lease.STATE_NEW
+    transitions = {Lease.STATE_NEW:           [(Lease.STATE_PENDING,    "")],
+                   Lease.STATE_PENDING:       [(Lease.STATE_SCHEDULED,  ""),
+                                               (Lease.STATE_QUEUED,     ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_REJECTED,   "")],
+                   Lease.STATE_SCHEDULED:     [(Lease.STATE_PREPARING,  ""),
+                                               (Lease.STATE_READY,      ""),
+                                               (Lease.STATE_MIGRATING,  ""),
+                                               (Lease.STATE_RESUMING,   ""),
+                                               (Lease.STATE_CANCELLED,  "")],
+                   Lease.STATE_QUEUED:        [(Lease.STATE_SCHEDULED,  ""),
+                                               (Lease.STATE_SUSPENDED,  ""),
+                                               (Lease.STATE_CANCELLED,  "")],
+                   Lease.STATE_PREPARING:     [(Lease.STATE_READY,      ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_FAIL,       "")],
+                   Lease.STATE_READY:         [(Lease.STATE_ACTIVE,     ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_FAIL,       "")],
+                   Lease.STATE_ACTIVE:        [(Lease.STATE_SUSPENDING, ""),
+                                               (Lease.STATE_DONE,       ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_FAIL,       "")],
+                   Lease.STATE_SUSPENDING:    [(Lease.STATE_SUSPENDED,  ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_FAIL,       "")],
+                   Lease.STATE_SUSPENDED:     [(Lease.STATE_QUEUED,     ""),
+                                               (Lease.STATE_MIGRATING,  ""),
+                                               (Lease.STATE_RESUMING,   ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_FAIL,       "")],
+                   Lease.STATE_MIGRATING:     [(Lease.STATE_SUSPENDED,  ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_FAIL,       "")],
+                   Lease.STATE_RESUMING:      [(Lease.STATE_RESUMED_READY, ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_FAIL,       "")],
+                   Lease.STATE_RESUMED_READY: [(Lease.STATE_ACTIVE,     ""),
+                                               (Lease.STATE_CANCELLED,  ""),
+                                               (Lease.STATE_FAIL,       "")],
+                   
+                   # Final states
+                   Lease.STATE_DONE:          [],
+                   Lease.STATE_CANCELLED:     [],
+                   Lease.STATE_FAIL:          [],
+                   Lease.STATE_REJECTED:      [],
+                   }
+    
+    def __init__(self):
+        StateMachine.__init__(initial_state, transitions)
         
 class ARLease(Lease):
     def __init__(self, submit_time, start, duration, diskimage_id, 



More information about the Haizea-commit mailing list