Author: croberts Date: 2011-06-15 12:18:00 +0000 (Wed, 15 Jun 2011) New Revision: 4830
Modified: trunk/cumin/bin/cumin-web trunk/cumin/etc/cumin.conf trunk/cumin/python/cumin/config.py trunk/cumin/python/cumin/grid/job.py trunk/cumin/python/cumin/grid/job.strings trunk/cumin/python/cumin/main.py Log: Addressing BZ https://bugzilla.redhat.com/show_bug.cgi?id=699890 by adding an "overview" tab to the view of an individual job. By default, it will contain the folowing attributes: JobStatus, Cmd, Args, ExitStatus, JobStartDate, LastRemoteHost, LastJobStatus, Owner. That list of attributes can be overridden in cumin.conf to include any standard or custom attribute.
Modified: trunk/cumin/bin/cumin-web =================================================================== --- trunk/cumin/bin/cumin-web 2011-06-14 19:32:23 UTC (rev 4829) +++ trunk/cumin/bin/cumin-web 2011-06-15 12:18:00 UTC (rev 4830) @@ -92,6 +92,9 @@ cumin.user = values.user cumin.update_interval = values.update_interval cumin.max_qmf_table_sort = values.max_qmf_table_sort + + cumin.fast_view_attributes = [x.strip() for x in values.fast_view_attributes.split(',')] +
# set default values for form inputs cumin.set_form_defaults(values.request_memory,
Modified: trunk/cumin/etc/cumin.conf =================================================================== --- trunk/cumin/etc/cumin.conf 2011-06-14 19:32:23 UTC (rev 4829) +++ trunk/cumin/etc/cumin.conf 2011-06-15 12:18:00 UTC (rev 4830) @@ -58,6 +58,7 @@ # update-interval: 10 # max-qmf-table-sort: 1000 # persona: default +# fast-view-attributes: JobStatus,Cmd,Args,ExitStatus,JobStartDate,LastRemoteHost,LastJobStatus,Owner
[data] # log-file: $CUMIN_HOME/log/data.log
Modified: trunk/cumin/python/cumin/config.py =================================================================== --- trunk/cumin/python/cumin/config.py 2011-06-14 19:32:23 UTC (rev 4829) +++ trunk/cumin/python/cumin/config.py 2011-06-15 12:18:00 UTC (rev 4830) @@ -51,6 +51,9 @@
param = ConfigParameter(web, "persona", str) param.default = "default" + + param = ConfigParameter(web, "fast-view-attributes", str) + param.default = "JobStatus,Cmd,Args,ExitStatus,JobStartDate,LastRemoteHost,LastJobStatus,Owner"
def create_data_section(self, name, strict_section): data = CuminConfigSection(self, name, strict_section)
Modified: trunk/cumin/python/cumin/grid/job.py =================================================================== --- trunk/cumin/python/cumin/grid/job.py 2011-06-14 19:32:23 UTC (rev 4829) +++ trunk/cumin/python/cumin/grid/job.py 2011-06-15 12:18:00 UTC (rev 4830) @@ -28,11 +28,14 @@ cls = app.model.com_redhat_grid.Submission
super(JobFrame, self).__init__(app, name, cls) - + self.view = JobView(app, "view", self.object) self.replace_child(self.view)
# view or edit + self.fast_view = JobAdFastView(app, "fastads") + self.view.add_tab(self.fast_view) + self.ads = JobAdModes(app, "ads") self.view.add_tab(self.ads)
@@ -94,7 +97,17 @@
def render_title(self, session): return "Attributes" + +class JobAdFastView(ModeSet): + def __init__(self, app, name): + super(JobAdFastView, self).__init__(app, name)
+ self.viewer = FastViewJobAdsViewer(app, "fastviewer") + self.add_mode(self.viewer) + + def render_title(self, session): + return "Overview" + class JobView(ObjectView): def add_details_tab(self): pass @@ -480,7 +493,35 @@ idict["path"] = path
return idict + +class FastViewJobAdsSet(JobAdsSet): + def __init__(self, app, name): + super(FastViewJobAdsSet, self).__init__(app, name) + + def do_get_items(self, session): + ad_list = self.items.get(session) + error = self.qmf_error.get(session) + + if not ad_list and not error: + ad_list = list() + id = self.frame.id.get(session) + job_server = self.frame.get_job_server(session, id) + job_id = self.frame.job_id.get(session)
+ action = QmfCall(self.app, {'JobAd': {}}) + results = action.execute(job_server, "GetJobAd", job_id) + error = results.error + self.qmf_error.set(session, error) + ads = results.data['JobAd'] + cls = self.app.model.job_meta_data + ad_list = [self.gen_item(x, ads[x], cls, dtype=self.get_type(ads[x])) \ + for x in ads if not x.startswith("!!") and x in self.app.fast_view_attributes] + + self.items.set(session, ad_list) + + return ad_list, error + + class JobPropertyRenderer(TemplateRenderer): def render_title(self, session, item): title = item["name"] @@ -517,6 +558,9 @@ if "property" in item: property = item["property"] return property.description + + def render_id(self, session, item): + return item["property"].name
class JobAdsGroups(Widget): def __init__(self, app, name): @@ -606,7 +650,48 @@ group_items.append(item)
return group_items, error + +class FastViewJobAdsViewer(FastViewJobAdsSet): + def __init__(self, app, name): + super(FastViewJobAdsViewer, self).__init__(app, name) + + self.item_renderer = JobPropertyRenderer(self, "property_html")
+ self.wait = Wait(app, "wait") + self.add_child(self.wait) + + self.defer_enabled = True + self.update_enabled = True + + def render_title(self, session): + return "Attributes" + + def get_group_items(self, session, group): + group_items = list() + + items, error = self.do_get_items(session) + for item in items: + if "property" in item: + property = item["property"] + item_group = property.group + else: + item_group = "Other" + if item_group == group: + group_items.append(item) + + return group_items, error + + def render_all_ordered_properties(self, session): + items, error = self.do_get_items(session) + writer = Writer() + viewable_items = self.app.fast_view_attributes + for viewable_item in viewable_items: + for item in items: + if item["name"] == viewable_item: + self.item_renderer.render(writer, session, item) + break + return writer.to_string() + class JobAdsEditButton(Widget): def render_edit_ads_url(self, session): branch = session.branch()
Modified: trunk/cumin/python/cumin/grid/job.strings =================================================================== --- trunk/cumin/python/cumin/grid/job.strings 2011-06-14 19:32:23 UTC (rev 4829) +++ trunk/cumin/python/cumin/grid/job.strings 2011-06-15 12:18:00 UTC (rev 4830) @@ -181,3 +181,37 @@ </ul> </div> </div> + +[FastViewJobAdsViewer.html] +<div id="{id}"> +<table style='width:100%' class="CuminDetails"> + <tbody> + <tr> + <td> + <table class="PropertySet FastViewPropertySet"> + <thead> + <tr> + <th style="width: 33%;">Name</th> + <th style="width: 33%;">Value</th> + <th style="width: 33%;"> </th> + </tr> + </thead> + <tbody id="properties"> + {all_ordered_properties} + </tbody> + </table> + </td> + </tr> + </tbody> +</table> +</div> + +[FastViewJobAdsViewer.deferred_html] +<div id="{id}"> + {wait} +</div> + +[FastViewJobAdsViewer.property_html] +<tr id='{id}'> + <th style="width:33%;">{title}</th><td style="width:33%;">{value}</td><td style="width:33%;">{inline_help}</td> +</tr> \ No newline at end of file
Modified: trunk/cumin/python/cumin/main.py =================================================================== --- trunk/cumin/python/cumin/main.py 2011-06-14 19:32:23 UTC (rev 4829) +++ trunk/cumin/python/cumin/main.py 2011-06-15 12:18:00 UTC (rev 4830) @@ -56,6 +56,8 @@ self.operator_email = None self.update_interval = 10 self.max_qmf_table_sort = 1000 + + self.fast_view_attributes = list()
self.form_defaults = self.CuminFormDefaults()
cumin-developers@lists.fedorahosted.org