r5451 - trunk/cumin/python/cumin/grid
croberts at fedoraproject.org
croberts at fedoraproject.org
Wed Aug 29 17:59:35 UTC 2012
Author: croberts
Date: 2012-08-29 17:59:33 +0000 (Wed, 29 Aug 2012)
New Revision: 5451
Modified:
trunk/cumin/python/cumin/grid/negotiator.py
trunk/cumin/python/cumin/grid/scheduler.py
trunk/cumin/python/cumin/grid/slotvis.py
trunk/cumin/python/cumin/grid/submission.py
Log:
For BZ 705358 (making search column selectable), this adds the requested functionality to the submission, slot, scheduler and negotiator tables. (Limits, Quotas and Configuration tabs are NOT included since they are built on a different set of widgets due to their non-database storage).
Modified: trunk/cumin/python/cumin/grid/negotiator.py
===================================================================
--- trunk/cumin/python/cumin/grid/negotiator.py 2012-08-23 17:07:18 UTC (rev 5450)
+++ trunk/cumin/python/cumin/grid/negotiator.py 2012-08-29 17:59:33 UTC (rev 5451)
@@ -3,11 +3,11 @@
from cumin.objectframe import ObjectFrame, ObjectFrameTask,\
ObjectFrameTaskForm
from cumin.objectselector import ObjectSelector, ObjectLinkColumn,\
- MonitorSelfStatColumn, ObjectTable, MonitorSelfAgeColumn
+ MonitorSelfStatColumn, ObjectTable, MonitorSelfAgeColumn, SelectableSearchObjectTable
from wooly import Widget, Attribute, Parameter
from parsley.stringex import rpartition
from cumin.parameters import RosemaryObjectParameter
-from wooly.parameters import ListParameter
+from wooly.parameters import ListParameter, StringParameter
from wooly.template import WidgetTemplate
from cumin.stat import StatFlashChart
from sage.util import call_async
@@ -30,7 +30,6 @@
frame = "main.grid.negotiator"
col = ObjectLinkColumn(app, "name", cls.Name, cls._id, frame)
self.add_column(col)
- self.add_search_filter(col)
self.add_attribute_column(cls.Machine)
self.add_attribute_column(cls.System)
@@ -42,6 +41,12 @@
stat = MonitorSelfStatColumn(app, cls.MonitorSelfImageSize.name, cls.MonitorSelfImageSize)
self.add_column(stat)
+ self.field_param = StringParameter(app, "field_param")
+ self.add_parameter(self.field_param)
+
+ self.select_input = self.NegotiatorFieldOptions(app, self.field_param)
+ self.add_selectable_search_filter(self.select_input)
+
#self.start = DaemonSelectionStart(app, self, "NEGOTIATOR")
#self.stop = DaemonSelectionStop(app, self, "NEGOTIATOR")
@@ -49,7 +54,16 @@
def create_table(self, app, name, cls):
# avoid the checkboxes
- return ObjectTable(app, name, cls)
+ return SelectableSearchObjectTable(app, name, cls)
+
+ class NegotiatorFieldOptions(SelectableSearchObjectTable.SearchFieldOptions):
+ def __init__(self, app, param):
+ super(NegotiatorSelector.NegotiatorFieldOptions, self).__init__(app, param)
+ self.cls = app.model.com_redhat_grid.Negotiator
+
+ def do_get_items(self, session):
+ return [self.cls.Name, self.cls.Machine, self.cls.MonitorSelfAge, \
+ self.cls.MonitorSelfCPUUsage, self.cls.MonitorSelfImageSize, self.cls.System]
class GroupHelper(Widget):
def __init__(self, app, name, negotiator):
Modified: trunk/cumin/python/cumin/grid/scheduler.py
===================================================================
--- trunk/cumin/python/cumin/grid/scheduler.py 2012-08-23 17:07:18 UTC (rev 5450)
+++ trunk/cumin/python/cumin/grid/scheduler.py 2012-08-29 17:59:33 UTC (rev 5451)
@@ -9,7 +9,7 @@
from submitter import SubmitterFrame, SubmitterSelector
from submission import PoolSubmissionSelector
from cumin.objectselector import ObjectSelectorTable, ObjectSelector,\
- ObjectLinkColumn, MonitorSelfStatColumn, ObjectTable, MonitorSelfAgeColumn
+ ObjectLinkColumn, MonitorSelfStatColumn, ObjectTable, MonitorSelfAgeColumn, SelectableSearchObjectTable
from cumin.grid.submission import SubmissionFrame
strings = StringCatalog(__file__)
@@ -79,12 +79,17 @@
frame = "main.grid.scheduler"
col = ObjectLinkColumn(app, "name", cls.Name, cls._id, frame)
self.add_column(col)
- self.add_search_filter(col)
self.add_attribute_column(cls.NumUsers)
self.add_attribute_column(cls.TotalIdleJobs)
self.add_attribute_column(cls.TotalRunningJobs)
self.add_attribute_column(cls.TotalHeldJobs)
+
+ self.field_param = StringParameter(app, "field_param")
+ self.add_parameter(self.field_param)
+
+ self.select_input = self.SchedulerFieldOptions(app, self.field_param)
+ self.add_selectable_search_filter(self.select_input)
stat = MonitorSelfAgeColumn(app, cls.MonitorSelfAge.name, cls.MonitorSelfAge)
self.add_column(stat)
@@ -100,7 +105,17 @@
def create_table(self, app, name, cls):
# avoid the checkboxes
- return ObjectTable(app, name, cls)
+ return SelectableSearchObjectTable(app, name, cls)
+
+ class SchedulerFieldOptions(SelectableSearchObjectTable.SearchFieldOptions):
+ def __init__(self, app, param):
+ super(SchedulerSelector.SchedulerFieldOptions, self).__init__(app, param)
+ self.cls = app.model.com_redhat_grid.Scheduler
+
+ def do_get_items(self, session):
+ return [self.cls.Name, self.cls.NumUsers, self.cls.TotalIdleJobs, \
+ self.cls.TotalRunningJobs, self.cls.TotalHeldJobs, self.cls.MonitorSelfAge, \
+ self.cls.MonitorSelfCPUUsage, self.cls.MonitorSelfImageSize]
class SchedulerOverview(RadioModeSet):
def __init__(self, app, name, scheduler):
Modified: trunk/cumin/python/cumin/grid/slotvis.py
===================================================================
--- trunk/cumin/python/cumin/grid/slotvis.py 2012-08-23 17:07:18 UTC (rev 5450)
+++ trunk/cumin/python/cumin/grid/slotvis.py 2012-08-29 17:59:33 UTC (rev 5451)
@@ -4,12 +4,13 @@
from wooly import Session, Widget
from wooly.util import StringCatalog
from wooly.widgets import RadioModeSet
+from wooly.parameters import StringParameter
from cumin.parameters import RosemaryObjectParameter
from cumin.widgets import StateSwitch
from cumin.stat import FlashFullPage
from cumin.objectselector import ObjectSelector, ObjectLinkColumn,\
- ObjectTableColumn, ObjectTable
+ ObjectTableColumn, ObjectTable, SelectableSearchObjectTable
strings = StringCatalog(__file__)
log = logging.getLogger("cumin.slotvis")
@@ -32,7 +33,6 @@
frame = "main.grid.slot"
col = ObjectLinkColumn(app, "name", cls.Name, cls._id, frame)
self.add_column(col)
- self.add_search_filter(col)
self.add_attribute_column(cls.Activity)
self.add_attribute_column(cls.State)
@@ -40,13 +40,27 @@
col = ObjectTableColumn(app, cls.LoadAvg.name, cls.LoadAvg)
self.add_column(col)
self.table.set_default_sort_column(col)
+
+ self.field_param = StringParameter(app, "field_param")
+ self.add_parameter(self.field_param)
+
+ self.select_input = self.SlotFieldOptions(app, self.field_param)
+ self.add_selectable_search_filter(self.select_input)
self.enable_csv_export()
def create_table(self, app, name, cls):
# avoid the checkboxes
- return ObjectTable(app, name, cls)
+ return SelectableSearchObjectTable(app, name, cls)
def render_title(self, session):
return "Slot table"
+
+ class SlotFieldOptions(SelectableSearchObjectTable.SearchFieldOptions):
+ def __init__(self, app, param):
+ super(SlotSelector.SlotFieldOptions, self).__init__(app, param)
+ self.cls = app.model.com_redhat_grid.Slot
+
+ def do_get_items(self, session):
+ return [self.cls.Name, self.cls.Activity, self.cls.State, self.cls.LoadAvg]
Modified: trunk/cumin/python/cumin/grid/submission.py
===================================================================
--- trunk/cumin/python/cumin/grid/submission.py 2012-08-23 17:07:18 UTC (rev 5450)
+++ trunk/cumin/python/cumin/grid/submission.py 2012-08-29 17:59:33 UTC (rev 5451)
@@ -8,19 +8,20 @@
from cumin.objectframe import ObjectFrame, ObjectView, ObjectViewSummary, ObjectViewContext
from cumin.sqladapter import ObjectSqlAdapter
from cumin.objectselector import ObjectSelector, ObjectLinkColumn,\
- ObjectTableColumn, ObjectTable
+ ObjectTableColumn, ObjectTable, SelectableSearchObjectTable
from cumin.task import TaskLink, Task, ObjectTaskForm
from cumin.parameters import ObjectAttribute
from cumin.util import xml_escape
-from rosemary.sqlfilter import SqlFilter
+from rosemary.sqlfilter import SqlFilter, SqlLikeFilter, SqlValueFilter, SqlDateValueFilter
from rosemary.sqlquery import SqlInnerJoin
-from wooly import Attribute, Parameter
+from wooly.util import StringCatalog
from wooly.forms import StringField, ScalarField, FormError, OptionInputSet,\
MultilineStringField, FormField, IntegerField, LabelFormField, NoXMLStringField
-from wooly.parameters import IntegerParameter
+from wooly.parameters import IntegerParameter, StringParameter
+
log = logging.getLogger("cumin.grid.submission")
class SubmissionFrame(ObjectFrame):
@@ -118,11 +119,13 @@
self.add_attribute_column(cls.Completed)
self.add_attribute_column(cls.Held)
self.add_attribute_column(cls.Suspended)
-
- def create_table(self, app, name, cls):
- # avoid the checkboxes
- return ObjectTable(app, name, cls)
-
+
+ self.field_param = StringParameter(app, "field_param")
+ self.add_parameter(self.field_param)
+
+ self.select_input = self.SubmissionFieldOptions(app, self.field_param)
+ self.add_selectable_search_filter(self.select_input)
+
class QDateColumn(ObjectTableColumn):
def _get_raw_content(self, session, data):
d = super(SubmissionSelector.QDateColumn, self).\
@@ -145,13 +148,22 @@
def render_cell_title(self, session, data):
return self._get_raw_content(session, data)
+ class SubmissionFieldOptions(SelectableSearchObjectTable.SearchFieldOptions):
+ def __init__(self, app, param):
+ super(SubmissionSelector.SubmissionFieldOptions, self).__init__(app, param)
+ self.cls = app.model.com_redhat_grid.Submission
+
+ def do_get_items(self, session):
+ return [self.cls.Name, self.cls.Owner, self.cls.QDate, self.cls.Idle, \
+ self.cls.Running, self.cls.Completed, self.cls.Held, self.cls.Suspended]
+
class PoolSubmissionSelector(SubmissionSelector):
def __init__(self, app, name, frame="main.grid.submission"):
super(PoolSubmissionSelector, self).__init__(app, name)
col = self.PoolSubmissionObjectLinkColumn(app, "name", self.cls.Name, self.cls._id, frame)
self.insert_column(0, col)
- self.add_search_filter(col)
+ #self.add_search_filter(col)
attr = self.cls.Owner
col = ObjectTableColumn(app, attr.name, attr)
@@ -169,13 +181,17 @@
link = TaskLink(app, "vm_job_submit", app.grid.vm_job_submit)
self.links.add_child(link)
-
+
+
+ def create_table(self, app, name, cls):
+ return SelectableSearchObjectTable(app, name, cls)
+
class PoolSubmissionObjectLinkColumn(ObjectLinkColumn):
def render_cell_content(self, session, record):
retval = len(record) > 0 and record[self.field.index] or ""
if(len(record[self.field.index]) > 50):
retval = record[self.field.index][:50] + "..." #indicate that we truncated the name
- return retval
+ return retval
class PoolSubmissionJoinSelector(PoolSubmissionSelector):
def __init__(self, app, name):
@@ -184,7 +200,7 @@
scheduler = app.model.com_redhat_grid.Scheduler
self.SchedulerJoin(app, self.table.adapter.query, self.cls.sql_table,
self.cls.jobserverRef.sql_column, "jid")
-
+
#frame = "main.grid.scheduler"
#col = self.SchedulerColumn(app, "Scheduler", scheduler.Name, scheduler._id, frame)
#self.insert_column(2, col)
More information about the cumin-developers
mailing list