[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