Changeset 7660:62b7be191970
- Timestamp:
- 11/11/07 22:41:33 (6 years ago)
- Branch:
- default
- Children:
- 7661:5ecfb83c6b5b, 8377:d9717dc46a8a
- Location:
- sage/dsage
- Files:
-
- 1 deleted
- 6 edited
-
database/monitordb.py (modified) (4 diffs)
-
scripts/dsage_get_stats.py (deleted)
-
scripts/dsage_server.py (modified) (1 diff)
-
scripts/dsage_worker.py (modified) (2 diffs)
-
server/server.py (modified) (1 diff)
-
server/stats.py (modified) (4 diffs)
-
web/web_server.py (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
sage/dsage/database/monitordb.py
r7308 r7660 130 130 131 131 def update_monitor(self, host_info): 132 import pdb; pdb.set_trace()133 132 query = """UPDATE monitors 134 133 SET hostname = ?, ip = ?, workers = ?, sage_version = ?, os = ?, … … 251 250 self.con.commit() 252 251 253 def get_worker_count(self, connected, busy ):252 def get_worker_count(self, connected, busy=False): 254 253 """ 255 254 Returns the number of workers. … … 276 275 return sum(w[0] for w in result) 277 276 278 def get_cpu_speed(self, connected=True, busy= True):277 def get_cpu_speed(self, connected=True, busy=False): 279 278 """ 280 279 Returns the aggregate cpu speed in Mhz. … … 285 284 """ 286 285 287 if connected :286 if connected and busy: 288 287 query = """SELECT cpu_speed, workers FROM monitors 289 288 WHERE connected AND busy""" 289 elif connected: 290 query = """SELECT cpu_speed, workers FROM monitors 291 WHERE connected""" 290 292 else: 291 293 query = """SELECT cpu_speed, workers FROM monitors""" -
sage/dsage/scripts/dsage_server.py
r7655 r7660 117 117 return options 118 118 119 # def write_stats(dsage_server, stats_file):120 # check_dsage_dir()121 # try:122 # fname = os.path.join(DSAGE_DIR, stats_file)123 # f = open(fname, 'w')124 # f.write(dsage_server.generate_xml_stats())125 # f.close()126 # except Exception, msg:127 # print Exception128 # print 'Error writing stats: %s' % (msg)129 # return130 131 119 def create_manhole(): 132 120 """ -
sage/dsage/scripts/dsage_worker.py
r7650 r7660 128 128 except Exception, msg: 129 129 log.msg(msg) 130 import pdb; pdb.set_trace()131 130 self.report_failure(msg) 132 131 self.restart() … … 734 733 return 735 734 736 factory = pb.PBClientFactory()737 735 self.factory = PBClientFactory() 738 736 try: -
sage/dsage/server/server.py
r7655 r7660 357 357 358 358 return count 359 360 def generate_xml_stats(self):361 """362 This method returns a an XML document to be consumed by the363 Mac OS X Dashboard widget and the web server.364 365 """366 367 def create_gauge(doc):368 gauge = doc.createElement('gauge')369 doc.appendChild(gauge)370 371 return doc, gauge372 373 def add_totalAgentCount(doc, gauge):374 totalAgentCount = doc.createElement('totalAgentCount')375 gauge.appendChild(totalAgentCount)376 working_workers = self.monitordb.get_worker_count(connected=True,377 busy=True)378 free_workers = self.monitordb.get_worker_count(connected=True,379 busy=False)380 disconnected_workers = self.monitordb.get_worker_count(381 connected=False,382 busy=False)383 total_workers = (working_workers +384 free_workers +385 disconnected_workers)386 count = doc.createTextNode(str(total_workers))387 totalAgentCount.appendChild(count)388 389 return doc, totalAgentCount390 391 def add_onlineAgentCount(doc, gauge):392 onlineAgentCount = doc.createElement('onlineAgentCount')393 gauge.appendChild(onlineAgentCount)394 free_workers = self.monitordb.get_worker_count(connected=True,395 busy=False)396 busy_workers = self.monitordb.get_worker_count(connected=True,397 busy=True)398 count = doc.createTextNode(str(free_workers + busy_workers))399 onlineAgentCount.appendChild(count)400 401 return doc, onlineAgentCount402 403 def add_offlineAgentCount(doc, gauge):404 offlineAgentCount = doc.createElement('offlineAgentCount')405 gauge.appendChild(offlineAgentCount)406 worker_count = self.monitordb.get_worker_count(connected=False,407 busy=False)408 count = doc.createTextNode(str(worker_count))409 offlineAgentCount.appendChild(count)410 411 return doc, offlineAgentCount412 413 def add_workingAgentCount(doc, gauge):414 workingAgentCount = doc.createElement('workingAgentCount')415 gauge.appendChild(workingAgentCount)416 worker_count = self.monitordb.get_worker_count(connected=True,417 busy=True)418 count = doc.createTextNode(str(worker_count))419 workingAgentCount.appendChild(count)420 421 return doc, workingAgentCount422 423 def add_availableAgentCount(doc, gauge):424 availableAgentCount = doc.createElement('availableAgentCount')425 gauge.appendChild(availableAgentCount)426 worker_count = self.monitordb.get_worker_count(connected=True,427 busy=False)428 count = doc.createTextNode(str(worker_count))429 availableAgentCount.appendChild(count)430 431 return doc, availableAgentCount432 433 def add_unavailableAgentCount(doc, gauge):434 unavailableAgentCount = doc.createElement('unavailableAgentCount')435 gauge.appendChild(unavailableAgentCount)436 worker_count = self.monitordb.get_worker_count(connected=True,437 busy=True)438 count = doc.createTextNode(str(worker_count))439 unavailableAgentCount.appendChild(count)440 441 return doc, unavailableAgentCount442 443 def add_workingMegaHertz(doc, gauge):444 workingMegaHertz = doc.createElement('workingMegaHertz')445 gauge.appendChild(workingMegaHertz)446 cpu_speed = self.monitordb.get_cpu_speed(connected=True,447 busy=True)448 mhz = doc.createTextNode(str(cpu_speed))449 workingMegaHertz.appendChild(mhz)450 451 return doc, workingMegaHertz452 453 def add_availableProcessorCount(doc, gauge):454 pass455 456 def add_unavailableProcessorCount(doc, gauge):457 pass458 459 def add_onlineProcessorCount(doc, gauge):460 onlineProcessorCount = doc.createElement('onlineProcessorCount')461 gauge.appendChild(onlineProcessorCount)462 cpu_count = self.monitordb.get_cpu_count(connected=True)463 c = doc.createTextNode(str(cpu_count))464 onlineProcessorCount.appendChild(c)465 466 return doc, onlineProcessorCount467 468 def add_offlineProcessorCount(doc, gauge):469 offlineProcessorCount = doc.createElement('offlineProcessorCount')470 gauge.appendChild(offlineProcessorCount)471 cpu_count = self.monitordb.get_cpu_count(connected=False)472 c = doc.createTextNode(str(cpu_count))473 offlineProcessorCount.appendChild(c)474 475 return doc, offlineProcessorCount476 477 def add_workingProcessorCount(doc, gauge):478 workingProcessorCount = doc.createElement('workingProcessorCount')479 gauge.appendChild(workingProcessorCount)480 worker_count = self.monitordb.get_cpu_count(connected=True)481 pcount = doc.createTextNode(str(worker_count))482 workingProcessorCount.appendChild(pcount)483 484 return doc, workingProcessorCount485 486 def add_workingAgentPercentage(doc, gauge):487 workingAgentPercentage = doc.createElement(488 'workingAgentPercentage')489 gauge.appendChild(workingAgentPercentage)490 working_workers = self.monitordb.get_worker_count(connected=True,491 busy=True)492 free_workers = self.monitordb.get_worker_count(connected=True,493 busy=False)494 disconnected_workers = self.monitordb.get_worker_count(495 connected=False,496 busy=False)497 total_workers = (working_workers +498 free_workers +499 disconnected_workers)500 501 if total_workers != 0:502 worker_percentage = (float(working_workers / total_workers) *503 100)504 else:505 worker_percentage = 0.0506 percentage = doc.createTextNode(str(worker_percentage))507 workingAgentPercentage.appendChild(percentage)508 509 return doc, workingAgentPercentage510 511 def add_date(doc, gauge):512 date = datetime.datetime.now()513 514 year = doc.createElement('Year')515 gauge.appendChild(year)516 year.appendChild(doc.createTextNode(str(date.year)))517 518 seconds = doc.createElement('Seconds')519 gauge.appendChild(seconds)520 seconds.appendChild(doc.createTextNode(str(date.second)))521 522 minutes = doc.createElement('Minutes')523 gauge.appendChild(minutes)524 minutes.appendChild(doc.createTextNode(str(date.minute)))525 526 return doc, year, seconds, minutes527 528 doc = xml.dom.minidom.Document()529 doc, gauge = create_gauge(doc)530 531 add_onlineAgentCount(doc, gauge)532 add_offlineAgentCount(doc, gauge)533 add_availableAgentCount(doc, gauge)534 add_unavailableAgentCount(doc, gauge)535 add_totalAgentCount(doc, gauge)536 add_workingAgentCount(doc, gauge)537 add_workingAgentPercentage(doc, gauge)538 add_onlineProcessorCount(doc, gauge)539 add_availableProcessorCount(doc, gauge)540 add_unavailableProcessorCount(doc, gauge)541 add_workingProcessorCount(doc, gauge)542 add_workingMegaHertz(doc, gauge)543 544 add_date(doc, gauge)545 s = cStringIO.StringIO()546 doc.writexml(s, newl='\n')547 548 return s.getvalue()549 359 550 360 class DSageWorkerServer(DSageServer): -
sage/dsage/server/stats.py
r7658 r7660 22 22 dump, 23 23 XML) 24 from cStringIO import StringIO 24 25 25 class XMLStats( self, dsage_server):26 class XMLStats(object): 26 27 """ 27 28 Generates a XML document containing statistics for the server. … … 36 37 def gen_xml(self): 37 38 self.add_workers() 38 self.add_ working_mhz()39 self.add_mhz() 39 40 40 return dump(self.root) 41 xml_stream = StringIO() 42 ET(self.root).write(xml_stream) 43 44 return xml_stream.getvalue() 45 46 def add_element(self, element, value): 47 SubElement(self.root, element).text = str(value) 41 48 42 49 def add_workers(self): … … 50 57 free_workers = self.monitordb.get_worker_count(connected=True, 51 58 busy=False) 52 offline_workers = self.monitordb.get_worker_count(connected=False)53 total_workers = (working_workers +54 free_workers +55 disconnected_workers)56 59 57 bw = SubElement(self.root, 'busy_workers') 58 bw.text = busy_workers 59 fw = SubElement(self.root, 'free_workers') 60 fw.text = free_workers 61 ow = SubElement(self.root, 'offline_workers') 62 ow.text = offline_workers 63 tw = SubElement(self.root, 'total_workers') 64 tw.text = total_workers 60 self.add_element('busy_workers', busy_workers) 61 self.add_element('free_workers', free_workers) 65 62 66 def add_ working_mhz(self):63 def add_mhz(self): 67 64 """ 68 65 Adds the current working MHz to root.""" … … 70 67 working_mhz = self.monitordb.get_cpu_speed(connected=True, 71 68 busy=True) 72 wm = SubElement(self.root, 'working_mhz') 73 wm.text = working_mhz 74 75 # def generate_xml_stats(self): 76 # """ 77 # This method returns a an XML document to be consumed by the 78 # Mac OS X Dashboard widget and the web server. 79 # 80 # """ 81 # 82 # def add_onlineProcessorCount(doc, gauge): 83 # onlineProcessorCount = doc.createElement('onlineProcessorCount') 84 # gauge.appendChild(onlineProcessorCount) 85 # cpu_count = self.monitordb.get_cpu_count(connected=True) 86 # c = doc.createTextNode(str(cpu_count)) 87 # onlineProcessorCount.appendChild(c) 88 # 89 # return doc, onlineProcessorCount 90 # 91 # def add_offlineProcessorCount(doc, gauge): 92 # offlineProcessorCount = doc.createElement('offlineProcessorCount') 93 # gauge.appendChild(offlineProcessorCount) 94 # cpu_count = self.monitordb.get_cpu_count(connected=False) 95 # c = doc.createTextNode(str(cpu_count)) 96 # offlineProcessorCount.appendChild(c) 97 # 98 # return doc, offlineProcessorCount 99 # 100 # def add_workingProcessorCount(doc, gauge): 101 # workingProcessorCount = doc.createElement('workingProcessorCount') 102 # gauge.appendChild(workingProcessorCount) 103 # worker_count = self.monitordb.get_cpu_count(connected=True) 104 # pcount = doc.createTextNode(str(worker_count)) 105 # workingProcessorCount.appendChild(pcount) 106 # 107 # return doc, workingProcessorCount 108 # 109 # def add_workingAgentPercentage(doc, gauge): 110 # workingAgentPercentage = doc.createElement( 111 # 'workingAgentPercentage') 112 # gauge.appendChild(workingAgentPercentage) 113 # working_workers = self.monitordb.get_worker_count(connected=True, 114 # busy=True) 115 # free_workers = self.monitordb.get_worker_count(connected=True, 116 # busy=False) 117 # disconnected_workers = self.monitordb.get_worker_count( 118 # connected=False, 119 # busy=False) 120 # total_workers = (working_workers + 121 # free_workers + 122 # disconnected_workers) 123 # 124 # if total_workers != 0: 125 # worker_percentage = (float(working_workers / total_workers) * 126 # 100) 127 # else: 128 # worker_percentage = 0.0 129 # percentage = doc.createTextNode(str(worker_percentage)) 130 # workingAgentPercentage.appendChild(percentage) 131 # 132 # return doc, workingAgentPercentage 133 # 134 # def add_date(doc, gauge): 135 # date = datetime.datetime.now() 136 # 137 # year = doc.createElement('Year') 138 # gauge.appendChild(year) 139 # year.appendChild(doc.createTextNode(str(date.year))) 140 # 141 # seconds = doc.createElement('Seconds') 142 # gauge.appendChild(seconds) 143 # seconds.appendChild(doc.createTextNode(str(date.second))) 144 # 145 # minutes = doc.createElement('Minutes') 146 # gauge.appendChild(minutes) 147 # minutes.appendChild(doc.createTextNode(str(date.minute))) 148 # 149 # return doc, year, seconds, minutes 150 # 151 # doc = xml.dom.minidom.Document() 152 # doc, gauge = create_gauge(doc) 153 # 154 # add_onlineAgentCount(doc, gauge) 155 # add_offlineAgentCount(doc, gauge) 156 # add_availableAgentCount(doc, gauge) 157 # add_unavailableAgentCount(doc, gauge) 158 # add_totalAgentCount(doc, gauge) 159 # add_workingAgentCount(doc, gauge) 160 # add_workingAgentPercentage(doc, gauge) 161 # add_onlineProcessorCount(doc, gauge) 162 # add_availableProcessorCount(doc, gauge) 163 # add_unavailableProcessorCount(doc, gauge) 164 # add_workingProcessorCount(doc, gauge) 165 # add_workingMegaHertz(doc, gauge) 166 # 167 # add_date(doc, gauge) 168 # s = cStringIO.StringIO() 169 # doc.writexml(s, newl='\n') 170 # 171 # return s.getvalue() 69 total_mhz = self.monitordb.get_cpu_speed(connected=True, 70 busy=False) 71 72 self.add_element('working_mhz', working_mhz) 73 self.add_element('total_mhz', total_mhz) -
sage/dsage/web/web_server.py
r7658 r7660 29 29 from sage.dsage.server.stats import XMLStats 30 30 31 from xml.etree.ElementTree import (ElementTree as ET, 32 Element, 33 SubElement, 34 dump, 35 XML) 36 31 37 SAGE_ROOT = os.environ['SAGE_ROOT'] 32 38 DSAGE_LOCAL = SAGE_ROOT + '/local/dsage' … … 219 225 class GetServerDetails(resource.PostableResource): 220 226 """ 221 Returns an XML file containing the server resources.227 Returns an HTML table containing the server resources. 222 228 223 229 """ … … 225 231 def __init__(self, dsage_server): 226 232 self.dsage_server = dsage_server 227 228 def gen_html(self, stats_xml): 233 self.xml_stats = XMLStats(self.dsage_server) 234 235 def gen_html(self): 229 236 """ 230 237 generates html snippet from xml stats 231 238 232 239 """ 233 234 from xml.etree.ElementTree import (ElementTree as ET, 235 Element, 236 SubElement, 237 dump, 238 XML) 239 240 mapping = {'onlineAgentCount': 'Online Workers', 241 'offlineAgentCount': 'Offline Workers', 242 'totalAgentCount': 'Total Workers', 243 'onlineProcessorCount': 'Online CPUs', 244 'workingProcessorCount': 'Working CPUs', 245 'workingAgentPercentage': 'Working %'} 246 # html = """ 247 # <thead> 248 # <tr> 249 # <th>Online Workers</th> 250 # <th>Offline Workers</th> 251 # <th>Total Workers</th> 252 # <th>Online Processors</th> 253 # <th>Working Processors</th> 254 # <th>Working MHz</th> 255 # <th>Percent Working</th> 256 # </tr> 257 # </thead> 258 # <tbody> 259 # """ 260 # 240 241 self.xml_stats.gen_xml() 242 261 243 html = """ 262 244 <thead> … … 265 247 <th>Value</th> 266 248 <tbody>""" 267 # build StringIO object 268 tree = ET() 269 tree.parse(StringIO(stats_xml)) 270 root = tree.getroot() 271 for i, elem in enumerate(root.getchildren()): 272 if elem.tag in ('onlineAgentCount', 273 'offlineAgentCount', 274 'totalAgentCount', 275 'onlineProcessorCount', 276 'workingProcessorCount', 277 'workingAgentPercentage'): 249 250 for i, elem in enumerate(self.xml_stats.root.getchildren()): 278 251 html += """ 279 252 <tr> … … 281 254 <td>%s</td> 282 255 </tr> 283 """ % (mapping[elem.tag], elem.text) 256 """ % (' '.join(w.title() for w in elem.tag.split("_")), 257 elem.text) 284 258 285 259 html += """ … … 294 268 295 269 """ 296 297 298 stats_xml = XMLStats(self.dsage_server).gen_xml() 299 300 # html = self.gen_html(stats_xml) 301 302 return http.Response(stream=stats_xml) 270 271 return http.Response(stream=self.gen_html())
Note: See TracChangeset
for help on using the changeset viewer.
