Author: eallen
Date: 2011-01-27 15:09:55 +0000 (Thu, 27 Jan 2011)
New Revision: 4491
Modified:
trunk/cumin/python/cumin/grid/scheduler.py
Log:
Fix for bz 673141. Moved the get_data_values method from the ObjectSelector down into the
table so it will be called.
Modified: trunk/cumin/python/cumin/grid/scheduler.py
===================================================================
--- trunk/cumin/python/cumin/grid/scheduler.py 2011-01-26 21:55:25 UTC (rev 4490)
+++ trunk/cumin/python/cumin/grid/scheduler.py 2011-01-27 15:09:55 UTC (rev 4491)
@@ -33,14 +33,9 @@
overview = SchedulerOverview(app, "overview", self.object)
self.view.add_tab(overview)
- submissions = SchedulerPoolSubmissionSelector(app, "submissions",
pool)
+ submissions = SchedulerPoolSubmissionSelector(app, "submissions",
self.object, pool)
self.view.add_tab(submissions)
- cls = submissions.cls
- # We are referencing the jobserverRef, but passing in the scheduler id.
- # This gets fixed up in SchedulerPoolSubmissionSelectorget_data_value
- submissions.add_reference_filter(self.object, cls.jobserverRef)
-
submitters = SubmitterSelector(app, "submitters", self.object)
self.view.add_tab(submitters)
@@ -48,25 +43,35 @@
#self.stop = DaemonStop(app, self, "SCHEDD")
class SchedulerPoolSubmissionSelector(PoolSubmissionSelector):
- def get_data_values(self, session):
- values = super(SchedulerPoolSubmissionSelector, self).get_data_values(session)
+ def __init__(self, app, name, scheduler, pool):
+ super(SchedulerPoolSubmissionSelector, self).__init__(app, name, pool)
- jobserver_key = self.cls.jobserverRef.name
+ self.add_reference_filter(scheduler, self.cls.jobserverRef)
+ #self.enable_csv_export(pool, scheduler)
- # could also use self.frame.id.get(session)
- scheduler_id = values[jobserver_key]
+ def create_table(self, app, name, cls):
+ return self.JoinTable(app, name, cls)
- #we need to find the _id of the jobServer whose _schedulerRef_id matches our
scheduler
- cls = self.app.model.com_redhat_grid.JobServer
- job_server = cls.get_object(session.cursor, _schedulerRef_id=scheduler_id)
+ class JoinTable(ObjectSelectorTable):
+ def get_data_values(self, session):
+ values = super(SchedulerPoolSubmissionSelector.JoinTable,
self).get_data_values(session)
- # Awkward: if there is no jobserver for this scheduler, don't select any
records.
- # An alternative is to create our own adapter and override the get_data method
- jobserver_id = job_server and job_server._id or -1
+ jobserver_key = self.cls.jobserverRef.name
- values[jobserver_key] = jobserver_id
- return values
+ # could also use self.frame.id.get(session)
+ scheduler_id = values[jobserver_key]
+ #we need to find the _id of the jobServer whose _schedulerRef_id matches our
scheduler
+ cls = self.app.model.com_redhat_grid.JobServer
+ job_server = cls.get_object(session.cursor, _schedulerRef_id=scheduler_id)
+
+ # Awkward: if there is no jobserver for this scheduler, don't select any
records.
+ # An alternative is to create our own adapter and override the get_data
method
+ jobserver_id = job_server and job_server._id or -1
+
+ values[jobserver_key] = jobserver_id
+ return values
+
class SchedulerSelector(ObjectSelector):
def __init__(self, app, name, pool):
cls = app.model.com_redhat_grid.Scheduler
@@ -100,6 +105,8 @@
#self.start = DaemonSelectionStart(app, self, "SCHEDD")
#self.stop = DaemonSelectionStop(app, self, "SCHEDD")
+ #self.enable_csv_export(pool)
+
class SchedulerGeneralStatSet(StatSet):
def __init__(self, app, name, object):
super(SchedulerGeneralStatSet, self).__init__(app, name, object)