[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