Author: eallen
Date: 2008-09-11 12:55:21 -0400 (Thu, 11 Sep 2008)
New Revision: 2446
Modified:
mgmt/trunk/cumin/python/cumin/model.py
Log:
Added JobGroup.
Changed Job Hold/Release/Remove methods to use bulk variant of the forms because it has
the "reason" input.
Modified: mgmt/trunk/cumin/python/cumin/model.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/model.py 2008-09-11 16:53:17 UTC (rev 2445)
+++ mgmt/trunk/cumin/python/cumin/model.py 2008-09-11 16:55:21 UTC (rev 2446)
@@ -44,6 +44,7 @@
CuminScheduler(self)
CuminSubmitter(self)
CuminJob(self)
+ CuminJobGroup(self)
CuminPool(self)
@@ -1471,6 +1472,62 @@
def show_object(self, session, pool):
return self.cumin_model.show_main(session).show_pool(session, pool)
+class CuminJobGroup(CuminClass):
+ def __init__(self, model):
+ super(CuminJobGroup, self).__init__ \
+ (model, "job_group", JobGroup)
+
+ action = self.Hold(self, "hold")
+ action.title = "Hold"
+ action.summary = True
+
+ action = self.Release(self, "release")
+ action.title = "Release"
+ action.summary = True
+
+ action = self.Remove(self, "remove")
+ action.title = "Remove"
+ action.summary = True
+
+ def show_object(self, session, group):
+ frame = self.cumin_model.show_main(session)
+ return frame.children_by_name["pool"]
+
+ def get_object_title(self, session, group):
+ title = self.get_title(session)
+ name = group.get_id()
+ return "%s '%s'" % (title, fmt_shorten(name))
+
+ def get_title(self, session):
+ return "Job Group"
+
+ def get_icon_href(self, session):
+ return "resource?name=group-36.png"
+
+ class Hold(CuminAction):
+ def show(self, session, group):
+ frame = self.cumin_class.show_object(session, group)
+ frame = frame.show_job_group_hold(session)
+ ids = [group.id]
+ frame.ids.set(session, ids)
+ return frame
+
+ class Release(CuminAction):
+ def show(self, session, group):
+ frame = self.cumin_class.show_object(session, group)
+ frame = frame.show_job_group_release(session)
+ ids = [group.id]
+ frame.ids.set(session, ids)
+ return frame
+
+ class Remove(CuminAction):
+ def show(self, session, group):
+ frame = self.cumin_class.show_object(session, group)
+ frame = frame.show_job_group_remove(session)
+ ids = [group.id]
+ frame.ids.set(session, ids)
+ return frame
+
class CuminJob(RemoteClass):
def __init__(self, model):
super(CuminJob, self).__init__(model, "job", Job, JobStats)
@@ -1636,17 +1693,12 @@
return str(job.sourceObjectId)
def show_object(self, session, job):
-
frame = self.get_pool_frame(session)
return frame.show_job(session, job)
def get_pool_frame(self, session):
-#TODO: # XXX temporary solution
- for pool in Pool.selectBy(name="main"):
- break
-
frame = self.cumin_model.show_main(session)
- return frame.show_pool(session, pool)
+ return frame.children_by_name["pool"]
class JobStatusProperty(AdProperty):
def render_status(self, session, status):
@@ -1676,36 +1728,45 @@
class Hold(CuminAction):
def show(self, session, job):
- frame = self.cumin_class.show_object(session, job)
- return frame.show_job_hold(session)
+ frame = self.cumin_class.get_pool_frame(session)
+ frame = frame.show_jobs_hold(session)
+ ids = [job.id]
+ frame.ids.set(session, ids)
+ return frame
def get_title(self, session):
return "Hold"
- def do_invoke(self, job, args, completion):
- job.hold(self.cumin_model.data, completion)
+ def do_invoke(self, job, reason, completion):
+ job.Hold(self.cumin_model.data, completion, reason)
class Release(CuminAction):
def show(self, session, job):
- frame = self.cumin_class.show_object(session, job)
- return frame.show_job_release(session)
+ frame = self.cumin_class.get_pool_frame(session)
+ frame = frame.show_jobs_release(session)
+ ids = [job.id]
+ frame.ids.set(session, ids)
+ return frame
def get_title(self, session):
return "Release"
- def do_invoke(self, job, args, completion):
- job.release(self.cumin_model.data, completion)
+ def do_invoke(self, job, reason, completion):
+ job.Release(self.cumin_model.data, completion, reason)
class Remove(CuminAction):
def show(self, session, job):
- frame = self.cumin_class.show_object(session, job)
- return frame.show_job_remove(session)
+ frame = self.cumin_class.get_pool_frame(session)
+ frame = frame.show_jobs_remove(session)
+ ids = [job.id]
+ frame.ids.set(session, ids)
+ return frame
def get_title(self, session):
return "Remove"
- def do_invoke(self, job, args, completion):
- job.remove(self.cumin_model.data, completion)
+ def do_invoke(self, job, reason, completion):
+ job.Remove(self.cumin_model.data, completion, reason)
class SaveAd(CuminAction):
def show(self, session, job):