rhmessaging commits: r2455 - mgmt/trunk/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2008-09-11 17:48:06 -0400 (Thu, 11 Sep 2008)
New Revision: 2455
Modified:
mgmt/trunk/cumin/python/cumin/page.strings
Log:
Added styles for disabled buttons
Modified: mgmt/trunk/cumin/python/cumin/page.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/page.strings 2008-09-11 21:47:27 UTC (rev 2454)
+++ mgmt/trunk/cumin/python/cumin/page.strings 2008-09-11 21:48:06 UTC (rev 2455)
@@ -121,6 +121,14 @@
background-color: white;
}
+button.disabled {
+ color: #666;
+ border: 1px solid #EAEAEA;
+}
+button.disabled:hover {
+ background-color: #f7f7f7;
+}
+
ul.mobjects {
list-style: none;
margin: 0;
17 years, 7 months
rhmessaging commits: r2454 - mgmt/trunk/cumin/python/wooly.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2008-09-11 17:47:27 -0400 (Thu, 11 Sep 2008)
New Revision: 2454
Modified:
mgmt/trunk/cumin/python/wooly/__init__.py
Log:
Added pre_render so hidden columns can be shown
Modified: mgmt/trunk/cumin/python/wooly/__init__.py
===================================================================
--- mgmt/trunk/cumin/python/wooly/__init__.py 2008-09-11 21:20:10 UTC (rev 2453)
+++ mgmt/trunk/cumin/python/wooly/__init__.py 2008-09-11 21:47:27 UTC (rev 2454)
@@ -226,7 +226,11 @@
return string
+ def pre_render(self, session, *args):
+ pass
+
def do_render(self, session, *args):
+ self.pre_render(session, *args)
writer = Writer()
self.__main_tmpl.render(writer, session, *args)
return writer.to_string()
17 years, 7 months
rhmessaging commits: r2453 - mgmt/trunk/mint/python/mint.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-09-11 17:20:10 -0400 (Thu, 11 Sep 2008)
New Revision: 2453
Modified:
mgmt/trunk/mint/python/mint/update.py
Log:
We're not using this atm
Modified: mgmt/trunk/mint/python/mint/update.py
===================================================================
--- mgmt/trunk/mint/python/mint/update.py 2008-09-11 20:12:38 UTC (rev 2452)
+++ mgmt/trunk/mint/python/mint/update.py 2008-09-11 21:20:10 UTC (rev 2453)
@@ -28,8 +28,8 @@
def run(self):
while True:
- size = self.updates.qsize()
-
+ #size = self.updates.qsize()
+ #
#if size > 1:
# log.debug("Queue depth is %i", self.updates.qsize())
17 years, 7 months
rhmessaging commits: r2452 - mgmt/trunk/mint/python/mint.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-09-11 16:12:38 -0400 (Thu, 11 Sep 2008)
New Revision: 2452
Modified:
mgmt/trunk/mint/python/mint/update.py
Log:
Disable some logging that usually isn't very useful
Modified: mgmt/trunk/mint/python/mint/update.py
===================================================================
--- mgmt/trunk/mint/python/mint/update.py 2008-09-11 20:11:25 UTC (rev 2451)
+++ mgmt/trunk/mint/python/mint/update.py 2008-09-11 20:12:38 UTC (rev 2452)
@@ -30,8 +30,8 @@
while True:
size = self.updates.qsize()
- if size > 1:
- log.debug("Queue depth is %i", self.updates.qsize())
+ #if size > 1:
+ # log.debug("Queue depth is %i", self.updates.qsize())
try:
update = self.updates.get(True, 1)
17 years, 7 months
rhmessaging commits: r2451 - mgmt/trunk/mint/python/mint.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-09-11 16:11:25 -0400 (Thu, 11 Sep 2008)
New Revision: 2451
Modified:
mgmt/trunk/mint/python/mint/update.py
Log:
Use the reserved word maps to translate attributes on input
Modified: mgmt/trunk/mint/python/mint/update.py
===================================================================
--- mgmt/trunk/mint/python/mint/update.py 2008-09-11 19:57:54 UTC (rev 2450)
+++ mgmt/trunk/mint/python/mint/update.py 2008-09-11 20:11:25 UTC (rev 2451)
@@ -5,6 +5,7 @@
from datetime import datetime
from qpid.management import managementClient
from struct import unpack
+from schema import schemaReservedWordsMap
import mint
@@ -81,6 +82,12 @@
del attrs["arguments"]
for name in attrs.keys():
+ rename = schemaReservedWordsMap.get(name)
+
+ if rename:
+ attrs[rename] = attrs.pop(name)
+ name = rename
+
if len(name) > 3 and name.endswith("Ref"):
# Navigate to referenced objects
17 years, 7 months
rhmessaging commits: r2450 - mgmt/trunk/mint/python/mint.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-09-11 15:57:54 -0400 (Thu, 11 Sep 2008)
New Revision: 2450
Modified:
mgmt/trunk/mint/python/mint/schema.py
Log:
Regenerate the schema with the new reserved word map
Modified: mgmt/trunk/mint/python/mint/schema.py
===================================================================
--- mgmt/trunk/mint/python/mint/schema.py 2008-09-11 19:24:35 UTC (rev 2449)
+++ mgmt/trunk/mint/python/mint/schema.py 2008-09-11 19:57:54 UTC (rev 2450)
@@ -940,6 +940,10 @@
classToSchemaNameMap = dict()
schemaNameToClassMap = dict()
+schemaReservedWordsMap = {"in": "inRsv", "In": "InRsv",
+ "connection": "clientConnection", "Connection": "ClientConnection",
+ "other": "otherRsv"}
+
classToSchemaNameMap['System'] = 'System'
schemaNameToClassMap['System'] = System
17 years, 7 months
rhmessaging commits: r2449 - mgmt/trunk/mint/python/mint.
by rhmessaging-commits@lists.jboss.org
Author: nunofsantos
Date: 2008-09-11 15:24:35 -0400 (Thu, 11 Sep 2008)
New Revision: 2449
Modified:
mgmt/trunk/mint/python/mint/schemaparser.py
Log:
output reserved words replacement map to schema file
Modified: mgmt/trunk/mint/python/mint/schemaparser.py
===================================================================
--- mgmt/trunk/mint/python/mint/schemaparser.py 2008-09-11 19:16:12 UTC (rev 2448)
+++ mgmt/trunk/mint/python/mint/schemaparser.py 2008-09-11 19:24:35 UTC (rev 2449)
@@ -181,6 +181,9 @@
self.pythonOutput += "from qpid.management import objectId\n"
self.finalPythonOutput += "\nclassToSchemaNameMap = dict()\n"
self.finalPythonOutput += "schemaNameToClassMap = dict()\n"
+ self.finalPythonOutput += 'schemaReservedWordsMap = {"in": "inRsv", "In": "InRsv", \n'
+ self.finalPythonOutput += ' "connection": "clientConnection", "Connection": "ClientConnection", \n'
+ self.finalPythonOutput += ' "other": "otherRsv"}\n\n'
outputFile = open(self.pythonFilePath, "w")
for xmlFile in self.xmlFilePaths:
schema = mllib.xml_parse(xmlFile)
17 years, 7 months
rhmessaging commits: r2448 - mgmt/trunk/mint/python/mint.
by rhmessaging-commits@lists.jboss.org
Author: justi9
Date: 2008-09-11 15:16:12 -0400 (Thu, 11 Sep 2008)
New Revision: 2448
Modified:
mgmt/trunk/mint/python/mint/update.py
Log:
Temporarily silence the nextfetchwork problem
Modified: mgmt/trunk/mint/python/mint/update.py
===================================================================
--- mgmt/trunk/mint/python/mint/update.py 2008-09-11 16:56:18 UTC (rev 2447)
+++ mgmt/trunk/mint/python/mint/update.py 2008-09-11 19:16:12 UTC (rev 2448)
@@ -218,6 +218,10 @@
args = ("stats", self.conn.id, cls, len(self.stats))
log.info("Processing %-8s %-16s %-16s %3i" % args)
+ # XXX temporary work around for absTime type size problem
+ if cls == "mrggrid.slot":
+ return
+
try:
pkg, cls = unmarshalClassInfo(self.classInfo)
except UnknownClassException, e:
17 years, 7 months
rhmessaging commits: r2447 - mgmt/trunk/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
Author: eallen
Date: 2008-09-11 12:56:18 -0400 (Thu, 11 Sep 2008)
New Revision: 2447
Modified:
mgmt/trunk/cumin/python/cumin/job.py
mgmt/trunk/cumin/python/cumin/job.strings
mgmt/trunk/cumin/python/cumin/pool.py
Log:
Added JobGroup with methods Hold/Release/Remove
Modified: mgmt/trunk/cumin/python/cumin/job.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/job.py 2008-09-11 16:55:21 UTC (rev 2446)
+++ mgmt/trunk/cumin/python/cumin/job.py 2008-09-11 16:56:18 UTC (rev 2447)
@@ -29,6 +29,9 @@
self.add_hidden_column(col)
self.set_default_column(col)
+ col = self.CustomIdColumn(app, "custom_id")
+ self.add_hidden_column(col)
+
col = self.CommandColumn(app, "cmd")
self.add_hidden_column(col)
@@ -51,14 +54,10 @@
col = self.CustomGroupColumn(app, "custom_group")
self.add_hidden_column(col)
- col = self.CustomIdColumn(app, "custom_id")
- self.add_hidden_column(col)
-
col = self.CustomPriorityColumn(app, "custom_priority")
self.add_hidden_column(col)
col = self.StatusColumn(app, "job_status")
- col.alignment = "right"
self.add_hidden_column(col)
col = self.TitleColumn(app, "title")
@@ -71,14 +70,6 @@
def get_args(self, session):
return self.frame.get_args(session)
-# def render_sql_where(self, session, job):
-# subquery = \
-# "select 1 from broker_group_mapping " + \
-# "where broker_group_id = %i " % group.id + \
-# "and broker_registration_id = br.id"
-#
-# return "where exists (%s)" % subquery
-
def render_title(self, session, job):
return "Jobs %s" % fmt_count(self.get_item_count(session, job))
@@ -96,8 +87,15 @@
class CustomGroupColumn(SqlTableColumn):
def render_title(self, session, data):
- return "Custom Group"
+ return "Job Group"
+ def render_content(self, session, data):
+ job_group = Identifiable(data[self.name])
+ if job_group:
+ branch = session.branch()
+ self.frame.show_job_group(branch, job_group).show_view(branch)
+ return fmt_olink(branch, job_group, name=data[self.name])
+
class CustomIdColumn(SqlTableColumn):
def render_title(self, session, data):
return "Custom Id"
@@ -113,6 +111,8 @@
def render_content(self, session, data):
job = Identifiable(data["id"])
if data[self.name]:
+ #job = Identifiable(data[self.name])
+ #if job:
branch = session.branch()
self.frame.show_job(branch, job).show_view(branch)
return fmt_olink(branch, job, name=data[self.name])
@@ -154,7 +154,7 @@
else:
return data["scheduler"]
- class CommandColumn(SqlTableColumn):
+ class CommandColumn(ItemTableColumn):
def render_title(self, session, data):
return "Command"
@@ -162,6 +162,132 @@
def render_title(self, session, data):
return "Title"
+class JobGroupFrame(CuminFrame):
+ def __init__(self, app, name):
+ super(JobGroupFrame, self).__init__(app, name)
+
+ self.object = JobGroupParameter(app, "id")
+ self.add_parameter(self.object)
+
+ view = JobGroupView(app, "view")
+ self.add_mode(view)
+ self.set_view_mode(view)
+
+ self.__system = SystemFrame(app, "system")
+ self.add_mode(self.__system)
+
+ def show_system(self, session, system):
+ frame = self.show_mode(session, self.__system)
+ frame.set_object(session, system)
+ return self.page.set_current_frame(session, frame)
+
+ def show_job(self, session, job):
+ return self.frame.show_job(session, job)
+
+ def show_scheduler(self, session, sched):
+ return self.frame.show_scheduler(session, sched)
+
+ def show_jobs_hold(self, session):
+ return self.frame.show_jobs_hold(session)
+
+ def show_jobs_release(self, session):
+ return self.frame.show_jobs_release(session)
+
+ def show_jobs_remove(self, session):
+ return self.frame.show_jobs_remove(session)
+
+class JobGroupView(CuminView):
+ def __init__(self, app, name):
+ super(JobGroupView, self).__init__(app, name)
+
+ summary = CuminSummary(app, "summary")
+ self.add_child(summary)
+
+ status = JobGroupStatus(app, "status")
+ self.add_child(status)
+
+ self.__tabs = TabbedModeSet(app, "tabs")
+ self.add_child(self.__tabs)
+
+ self.__tabs.add_tab(JobGroupJobSet(app, "jobs"))
+ self.__tabs.add_tab(SystemSet(app, "systems"))
+ self.__tabs.add_tab(CuminDetails(app, "details"))
+
+class JobGroupJobSet(JobSet, Form):
+ def __init__(self, app, name):
+ super(JobGroupJobSet, self).__init__(app, name)
+
+ self.set_default_column_name("global_job_id")
+
+ self.__remove = self.Remove(app, "remove", self)
+ self.add_child(self.__remove)
+
+ self.__hold = self.Hold(app, "hold", self)
+ self.add_child(self.__hold)
+
+ self.__release = self.Release(app, "release", self)
+ self.add_child(self.__release)
+
+ def pre_render(self, session, args):
+ self.show_column(session, "global_job_id")
+ self.show_column(session, "cmd")
+ #self.show_column(session, "submitter")
+ self.show_column(session, "job_status")
+ self.show_column(session, "scheduler")
+
+ def render_sql_where(self, session, group):
+ where = "where j.custom_group = '%s'" % group.get_id()
+ return where
+
+ class Remove(FormButton):
+ def process_submit(self, session):
+ ids = self.parent.ids.get(session)
+ self.parent.ids.clear(session)
+
+ branch = session.branch()
+ frame = self.frame.show_jobs_remove(branch)
+ frame.ids.set(branch, ids)
+ self.page.set_redirect_url(session, branch.marshal())
+
+ def render_content(self, session):
+ return "Remove"
+
+ class Hold(FormButton):
+ def process_submit(self, session):
+ ids = self.parent.ids.get(session)
+ self.parent.ids.clear(session)
+
+ branch = session.branch()
+ frame = self.frame.show_jobs_hold(branch)
+ frame.ids.set(branch, ids)
+ self.page.set_redirect_url(session, branch.marshal())
+
+ def render_content(self, session):
+ return "Hold"
+
+ class Release(FormButton):
+ def process_submit(self, session):
+ ids = self.parent.ids.get(session)
+ self.parent.ids.clear(session)
+
+ branch = session.branch()
+ frame = self.frame.show_jobs_release(branch)
+ frame.ids.set(branch, ids)
+ self.page.set_redirect_url(session, branch.marshal())
+
+ def render_content(self, session):
+ return "Release"
+
+
+class JobGroupStatus(CuminStatus):
+ def render_color(self, session, job_group):
+ #return JobStatusInfo.get_status_color(job.JobStatus)
+ return "green"
+
+ def render_job_status(self, session, job_group):
+ #return JobStatusInfo.get_status_string(job.JobStatus)
+ return "Status"
+
class JobFrame(CuminFrame):
def __init__(self, app, name):
super(JobFrame, self).__init__(app, name)
@@ -173,15 +299,6 @@
self.add_mode(view)
self.set_view_mode(view)
- self.__hold = JobHold(app, "jobhold")
- self.add_mode(self.__hold)
-
- self.__release = JobRelease(app, "jobrelease")
- self.add_mode(self.__release)
-
- self.__remove = JobRemove(app, "jobRemove")
- self.add_mode(self.__remove)
-
self.__edit_ads = JobAdsEditor(app, "editads")
self.add_mode(self.__edit_ads)
@@ -208,81 +325,18 @@
self.page.set_current_frame(session, self.__submitter)
return self.show_mode(session, self.__submitter)
- def show_job_hold(self, session):
- self.page.set_current_frame(session, self.__hold)
- return self.show_mode(session, self.__hold)
-
- def show_job_release(self, session):
- self.page.set_current_frame(session, self.__release)
- return self.show_mode(session, self.__release)
-
- def show_job_remove(self, session):
- self.page.set_current_frame(session, self.__remove)
- return self.show_mode(session, self.__remove)
-
+ def show_job_group(self, session, jobgroup):
+ self.__job.set_object(session, jobgroup)
+ self.page.set_current_frame(session, self.__job)
+ self.__job.set_switch(session, "group")
+ return self.show_mode(session, self.__job)
+
def show_system(self, session, system):
frame = self.show_mode(session, self.__system)
frame.set_object(session, system)
return self.page.set_current_frame(session, frame)
-class JobHold(CuminConfirmForm):
- def get_args(self, session):
- return self.frame.get_args(session)
-
- def render_title(self, session, job):
- return "Hold Job '%d'" % job.sourceObjectId
-
- def process_submit(self, session, job):
- action = self.app.model.job.hold
- action.invoke(job)
-
- self.process_cancel(session, job)
-
- def render_submit_content(self, session, job):
- return "Yes, Hold Job '%d'" % job.sourceObjectId
-
- def render_cancel_content(self, session, job):
- return "No, Cancel"
-
-class JobRemove(CuminConfirmForm):
- def get_args(self, session):
- return self.frame.get_args(session)
-
- def render_title(self, session, job):
- return "Remove Job '%d'" % job.sourceObjectId
-
- def process_submit(self, session, job):
- action = self.app.model.job.remove
- action.invoke(job)
-
- self.process_cancel(session, job)
-
- def render_submit_content(self, session, job):
- return "Yes, Remove Job '%d'" % job.sourceObjectId
-
- def render_cancel_content(self, session, job):
- return "No, Cancel"
-
-class JobRelease(CuminConfirmForm):
- def get_args(self, session):
- return self.frame.get_args(session)
-
- def render_title(self, session, job):
- return "Release Job '%d'" % job.sourceObjectId
-
- def process_submit(self, session, job):
- action = self.app.model.job.release
- action.invoke(job)
-
- self.process_cancel(session, job)
-
- def render_submit_content(self, session, job):
- return "Yes, Release Job '%d'" % job.sourceObjectId
-
- def render_cancel_content(self, session, job):
- return "No, Cancel"
-
class JobView(CuminView):
def __init__(self, app, name):
super(JobView, self).__init__(app, name)
@@ -296,7 +350,6 @@
self.__tabs = TabbedModeSet(app, "tabs")
self.add_child(self.__tabs)
- #self.__tabs.add_tab(JobStats(app, "stats"))
self.__tabs.add_tab(JobAdsViewer(app, "jobads"))
self.__tabs.add_tab(JobOutput(app, "output"))
self.__tabs.add_tab(SystemSet(app, "systems"))
@@ -306,13 +359,14 @@
class JobAdsSet(PropertySet):
def __init__(self, app, name):
super(JobAdsSet, self).__init__(app, name, )
-# self.got_data = False
+ self.got_data = False
def get_args(self, session):
return self.frame.get_args(session)
def do_get_items(self, session, job):
items = self.items.get(session)
+ #items = None
if not items:
items = self.gen_items(session, job)
# cache the items
@@ -322,12 +376,15 @@
def gen_items(self, session, job):
-# def completion(status, args=None):
-# self.got_data = True
-#
-# ads = dict()
-# model = self.app.model
-# job.GetAd(model.data, completion, ads)
+ def completion(status, args):
+ self.got_data = True
+
+ ads = dict()
+ model = self.app.model
+ ret = job.GetAd(model.data, completion, ads)
+
+ while not self.got_data:
+ pass
# wait(self.got_data)
# stolen straight for qpid-tool
@@ -584,22 +641,6 @@
def render_title(self, session):
return "Output"
-
-class JobStats(TabbedModeSet):
- def __init__(self, app, name):
- super(JobStats, self).__init__(app, name)
-
- self.add_child(StatSet(app, "io", "io"))
- self.add_child(StatSet(app, "general", "general"))
-
- chart = StatValueChart(app, "producers")
- chart.stats = ("producerCount",)
- self.add_child(chart)
-
- def render_title(self, session):
- return "Statistics"
-
-
class JobStatus(CuminStatus):
def render_color(self, session, job):
return JobStatusInfo.get_status_color(job.JobStatus)
@@ -611,54 +652,77 @@
def __init__(self, app, name):
super(JobGroupSet, self).__init__(app, name)
- self.ids = CheckboxIdColumn(app, "id", self)
- #self.add_column(self.ids)
+ self.ids = CheckboxStringIdColumn(app, "id", self)
+ self.add_column(self.ids)
- col = self.AccountingGroupColumn(app, "agroup")
+ col = self.GroupColumn(app, "job_group")
self.add_column(col)
col = self.JobsCountColumn(app, "jobs")
- self.add_column(col)
-
- #col = self.SubmitterColumn(app, "submitter")
- #self.add_column(col)
-
- col = self.StatusColumn(app, "job_status")
col.alignment = "right"
self.add_column(col)
-
- self.unit = GroupSwitch(app, "group")
- self.add_child(self.unit)
-
- def render_title(self, session):
- return "Jobs %s" % fmt_count(Job.select().count())
-
- class StatusColumn(SqlTableColumn):
- def render_title(self, session, data):
- return "Status"
- class AccountingGroupColumn(SqlTableColumn):
+ class GroupColumn(SqlTableColumn):
def render_title(self, session, data):
- return "Accounting Group"
+ return "Job Group"
+
+ def render_content(self, session, data):
+ job_group = Identifiable(data[self.name])
+ if job_group:
+ branch = session.branch()
+ self.frame.show_job_group(branch, job_group).show_view(branch)
+ return fmt_olink(branch, job_group, name=data[self.name])
- class SubmitterColumn(SqlTableColumn):
- def render_title(self, session, data):
- return "Submitter"
-
class JobsCountColumn(SqlTableColumn):
def render_title(self, session, data):
return "Jobs"
+
+#TODO: Fix the sql to return the correct count instead of making a call per group here
+ def render_content(self, session, data):
+ where = "custom_group = '%s'" % data["job_group"]
+ return Job.select(where).count()
-class JobGroupTab(JobGroupSet, Form):
+class JobsAndGroupsTab(Widget):
def __init__(self, app, name):
- super(JobGroupTab, self).__init__(app, name)
+ super(JobsAndGroupsTab, self).__init__(app, name)
+
+ self.is_group = GroupSwitch(app, "group")
+ self.add_child(self.is_group)
+
+ self.job_tab = JobTab(app, "jobtab")
+ self.add_child(self.job_tab)
- self.show_column("agroup")
- self.set_default_column_name("agroup")
+ self.job_group_tab = JobGroupTab(app, "jobgrouptab")
+ self.add_child(self.job_group_tab)
+
+ def get_args(self, session):
+ return self.frame.get_args(session)
+
+ def render_title(self, session, job):
+ return "Jobs %s" % fmt_count(self.job_tab.get_item_count(session, job))
+
+ def set_switch(self, session, switch):
+ if switch == "group":
+ self.is_group.set(session, "g")
+ else:
+ self.is_group.set(session, "j")
+
+ def render_jobs(self, session, args):
+ is_group = self.is_group.get(session)
+ if is_group == "j":
+ return self.job_tab.render(session)
+
+ def render_job_groups(self, session, args):
+ is_group = self.is_group.get(session)
+ if is_group == "g":
+ return self.job_group_tab.render(session)
+
+class JobTab(JobSet, Form):
+ def __init__(self, app, name):
+ super(JobTab, self).__init__(app, name)
- #self.show_column("submitter")
- self.show_column("job_status")
-
+ self.set_default_column_name("global_job_id")
+
self.__remove = self.Remove(app, "remove", self)
self.add_child(self.__remove)
@@ -668,13 +732,22 @@
self.__release = self.Release(app, "release", self)
self.add_child(self.__release)
+ def pre_render(self, session, args):
+ self.show_column(session, "global_job_id")
+ self.show_column(session, "custom_id")
+ self.show_column(session, "cmd")
+ #self.show_column(session, "submitter")
+ self.show_column(session, "custom_group")
+ self.show_column(session, "scheduler")
+ self.show_column(session, "job_status")
+
class Remove(FormButton):
def process_submit(self, session):
ids = self.parent.ids.get(session)
self.parent.ids.clear(session)
branch = session.branch()
- frame = self.frame.show_job_group_remove(branch)
+ frame = self.frame.show_jobs_remove(branch)
frame.ids.set(branch, ids)
self.page.set_redirect_url(session, branch.marshal())
@@ -687,7 +760,7 @@
self.parent.ids.clear(session)
branch = session.branch()
- frame = self.frame.show_job_group_hold(branch)
+ frame = self.frame.show_jobs_hold(branch)
frame.ids.set(branch, ids)
self.page.set_redirect_url(session, branch.marshal())
@@ -700,24 +773,17 @@
self.parent.ids.clear(session)
branch = session.branch()
- frame = self.frame.show_job_group_release(branch)
+ frame = self.frame.show_jobs_release(branch)
frame.ids.set(branch, ids)
self.page.set_redirect_url(session, branch.marshal())
def render_content(self, session):
return "Release"
-class JobsTab(JobSet, Form):
+class JobGroupTab(JobGroupSet, Form):
def __init__(self, app, name):
- super(JobsTab, self).__init__(app, name)
+ super(JobGroupTab, self).__init__(app, name)
- self.show_column("global_job_id")
- self.set_default_column_name("global_job_id")
- self.show_column("cmd")
- #self.show_column("submitter")
- self.show_column("scheduler")
- self.show_column("job_status")
-
self.__remove = self.Remove(app, "remove", self)
self.add_child(self.__remove)
@@ -727,8 +793,7 @@
self.__release = self.Release(app, "release", self)
self.add_child(self.__release)
- self.unit = GroupSwitch(app, "group")
- self.add_child(self.unit)
+ self.set_default_column_name("job_group")
class Remove(FormButton):
def process_submit(self, session):
@@ -736,7 +801,7 @@
self.parent.ids.clear(session)
branch = session.branch()
- frame = self.frame.show_jobs_remove(branch)
+ frame = self.frame.show_job_group_remove(branch)
frame.ids.set(branch, ids)
self.page.set_redirect_url(session, branch.marshal())
@@ -749,7 +814,7 @@
self.parent.ids.clear(session)
branch = session.branch()
- frame = self.frame.show_jobs_hold(branch)
+ frame = self.frame.show_job_group_hold(branch)
frame.ids.set(branch, ids)
self.page.set_redirect_url(session, branch.marshal())
@@ -762,67 +827,174 @@
self.parent.ids.clear(session)
branch = session.branch()
- frame = self.frame.show_jobs_release(branch)
+ frame = self.frame.show_job_group_release(branch)
frame.ids.set(branch, ids)
self.page.set_redirect_url(session, branch.marshal())
def render_content(self, session):
return "Release"
+
+class JobReasonBulkActionForm(CuminBulk):
+ def __init__(self, app, name):
+ super(JobReasonBulkActionForm, self).__init__(app, name)
-class JobSetHold(CuminBulkActionForm):
- def process_return(self, session):
- branch = session.branch()
- self.frame.show_view(branch)
- self.page.set_current_frame(branch, self.frame)
- self.page.set_redirect_url(session, branch.marshal())
+ self.reason = Parameter(app, "reason")
+ self.add_parameter(self.reason)
+ self.add_form_parameter(self.reason)
+
+ self.error = Attribute(app, "error")
+ self.add_attribute(self.error)
+ self.error_tmpl = Template(self, "reason_html")
+
+ def render_reason_text(self, session, *args):
+ return "Reason"
+
+ def render_reason_path(self, session, *args):
+ return self.reason.path
+
+ def render_reason_value(self, session, *args):
+ return self.reason.get(session)
+
+ def render_reason_error(self, session, *args):
+ if self.error.get(session):
+ writer = Writer()
+ self.error_tmpl.render(writer, session, *args)
+ return writer.to_string()
+
+ def render_reason_error_text(self, session, *args):
+ return self.error.get(session)
+
+ def render_form_heading(self, session, *args):
+ pass
+
+ def process_submit(self, session, *args):
+ reason = self.reason.get(session)
+ if not reason:
+ self.error.set(session, "Reason is required")
+ else:
+ super(JobReasonBulkActionForm, self).process_submit(session, *args)
+
+ def get_reason(self, session, verb):
+ """ returns <verb> by username[: <user input reason>] """
+ reason = [self.reason.get(session)]
+ verb_by = "%s by %s" % (verb, session.credentials.get("name"))
+ reason.insert(0, verb_by)
+ return ": ".join(reason)
+
+class JobReasonIntBulkActionForm(JobReasonBulkActionForm, CuminIntIdList):
+ def get_items(self, session, *args):
+ return self.ids.get(session)
+
+class JobSetHold(JobReasonIntBulkActionForm):
def process_item(self, session, id):
job = Job.get(id)
action = self.app.model.job.hold
- action.invoke(job)
+ reason = self.get_reason(session, "held")
+ action.invoke(job, reason)
def render_title(self, session):
- return "Hold Jobs"
+ ids = self.ids.get(session)
+ return len(ids) > 1 and "Hold Jobs" or "Hold Job"
def render_item_content(self, session, id):
return "Hold Job '%s'" % Job.get(id).GlobalJobId
-class JobSetRelease(CuminBulkActionForm):
- def process_return(self, session):
- branch = session.branch()
- self.frame.show_view(branch)
- self.page.set_current_frame(branch, self.frame)
- self.page.set_redirect_url(session, branch.marshal())
-
+ def render_reason_text(self, session, *args):
+ return "Hold Reason"
+
+class JobSetRelease(JobReasonIntBulkActionForm):
def process_item(self, session, id):
job = Job.get(id)
action = self.app.model.job.release
- action.invoke(job)
+ reason = self.get_reason(session, "released")
+ action.invoke(job, reason)
def render_title(self, session):
- return "Release Jobs"
+ ids = self.ids.get(session)
+ return len(ids) > 1 and "Release Jobs" or "Release Job"
def render_item_content(self, session, id):
return "Release Job '%s'" % Job.get(id).GlobalJobId
-class JobSetRemove(CuminBulkActionForm):
- def process_return(self, session):
- branch = session.branch()
- self.frame.show_view(branch)
- self.page.set_current_frame(branch, self.frame)
- self.page.set_redirect_url(session, branch.marshal())
-
+ def render_reason_text(self, session, *args):
+ return "Release Reason"
+
+class JobSetRemove(JobReasonIntBulkActionForm):
def process_item(self, session, id):
job = Job.get(id)
action = self.app.model.job.remove
- action.invoke(job)
+ reason = self.get_reason(session, "removed")
+ action.invoke(job, reason)
def render_title(self, session):
- return "Remove Jobs"
+ ids = self.ids.get(session)
+ return len(ids) > 1 and "Remove Jobs" or "Remove Job"
def render_item_content(self, session, id):
return "Remove Job '%s'" % Job.get(id).GlobalJobId
+ def render_reason_text(self, session, *args):
+ return "Remove Reason"
+
+class JobReasonStringBulkActionForm(JobReasonBulkActionForm, CuminStringIdList):
+ def get_items(self, session, *args):
+ return self.ids.get(session)
+
+class JobGroupHold(JobReasonStringBulkActionForm):
+ def process_item(self, session, id):
+ sel = "custom_group='%s'" % id
+ action = self.app.model.job.hold
+ reason = self.get_reason(session, "held")
+ for job in Job.select(sel):
+ action.invoke(job, reason)
+
+ def render_title(self, session):
+ ids = self.ids.get(session)
+ return len(ids) > 1 and "Hold Job Groups" or "Hold Job Group"
+
+ def render_item_content(self, session, group):
+ return group
+
+ def render_reason_text(self, session, *args):
+ return "Hold Reason"
+
+class JobGroupRelease(JobReasonStringBulkActionForm):
+ def process_item(self, session, id):
+ sel = "custom_group='%s'" % id
+ action = self.app.model.job.release
+ reason = self.get_reason(session, "released")
+ for job in Job.select(sel):
+ action.invoke(job, reason)
+
+ def render_title(self, session):
+ ids = self.ids.get(session)
+ return len(ids) > 1 and "Release Job Groups" or "Release Job Group"
+
+ def render_item_content(self, session, group):
+ return group
+
+ def render_reason_text(self, session, *args):
+ return "Release Reason"
+
+class JobGroupRemove(JobReasonStringBulkActionForm):
+ def process_item(self, session, id):
+ sel = "custom_group='%s'" % id
+ action = self.app.model.job.remove
+ reason = self.get_reason(session, "removed")
+ for job in Job.select(sel):
+ action.invoke(job, reason)
+
+ def render_title(self, session):
+ ids = self.ids.get(session)
+ return len(ids) > 1 and "Remove Job Groups" or "Remove Job Group"
+
+ def render_item_content(self, session, group):
+ return group
+
+ def render_reason_text(self, session, *args):
+ return "Remove Reason"
+
class JobStatusInfo(object):
stat_strings = ["Unexpanded", "Idle", "Running", "Removed", "Completed", "Held", "Submission Error"]
stat_colors = ["red", "green", "green", "green", "green", "yellow", "red"]
Modified: mgmt/trunk/cumin/python/cumin/job.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/job.strings 2008-09-11 16:55:21 UTC (rev 2446)
+++ mgmt/trunk/cumin/python/cumin/job.strings 2008-09-11 16:56:18 UTC (rev 2447)
@@ -20,7 +20,6 @@
left outer join job_stats as p on p.id = j.stats_prev_id
inner join scheduler as s on s.id = j.scheduler_id
{sql_where}
-{sql_orderby}
{sql_limit}
[JobSet.count_sql]
@@ -29,11 +28,8 @@
inner join scheduler as s on s.id = j.scheduler_id
{sql_where}
-
-[JobsTab.html]
+[JobTab.html]
<form id="{id}" method="post" action="?">
-
- {group}
<div class="sactions">
<h2>Act on Selected Jobs:</h2>
@@ -55,14 +51,15 @@
<div>{hidden_inputs}</div>
</form>
-[JobGroupSet.sql]
+[JobGroupSet.old.sql]
select distinct
- j.accounting_group as agroup,
- j.job_status,
-/* j.owner as submitter, */
+ j.custom_group as agroup,
+/* j.job_status,
+ j.owner as submitter, */
(select count(1)
from job as j
- group by j.accounting_group) as jobs
+ inner join scheduler as s on s.id = j.scheduler_id
+ group by j.custom_group) as jobs
from job as j
left outer join job_stats as c on c.id = j.stats_curr_id
left outer join job_stats as p on p.id = j.stats_prev_id
@@ -70,18 +67,54 @@
{sql_orderby}
{sql_limit}
+[JobGroupSet.sql]
+select distinct
+ j.custom_group as id,
+ j.custom_group as job_group,
+/* (select count(distinct j.global_job_id) from job as j ) as jobs */
+ 1 as jobs
+from job as j
+{sql_where}
+{sql_limit}
+
[JobGroupSet.count_sql]
-select count(j.accounting_group)
+select count(distinct j.custom_group)
from job as j
-left outer join job_stats as c on c.id = j.stats_curr_id
{sql_where}
+[JobsAndGroupsTab.html]
+{group}
+
+{jobs}{job_groups}
+
+
[JobGroupTab.html]
<form id="{id}" method="post" action="?">
- {group}
+ <div class="sactions">
+ <h2>Act on Selected Groups:</h2>
+ {hold} {release} {remove}
+ </div>
+ <table class="mobjects">
+ <thead>
+ <tr>
+ <th class="setnav" colspan="{column_count}">
+ <div class="rfloat">{page}</div>
+ {count}
+ </th>
+ </tr>
+ <tr>{headers}</tr>
+ </thead>
+ <tbody>{items}</tbody>
+ </table>
+ <div>{hidden_inputs}</div>
+</form>
+
+[JobGroupJobSet.html]
+<form id="{id}" method="post" action="?">
+
<div class="sactions">
<h2>Act on Selected Groups:</h2>
{hold} {release} {remove}
@@ -117,7 +150,6 @@
<tbody>
<tr>
<td>
- <h2>Properties</h2>
{groups}
</td>
</tr>
@@ -171,7 +203,6 @@
<tbody>
<tr>
<td>
- <h2>Properties</h2>
{groups}
</td>
</tr>
@@ -181,4 +212,53 @@
<div>{hidden_inputs}</div>
</form>
+[JobReasonBulkActionForm.css]
+div.action_reason {
+ margin: 1em;
+}
+div.action_reason label {
+ font-weight: bold;
+ margin-right: 0.5em;
+}
+div.action_reason input {
+ width: 20em;
+}
+div.action_reason div.reason_error {
+ float: right;
+ border: 1px solid red;
+ color: red;
+ padding: 0.5em;
+}
+[JobReasonBulkActionForm.reason_html]
+ <div class="reason_error">{reason_error_text}</div>
+
+[JobReasonBulkActionForm.html]
+<form id="{id}" class="mform" method="post" action="?">
+ <div class="head">
+ <h1>{title}</h1>
+ </div>
+ <div class="body">
+ <span class="legend">{form_heading}</span>
+ <div class="action_reason">
+ {reason_error}
+ <label for="reason">{reason_text}</label> <input type="text" name="{reason_path}" id="reason" value="{reason_value}" maxlength="4000" />
+ </div>
+ <fieldset>
+ <ul>{items}</ul>
+ </fieldset>
+
+ {hidden_inputs}
+ </div>
+ <div class="foot">
+ {help}
+ {submit}
+ {cancel}
+ </div>
+</form>
+<script type="text/javascript">
+<![CDATA[
+ wooly.doc().elembyid("{id}").node.elements[0].focus();
+]]>
+</script>
+
Modified: mgmt/trunk/cumin/python/cumin/pool.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/pool.py 2008-09-11 16:55:21 UTC (rev 2446)
+++ mgmt/trunk/cumin/python/cumin/pool.py 2008-09-11 16:56:18 UTC (rev 2447)
@@ -55,6 +55,12 @@
self.__job = JobFrame(app, "job")
self.add_mode(self.__job)
+ self.__sched = SchedulerFrame(app, "sched")
+ self.add_mode(self.__sched)
+
+ self.__sub = SubmitterFrame(app, "sub")
+ self.add_mode(self.__sub)
+
self.__jobs_hold = JobSetHold(app, "jobshold")
self.add_mode(self.__jobs_hold)
@@ -64,17 +70,38 @@
self.__jobs_remove = JobSetRemove(app, "jobsremove")
self.add_mode(self.__jobs_remove)
- self.__sched = SchedulerFrame(app, "sched")
- self.add_mode(self.__sched)
+ self.__job_group = JobGroupFrame(app, "jobgroup")
+ self.add_mode(self.__job_group)
- self.__sub = SubmitterFrame(app, "sub")
- self.add_mode(self.__sub)
-
+ self.__job_group_hold = JobGroupHold(app, "jobgrouphold")
+ self.add_mode(self.__job_group_hold)
+
+ self.__job_group_release = JobGroupRelease(app, "jobgrouprelease")
+ self.add_mode(self.__job_group_release)
+
+ self.__job_group_remove = JobGroupRemove(app, "jobgroupremove")
+ self.add_mode(self.__job_group_remove)
+
def show_job(self, session, job):
self.__job.set_object(session, job)
self.page.set_current_frame(session, self.__job)
return self.show_mode(session, self.__job)
+ def show_job_group(self, session, job_group):
+ self.__job_group.set_object(session, job_group)
+ self.page.set_current_frame(session, self.__job_group)
+ return self.show_mode(session, self.__job_group)
+
+ def show_scheduler(self, session, sched):
+ self.__sched.set_object(session, sched)
+ self.page.set_current_frame(session, self.__sched)
+ return self.show_mode(session, self.__sched)
+
+ def show_submitter(self, session, sub):
+ self.__sub.set_object(session, sub)
+ self.page.set_current_frame(session, self.__sub)
+ return self.show_mode(session, self.__sub)
+
def show_jobs_hold(self, session):
self.page.set_current_frame(session, self.__jobs_hold)
return self.show_mode(session, self.__jobs_hold)
@@ -87,16 +114,18 @@
self.page.set_current_frame(session, self.__jobs_remove)
return self.show_mode(session, self.__jobs_remove)
- def show_scheduler(self, session, sched):
- self.__sched.set_object(session, sched)
- self.page.set_current_frame(session, self.__sched)
- return self.show_mode(session, self.__sched)
-
- def show_submitter(self, session, sub):
- self.__sub.set_object(session, sub)
- self.page.set_current_frame(session, self.__sub)
- return self.show_mode(session, self.__sub)
-
+ def show_job_group_hold(self, session):
+ self.page.set_current_frame(session, self.__job_group_hold)
+ return self.show_mode(session, self.__job_group_hold)
+
+ def show_job_group_release(self, session):
+ self.page.set_current_frame(session, self.__job_group_release)
+ return self.show_mode(session, self.__job_group_release)
+
+ def show_job_group_remove(self, session):
+ self.page.set_current_frame(session, self.__job_group_remove)
+ return self.show_mode(session, self.__job_group_remove)
+
class PoolView(CuminView):
def __init__(self, app, name):
super(PoolView, self).__init__(app, name)
@@ -107,7 +136,7 @@
self.__tabs = TabbedModeSet(app, "tabs")
self.add_child(self.__tabs)
- jobs = JobsTab(app, "jobs")
+ jobs = JobsAndGroupsTab(app, "jobs")
self.__tabs.add_tab(jobs)
scheds = self.SchedulersTab(app, "scheds")
17 years, 7 months
rhmessaging commits: r2446 - mgmt/trunk/cumin/python/cumin.
by rhmessaging-commits@lists.jboss.org
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):
17 years, 7 months