[rhmessaging-commits] rhmessaging commits: r2483 - mgmt/trunk/cumin/python/cumin.
rhmessaging-commits at lists.jboss.org
rhmessaging-commits at lists.jboss.org
Tue Sep 16 14:30:05 EDT 2008
Author: eallen
Date: 2008-09-16 14:30:05 -0400 (Tue, 16 Sep 2008)
New Revision: 2483
Modified:
mgmt/trunk/cumin/python/cumin/job.py
mgmt/trunk/cumin/python/cumin/job.strings
Log:
Using real GetAd data
Sketched in Job Output page
Modified: mgmt/trunk/cumin/python/cumin/job.py
===================================================================
--- mgmt/trunk/cumin/python/cumin/job.py 2008-09-16 18:28:57 UTC (rev 2482)
+++ mgmt/trunk/cumin/python/cumin/job.py 2008-09-16 18:30:05 UTC (rev 2483)
@@ -367,14 +367,12 @@
class JobAdsSet(PropertySet):
def __init__(self, app, name):
super(JobAdsSet, self).__init__(app, name, )
- 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
@@ -383,103 +381,29 @@
return items
def gen_items(self, session, job):
+ self.job_ads = dict()
+ self.got_data = False
- def completion(status, args):
+ def completion(status, job_ads):
+ self.job_ads = job_ads["JobAd"]
self.got_data = True
-
- ads = dict()
+
+ def predicate():
+ return self.got_data
+
model = self.app.model
- ret = job.GetAd(model.data, completion, ads)
+ job.GetAd(model.data, completion, self.job_ads)
- while not self.got_data:
- pass
-# wait(self.got_data)
-
- # stolen straight for qpid-tool
- ads = {u'CondorPlatform': u'$CondorPlatform: I386-LINUX_RHEL5 $',
- u'KillSig': u'SIGTERM',
- u'TransferFiles': u'ONEXIT',
- u'Requirements': u'(Arch == "INTEL") && (OpSys == "LINUX") && (Disk >= DiskUsage) && ((Memory * 1024) >= ImageSize) && ((HasFileTransfer) || (TARGET.FileSystemDomain == MY.FileSystemDomain))',
- u'ImageSize': 20,
- u'TargetType': u'Machine',
- u'OnExitHold': u'FALSE',
- u'NumCkpts': 0,
- u'PeriodicRelease': u'FALSE',
- u'BufferBlockSize': 32768,
- u'Environment': u'',
- u'RootDir': u'/',
- u'JobPrio': 0,
- u'MinHosts': 1,
- u'WantCheckpoint': u'FALSE',
- u'CumulativeSuspensionTime': 0,
- u'WantRemoteSyscalls': u'FALSE',
- u'FileSystemDomain': u'mrg2.lab.bos.redhat.com',
- u'GlobalJobId': u'mrg-test@#1219326763#1.0',
- u'ExitStatus': 0,
- u'WhenToTransferOutput': u'ON_EXIT',
- u'CurrentHosts': 0,
- u'ProcId': 0,
- u'ImageSize_RAW': 20,
- u'Iwd': u'/home/remote/mfarrell',
- u'HoldReasonCode': 15,
- u'NumSystemHolds': 0,
- u'PeriodicHold': u'FALSE',
- u'Args': u'100',
- u'ClusterId': 1,
- u'OnExitRemove': u'TRUE',
- u'RemoteWallClockTime': 0,
- u'HoldReason': u"submitted on hold at user's request",
- u'NiceUser': u'FALSE',
- u'PeriodicRemove': u'FALSE',
- u'UserLog': u'/home/remote/mfarrell/log.1.0',
- u'MyType': u'Job',
- u'WantRemoteIO': u'TRUE',
- u'LocalUserCpu': 0,
- u'BufferSize': 524288,
- u'ScheddBday': 12059630,
- u'CompletionDate': 0,
- u'JobLeaseDuration': 1200,
- u'LastSuspensionTime': 0,
- u'NumRestarts': 0,
- u'Err': u'/dev/null',
- u'QDate': 11367211,
- u'RemoteSysCpu': 0,
- u'Cmd': u'/bin/sleep',
- u'TransferOut': u'FALSE',
- u'DiskUsage_RAW': 20,
- u'ExecutableSize': 20,
- u'Owner': u'mfarrell',
- u'LeaveJobInQueue': u'FALSE',
- u'JobStatus': 5,
- u'ExecutableSize_RAW': 20,
- u'JobUniverse': 5,
- u'DiskUsage': 20,
- u'EnteredCurrentStatus': 11367211,
- u'TotalSuspensions': 0,
- u'ShouldTransferFiles': u'IF_NEEDED',
- u'NumCkpts_RAW': 0,
- u'MaxHosts': 1,
- u'CommittedTime': 0,
- u'In': u'/dev/null',
- u'CoreSize': 0,
- u'Rank': 0,
- u'RemoteUserCpu': 0,
- u'User': u'mfarrell at mrg2.lab.bos.redhat.com',
- u'LocalSysCpu': 0,
- u'TransferErr': u'FALSE',
- u'ExitBySignal': u'FALSE',
- u'CondorVersion': u'$CondorVersion: 7.0.4 Aug 6 2008 BuildID: RH-7.0.4-4.el5 $',
- u'TransferIn': u'FALSE',
- u'JobNotification': 0,
- u'NumJobStarts': 0,
- u'Out': u'/dev/null'}
-
+ # wait for up to 10 seconds for completion to be called
+ wait(predicate, timeout=10)
cls = self.app.model.get_class_by_object(job)
# list of dictionaries
# each disctionary has:
# name:, value:, type: [, error:] [, property:] [,path:]
- return [self.gen_item(x, ads[x], cls) for x in ads]
+ return [self.gen_item(x, self.job_ads[x], cls) for x in self.job_ads]
+#TODO: handle case where completion status isn't OK
+
def gen_item(self, name, value, cls, path=None, dtype=None, error=None):
idict = dict()
@@ -521,7 +445,7 @@
property = item["property"]
if property.renderer:
value = property.renderer(session, value)
- return escape_amp(value)
+ return escape_entity(str(value))
def render_inline_help(self, session, item):
if "property" in item:
@@ -641,14 +565,82 @@
action.invoke(job, just_ads)
self.process_cancel(session, job)
-class JobOutput(TabbedModeSet):
+class JobOutput(Form):
def __init__(self, app, name):
super(JobOutput, self).__init__(app, name)
+ self.which_file = self.FileSwitch(app, "file")
+ self.add_child(self.which_file)
+
+ self.first_last = self.FLSwitch(app, "first_last")
+ self.add_child(self.first_last)
+
+ self.__fetch = self.FetchButton(app, "refresh", self)
+ self.add_child(self.__fetch)
+ self.out_time = Attribute(app, "out_time")
+ self.add_attribute(self.out_time)
+
def render_title(self, session):
return "Output"
+
+ def render_out_time(self, session):
+ return "13:14:00 Sept 16 2008"
+ def render_the_output(self, session, *args):
+
+ raw = """fcrawler.looksmart.com - - [26/Apr/2000:00:00:12 -0400] "GET /contacts.html HTTP/1.0" 200 4595 "-" "FAST-WebCrawler/2.1-pre2 (ashen at looksmart.net)"
+fcrawler.looksmart.com - - [26/Apr/2000:00:17:19 -0400] "GET /news/news.html HTTP/1.0" 200 16716 "-" "FAST-WebCrawler/2.1-pre2 (ashen at looksmart.net)"
+
+ppp931.on.bellglobal.com - - [26/Apr/2000:00:16:12 -0400] "GET /download/windows/asctab31.zip HTTP/1.0" 200 1540096 "http://www.htmlgoodies.com/downloads/freeware/webdevelopment/15.html" "Mozilla/4.7 [en]C-SYMPA (Win95; U)"
+
+123.123.123.123 - - [26/Apr/2000:00:23:48 -0400] "GET /pics/wpaper.gif HTTP/1.0" 200 6248 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+123.123.123.123 - - [26/Apr/2000:00:23:47 -0400] "GET /asctortf/ HTTP/1.0" 200 8130 "http://search.netscape.com/Computers/Data_Formats/Document/Text/RTF" "Mozilla/4.05 (Macintosh; I; PPC)"
+123.123.123.123 - - [26/Apr/2000:00:23:48 -0400] "GET /pics/5star2000.gif HTTP/1.0" 200 4005 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+123.123.123.123 - - [26/Apr/2000:00:23:50 -0400] "GET /pics/5star.gif HTTP/1.0" 200 1031 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+123.123.123.123 - - [26/Apr/2000:00:23:51 -0400] "GET /pics/a2hlogo.jpg HTTP/1.0" 200 4282 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+123.123.123.123 - - [26/Apr/2000:00:23:51 -0400] "GET /cgi-bin/newcount?jafsof3&width=4&font=digital&noshow HTTP/1.0" 200 36 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+192.168.2.20 - - [28/Jul/2006:10:27:10 -0300] "GET /cgi-bin/try/ HTTP/1.0" 200 3395
+127.0.0.1 - - [28/Jul/2006:10:22:04 -0300] "GET / HTTP/1.0" 200 2216
+195.146.134.15 - - [20/Jan/2003:08:55:36 -0800] "GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+195.146.134.15 - - [20/Jan/2003:08:55:36 -0800] "GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+
+195.146.134.15 - - [20/Jan/2003:08:55:36 -0800] "GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+195.146.134.15 - - [20/Jan/2003:08:55:36 -0800] "GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+195.146.134.15 - - [20/Jan/2003:08:55:36 -0800] "GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+195.146.134.15 - - [20/Jan/2003:08:55:36 -0800] "GET /path/to/page.html HTTP/1.0" 200 4649 "http://www.somedomain.com/020602/page.html" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)"
+
+123.123.123.123 - - [26/Apr/2000:00:23:48 -0400] "GET /pics/5star2000.gif HTTP/1.0" 200 4005 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+123.123.123.123 - - [26/Apr/2000:00:23:50 -0400] "GET /pics/5star.gif HTTP/1.0" 200 1031 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+123.123.123.123 - - [26/Apr/2000:00:23:51 -0400] "GET /pics/a2hlogo.jpg HTTP/1.0" 200 4282 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+123.123.123.123 - - [26/Apr/2000:00:23:51 -0400] "GET /cgi-bin/newcount?jafsof3&width=4&font=digital&noshow HTTP/1.0" 200 36 "http://www.jafsoft.com/asctortf/" "Mozilla/4.05 (Macintosh; I; PPC)"
+192.168.2.20 - - [28/Jul/2006:10:27:10 -0300] "GET /cgi-bin/try/ HTTP/1.0" 200 3395
+
+ """
+ return escape_entity(raw)
+
+ class FetchButton(FormButton):
+ def process_submit(self, session):
+ pass
+
+ def render_content(self, session):
+ return "Refresh"
+
+ class FileSwitch(StateSwitch):
+ def __init__(self, app, name):
+ super(JobOutput.FileSwitch, self).__init__(app, name)
+
+ self.add_state("o", "Output")
+ self.add_state("e", "Error")
+ self.add_state("l", "UserLog")
+
+ class FLSwitch(StateSwitch):
+ def __init__(self, app, name):
+ super(JobOutput.FLSwitch, self).__init__(app, name)
+
+ self.add_state("t", "Tail")
+ self.add_state("h", "Head")
+
class JobStatus(CuminStatus):
def render_color(self, session, job):
return JobStatusInfo.get_status_color(job.JobStatus)
Modified: mgmt/trunk/cumin/python/cumin/job.strings
===================================================================
--- mgmt/trunk/cumin/python/cumin/job.strings 2008-09-16 18:28:57 UTC (rev 2482)
+++ mgmt/trunk/cumin/python/cumin/job.strings 2008-09-16 18:30:05 UTC (rev 2483)
@@ -20,6 +20,7 @@
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]
@@ -75,6 +76,7 @@
1 as jobs
from job as j
{sql_where}
+{sql_orderby}
{sql_limit}
[JobGroupSet.count_sql]
@@ -264,3 +266,35 @@
]]>
</script>
+
+[JobOutput.css]
+textarea#the_output {
+ height: 25em;
+ width: 100%;
+ border: 1px solid #EAEAEA;
+ font-family: Fixed, monospace;
+ line-height: 1.15em;
+ background-color: #FFF;
+ color: #333;
+}
+div.out_actions {
+ padding:1em 1em 0 1em;
+}
+div.refresh_info h2 {
+ position: relative;
+ top: -0.5em;
+}
+
+
+[JobOutput.html]
+<form id="{id}" style="width:100%; border:0px;" class="mform" method="post" action="?">
+ <div class="out_actions">
+ <div class="rfloat">{first_last}</div>
+ {file}
+ </div>
+<div class="sactions refresh_info">{refresh} <h2>Last refresh was at {out_time}</h2></div>
+<textarea name="the_output" id="the_output" disabled="disabled" rows="20">
+{the_output}
+</textarea>
+<div>{hidden_inputs}</div>
+</form>
\ No newline at end of file
More information about the rhmessaging-commits
mailing list