[rhmessaging-commits] rhmessaging commits: r2796 - mgmt/trunk/cumin/python/cumin.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Thu Nov 13 10:15:49 EST 2008
Author: eallen
Date: 2008-11-13 10:15:49 -0500 (Thu, 13 Nov 2008)
New Revision: 2796
Modified:
mgmt/trunk/cumin/python/cumin/pool.py
Log:
Use objectlistener to update pool stats.
Deferred pool stats calculations until after page loads.
Removed Job visualization.
Added Pool Slot visualization.
Modified: mgmt/trunk/cumin/python/cumin/pool.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/pool.py 2008-11-13 15:07:41 UTC (rev 2795)
+++ mgmt/trunk/cumin/python/cumin/pool.py 2008-11-13 15:15:49 UTC (rev 2796)
@@ -17,6 +17,7 @@
from collector import CollectorSet, CollectorFrame, CollectorStart, CollectorStop
from negotiator import NegotiatorSet, NegotiatorFrame, NegStart, NegStop
from limits import LimitsSet, LimitsFrame
+from slot import SlotSet
strings = StringCatalog(__file__)
log = logging.getLogger("cumin.pool")
@@ -190,6 +191,10 @@
class LimitsTab(LimitsSet):
pass
+ def render_script(self, session, pool):
+ data = "model.xml?class=pool;id=%s" % pool.id
+ return "wooly.setIntervalUpdate('%s', updatePool, 3000)" % data
+
class PoolSchedulerSet(SchedulerSet):
def get_args(self, session):
return self.frame.get_args(session)
@@ -245,7 +250,21 @@
def render_sql_where(self, session, pool):
return "where n.pool = %(pool)s"
-
+
+class PoolSlotSet(SlotSet):
+ def get_args(self, session):
+ return self.frame.get_args(session)
+
+ def render_sql_where(self, session, pool):
+ return "where s.pool = %(pool)s"
+
+ def get_sql_values(self, session, pool):
+ return {"pool": pool.id}
+
+ def render_title(self, session, pool):
+ count = self.get_item_count(session, pool)
+ return "Slots %s" % fmt_count(count)
+
class PoolStats(Widget):
def __init__(self, app, name):
super(PoolStats, self).__init__(app, name)
@@ -253,9 +272,12 @@
stats = PoolStatSet(app, "general", "general")
self.add_child(stats)
- self.grid = self.JobUtilizationGrid(app, "job_grid")
- self.add_child(self.grid)
+ #self.grid = self.JobUtilizationGrid(app, "job_grid")
+ #self.add_child(self.grid)
+ self.slot_grid = self.SlotVisualization(app, "slot_grid")
+ self.add_child(self.slot_grid)
+
def render_title(self, session):
return "Statistics"
@@ -291,68 +313,45 @@
def get_sticky_info(self, session):
return [("name", "ID"), ("submitter", "Submitter"), ("status", "Status")]
-class PoolStatSet(StatSet):
- def __init__(self, app, name, category):
- super(PoolStatSet, self).__init__(app, name, category)
+ class SlotVisualization(StatUtilizationGrid):
+ def get_cells(self, session):
+ pool = self.frame.get_args(session)[0]
+ action = self.app.model.pool.slots
+ return action.get_slots(session, pool)
- self.jobs = Attribute(app, "jobs")
- self.add_attribute(self.jobs)
-
- def process(self, session):
- value = Job.select().count()
- self.jobs.set(session, value)
- super(PoolStatSet, self).process(session)
-
- def render_rate_text(self, session, args):
- return "Percentage"
+ def render_title(self, session):
+ return ""
- def render_item_name(self, session, args):
- stat = args[0]
- return stat.name
+ def get_colors(self, session):
+ action = self.app.model.pool.slots
+ return action.get_colors()
+
+ def get_color(self, session, job):
+ action = self.app.model.pool.slots
+ return action.get_color(job)
+
+ def get_contents(self, session, slot):
+ return ""
- def render_item_value(self, session, args):
- stat = args[0]
- if stat.name == "Jobs":
- return self.jobs.get(session)
- else:
- state = stat.name
- value = self.get_value(session, state)
- return value
+ def get_href(self, session, slot):
+ branch = session.branch()
+ try:
+ job = Job.select("custom_id = '%s'" % slot.JobId)[0]
+ except Exception, e:
+ return "#"
+ return self.page.main.pool.job.get_href(branch, job)
- def get_value(self, session, state):
- pool = self.frame.get_object(session)
- elems = list()
- istate = JobStatusInfo.get_status_int(state)
- elems.append("job_status = %i" % istate)
- elems.append("s.pool = '%s'" % pool.id)
+ def get_url(self, session):
+ pool = self.parent.frame.get_args(session)[0]
+ return "call.xml?class=pool;method=slots"
+
+ def get_sticky_info(self, session):
+ return [("name", "Name"), ("machine", "Machine"), ("job", "Job")]
- # manually removed jobs will have a state of Idle
- # with a deletion_time
- if state == "Idle":
- elems.append("job.deletion_time is null")
- where = " and ".join(elems)
+class PoolStatSet(StatSet):
+ def render_rate_text(self, session, args):
+ return "Percentage"
- # manually removed jobs will have a state of Idle
- # with a deletion_time
- if state == "Removed":
- removed = "(job.deletion_time is not null and job_status = %i)" % JobStatusInfo.get_status_int("Idle")
- where = " or ".join((where, removed))
-
- jn = "inner join scheduler as s on s.id = scheduler_id"
- return Job.select(where, join=jn).count()
-
- def render_item_rate(self, session, stat):
- jobs = self.jobs.get(session)
- state = stat[0].name
- if state == "Jobs":
- value = jobs
- else:
- value = self.get_value(session, state)
- if jobs:
- percent = (value*1.0) / (jobs*1.0) * 100.0
- return jobs and "%2.2f" % percent or "-"
-
-
class PoolStatus(CuminStatus):
def render_status(self, session, pool):
return "Active"
More information about the rhmessaging-commits
mailing list