Author: eallen
Date: 2008-10-24 11:37:34 -0400 (Fri, 24 Oct 2008)
New Revision: 2683
Modified:
mgmt/trunk/cumin/python/cumin/model.py
Log:
Dead code removal.
Better detection of errors when getting limits.
Rename of cumin_model to model for master start/stop actions
Modified: mgmt/trunk/cumin/python/cumin/model.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/model.py 2008-10-24 15:35:26 UTC (rev 2682)
+++ mgmt/trunk/cumin/python/cumin/model.py 2008-10-24 15:37:34 UTC (rev 2683)
@@ -591,13 +591,13 @@
def do_invoke(self, object, args, completion):
system_name = object.System
master = Master.select("System = '%s'" % system_name)[0]
- master.Start(self.cumin_model.data, completion, args["subsystem"])
+ master.Start(self.model.data, completion, args["subsystem"])
class Stop(CuminAction):
def do_invoke(self, object, args, completion):
system_name = object.System
master = Master.select("System = '%s'" % system_name)[0]
- master.Stop(self.cumin_model.data, completion, args["subsystem"])
+ master.Stop(self.model.data, completion, args["subsystem"])
class CuminBroker(RemoteClass):
def __init__(self, model):
@@ -2152,6 +2152,25 @@
Value = args[1]
job.SetAttribute(self.model.data, completion, Name, str(Value))
+class GetStartedAction(CuminAction):
+ def do_invoke(self, object):
+ confidence = self.started_confidence(object)
+ recTime = object.statsCurr and object.statsCurr.recTime or object.recTime
+ conf = "<confidence>%d</confidence>" % confidence
+ rect = "<rectime>%s</rectime>" % fmt_datetime(recTime)
+
+ return "%s%s" % (conf, rect)
+
+ def started_confidence(self, object):
+ value = object.statsCurr and object.statsCurr.recTime or object.recTime
+ age = datetime.now() - value
+ # 100% at now
+ # 0% at 10 min
+ confidence = float(600 - age.seconds) / 6.0
+ if confidence < 0:
+ confidence = 0
+ return confidence
+
class CuminScheduler(RemoteClass):
def __init__(self, model):
super(CuminScheduler, self).__init__(model, "scheduler",
@@ -2200,6 +2219,9 @@
action = self.Stop(self, "stop")
action.summary = True
+ action = GetStartedAction(self, "GetStarted")
+ action.navigable = False
+
def init(self):
self.frame = self.model.frame.pool.scheduler
@@ -2218,10 +2240,6 @@
def get_title(self, session):
return "Start"
- # the actual start/stop is done my master
- def do_invoke(self, scheduler, args, completion):
- pass
-
class Stop(CuminAction):
def show(self, session, sched):
frame = self.model.frame.pool.show_scheds_stop(session)
@@ -2231,10 +2249,6 @@
def get_title(self, session):
return "Stop"
- # the actual start/stop is done my master
- def do_invoke(self, scheduler, args, completion):
- pass
-
class CuminSubmitter(RemoteClass):
def __init__(self, model):
super(CuminSubmitter, self).__init__(model, "submitter",
@@ -2287,6 +2301,9 @@
action = self.Stop(self, "stop")
action.summary = True
+ action = GetStartedAction(self, "GetStarted")
+ action.navigable = False
+
def init(self):
self.frame = self.model.frame.pool.collector
@@ -2306,10 +2323,6 @@
def get_title(self, session):
return "Start"
- # the actual start/stop is done my master
- def do_invoke(self, collector, args, completion):
- pass
-
class Stop(CuminAction):
def show(self, session, collector):
frame = self.model.frame.pool.show_colls_stop(session)
@@ -2320,10 +2333,6 @@
def get_title(self, session):
return "Stop"
- # the actual start/stop is done my master
- def do_invoke(self, collector, args, completion):
- pass
-
class CuminNegotiator(RemoteClass):
def __init__(self, model):
super(CuminNegotiator, self).__init__(model, "negotiator",
@@ -2361,10 +2370,6 @@
stat.title = "Resident Set Size"
stat.category = "general"
-# stat = CuminStat(self, "MonitorSelfTime")
-# stat.title = "Time"
-# stat.category = "general"
-
action = self.Start(self, "start")
action.summary = True
@@ -2395,10 +2400,6 @@
def get_title(self, session):
return "Start"
- # the actual start/stop is done my master
- def do_invoke(self, negotiator, args, completion):
- pass
-
class Stop(CuminAction):
def show(self, session, neg):
frame = self.model.frame.pool.show_negs_stop(session)
@@ -2408,15 +2409,19 @@
def get_title(self, session):
return "Stop"
- # the actual start/stop is done my master
- def do_invoke(self, negotiator, args, completion):
- pass
-
class GetLimitCount(CuminAction):
def do_invoke(self, negotiator):
action = self.model.negotiator.GetLimits
limits = action.do_invoke(negotiator)
- return "<count value=\"%i\" />" % len(limits)
+ error = "False"
+ if "timeout" in limits:
+ val = 0
+ error = "True"
+ else:
+ val = len(limits)
+ err = "<error value=\"%s\" />" % error
+ count = "<count value=\"%i\" />" % val
+ return "%s%s" % (count, err)
class GetLimits(CuminAction):
def do_invoke(self, negotiator):
@@ -2437,6 +2442,8 @@
# wait for up to 5 seconds for completion to be called
wait(predicate, timeout=5)
+ if not self.got_data:
+ self.lim["timeout"] = True
return self.lim
class ModelPage(Page):