Demon has uploaded a new change for review.

  https://gerrit.wikimedia.org/r/52729


Change subject: Fix various noc files to be pep8 compliant
......................................................................

Fix various noc files to be pep8 compliant

Change-Id: I933e9d58c9b4403c66a61d2c6399c6cb5b78ff0b
---
M files/cgi-bin/noc/extractprofile.py
M files/cgi-bin/noc/ng/admin.py
M files/cgi-bin/noc/ng/extractprofile.py
M files/cgi-bin/noc/ng/report.py
M files/cgi-bin/noc/rep.py
M files/cgi-bin/noc/report.py
6 files changed, 372 insertions(+), 346 deletions(-)


  git pull ssh://gerrit.wikimedia.org:29418/operations/puppet 
refs/changes/29/52729/1

diff --git a/files/cgi-bin/noc/extractprofile.py 
b/files/cgi-bin/noc/extractprofile.py
index a18967d..8cada4b 100755
--- a/files/cgi-bin/noc/extractprofile.py
+++ b/files/cgi-bin/noc/extractprofile.py
@@ -2,73 +2,71 @@
 # encoding: utf-8
 
 #####################################################################
-### THIS FILE IS MANAGED BY PUPPET 
+### THIS FILE IS MANAGED BY PUPPET
 ### puppet:///files/cgi-bin/noc/extractprofile.py
 #####################################################################
 
 # showprofile
 # Copyright (c) 2006 Domas Mituzas
 
-import sys
-import os
-
 import xml.sax
-from xml.sax import saxutils
 from xml.sax import make_parser
 from xml.sax.handler import feature_namespaces
 
+
 class ExtractProfile(xml.sax.handler.ContentHandler):
-       def __init__(self):
-               self.parser=make_parser()
-               self.parser.setFeature(feature_namespaces,0)
-               self.parser.setContentHandler(self)
-       def startElement(self,name,attrs):
-               if name=="db":
-                       self.db=attrs.get("name")
-                       self.profile[self.db]={}
-               if name=="host":
-                       self.host=attrs.get("name")
-                       self.profile[self.db][self.host]={}
-               if name=="eventname":
-                       self.inContent=1
-                       self.contentData=[]
-               if name=="stats":
-                       self.event["count"]=int(attrs.get("count"))
-               if name=="cputime":
-                       self.event["cpu"]=float(attrs.get("total"))
-                       self.event["cpusq"]=float(attrs.get("totalsq"))
-               if name=="realtime":
-                       self.event["real"]=float(attrs.get("total"))
-                       self.event["realsq"]=float(attrs.get("totalsq"))
-                       
-       def endElement(self,name):
-               if name=="eventname":
-                       self.inContent=0
-                       self.eventname = "".join(self.contentData)
-                       self.profile[self.db][self.host][self.eventname]={}
-                       
self.event=self.profile[self.db][self.host][self.eventname]
-               if name=="stats":
-                       if self.event["count"]:
-                               
self.event["onereal"]=self.event["real"]/self.event["count"]
-                               
self.event["onecpu"]=self.event["cpu"]/self.event["count"]
-                       else:
-                               self.event["onereal"]=0
-                               self.event["onecpu"]=0
+    def __init__(self):
+        self.parser = make_parser()
+        self.parser.setFeature(feature_namespaces, 0)
+        self.parser.setContentHandler(self)
 
-       def characters(self,chars):
-               if self.inContent:
-                       self.contentData.append(chars)
+    def startElement(self, name, attrs):
+        if name == "db":
+            self.db = attrs.get("name")
+            self.profile[self.db] = {}
+        if name == "host":
+            self.host = attrs.get("name")
+            self.profile[self.db][self.host] = {}
+        if name == "eventname":
+            self.inContent = 1
+            self.contentData = []
+        if name == "stats":
+            self.event["count"] = int(attrs.get("count"))
+        if name == "cputime":
+            self.event["cpu"] = float(attrs.get("total"))
+            self.event["cpusq"] = float(attrs.get("totalsq"))
+        if name == "realtime":
+            self.event["real"] = float(attrs.get("total"))
+            self.event["realsq"] = float(attrs.get("totalsq"))
 
-       def getProfile(self):
-               return self.profile
+    def endElement(self, name):
+        if name == "eventname":
+            self.inContent = 0
+            self.eventname = "".join(self.contentData)
+            self.profile[self.db][self.host][self.eventname] = {}
+            self.event = self.profile[self.db][self.host][self.eventname]
+        if name == "stats":
+            if self.event["count"]:
+                self.event["onereal"] = self.event["real"] / 
self.event["count"]
+                self.event["onecpu"] = self.event["cpu"] / self.event["count"]
+            else:
+                self.event["onereal"] = 0
+                self.event["onecpu"] = 0
 
-       def extract(self,file=False):
-               if (file==False):
-                       file=open("profile.xml")
-               self.profile={}
-               self.inContent=0
-               self.parser.parse(file)
-               return self.profile
+    def characters(self, chars):
+        if self.inContent:
+            self.contentData.append(chars)
+
+    def getProfile(self):
+        return self.profile
+
+    def extract(self, file=False):
+        if not file:
+            file = open("profile.xml")
+        self.profile = {}
+        self.inContent = 0
+        self.parser.parse(file)
+        return self.profile
 
 if __name__ == '__main__':
         print "\nNot a valid entry point"
diff --git a/files/cgi-bin/noc/ng/admin.py b/files/cgi-bin/noc/ng/admin.py
index 1e2e20e..3561bf9 100755
--- a/files/cgi-bin/noc/ng/admin.py
+++ b/files/cgi-bin/noc/ng/admin.py
@@ -1,57 +1,58 @@
 #!/usr/bin/python
 #####################################################################
-### THIS FILE IS MANAGED BY PUPPET 
+### THIS FILE IS MANAGED BY PUPPET
 ### puppet:///files/cgi-bin/noc/ng/admin.py
 #####################################################################
 
 import shelve
 import cgi
-import cgitb; cgitb.enable()
+import cgitb
+cgitb.enable()
 
 import datetime
 import sys
 import config
 
-password=config.password
+password = config.password
 
 print "Content-type: text/html\n"
 
-form=cgi.SvFormContentDict()
+form = cgi.SvFormContentDict()
 
 if 'password' in form:
-       if form['password'] != "" and form['password'] != password: 
-               print "access denied!!!!!!!!!1111oneoneeleven"
-               sys.exit()
-       else:
-               authed=True
+    if form['password'] != "" and form['password'] != password:
+        print "access denied!!!!!!!!!1111oneoneeleven"
+        sys.exit()
+    else:
+        authed = True
 else:
-       authed=False
+    authed = False
 
 print """
-       <script>function deletesample(sample) 
{form=document.forms['actions'];form['sample'].value=sample;form.submit();}</script>
-       <form name='actions' method='POST' action='admin.py'>
-       <input type='submit' name='action' value='take'>
-       <input type='submit' name='action' value='clear'>
-       <input type='hidden' name='sample' value=''>
-       <input type='%s' name='password' value='%s'
-       </form>""" % ((authed and 'hidden' or 'password'),(authed and password 
or ''))
+    <script>function deletesample(sample) 
{form=document.forms['actions'];form['sample'].value=sample;form.submit();}</script>
+    <form name='actions' method='POST' action='admin.py'>
+    <input type='submit' name='action' value='take'>
+    <input type='submit' name='action' value='clear'>
+    <input type='hidden' name='sample' value=''>
+    <input type='%s' name='password' value='%s'
+    </form>""" % ((authed and 'hidden' or 'password'), (authed and password or 
''))
 
 store = shelve.open('/var/run/profile-baselines')
 
 if 'action' not in form:
-       if 'sample' in form and authed:
-               del store[form['sample']]
+    if 'sample' in form and authed:
+        del store[form['sample']]
 elif form['action'] == 'clear' and authed:
-       from socket import *
-       sock = socket(AF_INET,SOCK_DGRAM)
-       sock.sendto('-truncate',(config.host,config.port))
+    from socket import *
+    sock = socket(AF_INET, SOCK_DGRAM)
+    sock.sendto('-truncate', (config.host, config.port))
 elif form['action'] == 'take' and authed:
-       from extractprofile import SocketProfile
-       store[str(datetime.datetime.now()).replace(" ","-")] = 
SocketProfile(config.host,config.port).extract()
+    from extractprofile import SocketProfile
+    store[str(datetime.datetime.now()).replace(" ", "-")] = 
SocketProfile(config.host, config.port).extract()
 elif 'sample' in form and authed:
-       del store[form['sample']]
+    del store[form['sample']]
 
 for entry in store.keys():
-       print """<div><a href='report.py?sample=%s'>%s</a> <a 
href='javascript:deletesample("%s")'>delete</a></div>""" % (entry,entry,entry)
-       
+    print """<div><a href='report.py?sample=%s'>%s</a> <a 
href='javascript:deletesample("%s")'>delete</a></div>""" % (entry, entry, entry)
+
 print "<div><a href='report.py'>current</a></div>"
diff --git a/files/cgi-bin/noc/ng/extractprofile.py 
b/files/cgi-bin/noc/ng/extractprofile.py
index 8cc92e3..a2de7ef 100755
--- a/files/cgi-bin/noc/ng/extractprofile.py
+++ b/files/cgi-bin/noc/ng/extractprofile.py
@@ -2,85 +2,86 @@
 # encoding: utf-8
 
 #####################################################################
-### THIS FILE IS MANAGED BY PUPPET 
+### THIS FILE IS MANAGED BY PUPPET
 ### puppet:///files/cgi-bin/noc/ng/extractprofile.py
 #####################################################################
 
 # showprofile
 # Copyright (c) 2006 Domas Mituzas
 
-
-import sys
-import os
 import socket
 
 import xml.sax
-from xml.sax import saxutils
 from xml.sax import make_parser
 from xml.sax.handler import feature_namespaces
 
+
 # XML SAX parser class, puts stuff into some array!
 class ExtractProfile(xml.sax.handler.ContentHandler):
-       def __init__(self):
-               self.parser=make_parser()
-               self.parser.setFeature(feature_namespaces,0)
-               self.parser.setContentHandler(self)
-       def startElement(self,name,attrs):
-               if name=="db":
-                       self.db=attrs.get("name")
-                       self.profile[self.db]={}
-               if name=="host":
-                       self.host=attrs.get("name")
-                       self.profile[self.db][self.host]={}
-               if name=="eventname":
-                       self.inContent=1
-                       self.contentData=[]
-               if name=="stats":
-                       self.event["count"]=int(attrs.get("count"))
-               if name=="cputime":
-                       self.event["cpu"]=float(attrs.get("total"))
-                       self.event["cpusq"]=float(attrs.get("totalsq"))
-               if name=="realtime":
-                       self.event["real"]=float(attrs.get("total"))
-                       self.event["realsq"]=float(attrs.get("totalsq"))
-                       
-       def endElement(self,name):
-               if name=="eventname":
-                       self.inContent=0
-                       self.eventname = "".join(self.contentData)
-                       self.profile[self.db][self.host][self.eventname]={}
-                       
self.event=self.profile[self.db][self.host][self.eventname]
-               if name=="stats":
-                       
self.event["onereal"]=self.event["real"]/self.event["count"]
-                       
self.event["onecpu"]=self.event["cpu"]/self.event["count"]
-       def characters(self,chars):
-               if self.inContent:
-                       self.contentData.append(chars)
+    def __init__(self):
+        self.parser = make_parser()
+        self.parser.setFeature(feature_namespaces, 0)
+        self.parser.setContentHandler(self)
 
-       def getProfile(self):
-               return self.profile
+    def startElement(self, name, attrs):
+        if name == "db":
+            self.db = attrs.get("name")
+            self.profile[self.db] = {}
+        if name == "host":
+            self.host = attrs.get("name")
+            self.profile[self.db][self.host] = {}
+        if name == "eventname":
+            self.inContent = 1
+            self.contentData = []
+        if name == "stats":
+            self.event["count"] = int(attrs.get("count"))
+        if name == "cputime":
+            self.event["cpu"] = float(attrs.get("total"))
+            self.event["cpusq"] = float(attrs.get("totalsq"))
+        if name == "realtime":
+            self.event["real"] = float(attrs.get("total"))
+            self.event["realsq"] = float(attrs.get("totalsq"))
 
-       def extract(self,file=False):
-               if (file==False):
-                       file=open("profile.xml")
-               self.profile={}
-               self.inContent=0
-               self.parser.parse(file)
-               return self.profile
-               
+    def endElement(self, name):
+        if name == "eventname":
+            self.inContent = 0
+            self.eventname = "".join(self.contentData)
+            self.profile[self.db][self.host][self.eventname] = {}
+            self.event = self.profile[self.db][self.host][self.eventname]
+        if name == "stats":
+            self.event["onereal"] = self.event["real"] / self.event["count"]
+            self.event["onecpu"] = self.event["cpu"] / self.event["count"]
+
+    def characters(self, chars):
+        if self.inContent:
+            self.contentData.append(chars)
+
+    def getProfile(self):
+        return self.profile
+
+    def extract(self, file=False):
+        if not file:
+            file = open("profile.xml")
+        self.profile = {}
+        self.inContent = 0
+        self.parser.parse(file)
+        return self.profile
+
+
 class SocketProfile:
-       def __init__(self,host='localhost',port=3811):
-               self.sock=SocketSource()
-               self.sock.connect((host,port))
-               
-       def extract(self):
-               return ExtractProfile().extract(self.sock)
-               
+    def __init__(self, host='localhost', port=3811):
+        self.sock = SocketSource()
+        self.sock.connect((host, port))
+
+    def extract(self):
+        return ExtractProfile().extract(self.sock)
+
+
 class SocketSource (socket.socket):
-       """Stub class for extending socket object to support file source 
mechanics"""
-       def read(self,what):
-               """Alias recv to read, missing in socket.socket"""
-               return self.recv(what,0)
+    """Stub class for extending socket object to support file source 
mechanics"""
+    def read(self, what):
+        """Alias recv to read, missing in socket.socket"""
+        return self.recv(what, 0)
 
 if __name__ == '__main__':
         print "\nNot a valid entry point"
diff --git a/files/cgi-bin/noc/ng/report.py b/files/cgi-bin/noc/ng/report.py
index a9e7a8a..005d8f2 100755
--- a/files/cgi-bin/noc/ng/report.py
+++ b/files/cgi-bin/noc/ng/report.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 
 #####################################################################
-### THIS FILE IS MANAGED BY PUPPET 
+### THIS FILE IS MANAGED BY PUPPET
 ### puppet:///files/cgi-bin/noc/ng/report.py
 #####################################################################
 
@@ -9,108 +9,114 @@
 
 import config
 
-db=config.db
+db = config.db
 
-sort="real"
-limit=50
+sort = "real"
+limit = 50
 
-prefix=""
+prefix = ""
 
 
 from extractprofile import SocketProfile
 
 import cgi
 import sys
-import cgitb; cgitb.enable()
+import cgitb
+cgitb.enable()
 
-import socket
 import shelve
 
-print "Content-type: text/html";
+print "Content-type: text/html"
 print "\n"
 
-form=cgi.SvFormContentDict()
+form = cgi.SvFormContentDict()
 store = shelve.open('/var/run/profile-baselines')
 
 if "db" in form:
-       db=form["db"]
+    db = form["db"]
 
 if "sort" in form:
-       sort=form["sort"]
+    sort = form["sort"]
 
-if "limit" in form: limit=int(form["limit"])
+if "limit" in form:
+    limit = int(form["limit"])
 
-if "prefix" in form: prefix=form["prefix"]
+if "prefix" in form:
+    prefix = form["prefix"]
 
 if "compare" in form:
-       compare=form["compare"]
-       compared=store[compare]
-else: 
-       compare=""
-       compared=None
+    compare = form["compare"]
+    compared = store[compare]
+else:
+    compare = ""
+    compared = None
 
 if 'sample' not in form:
-       fullprofile=SocketProfile(config.host,config.port).extract()
-       sample=""
+    fullprofile = SocketProfile(config.host, config.port).extract()
+    sample = ""
 else:
-       fullprofile=store[form['sample']]
-       sample=form['sample']
+    fullprofile = store[form['sample']]
+    sample = form['sample']
 
-
-
-dbs=fullprofile.keys()
-try: events=fullprofile[db]["-"].items()
-except KeyError: 
-       print "<div>OMG YOU DIDNT SELECT DB OR IT DOESNT EXIST</div>"
-       for dbname in dbs:
-               print " [<a href='report.py?db=%s'>%s</a>] "%(dbname,dbname)
-       sys.exit()
-total=fullprofile[db]["-"]["-total"]
+dbs = fullprofile.keys()
+try:
+    events = fullprofile[db]["-"].items()
+except KeyError:
+    print "<div>OMG YOU DIDNT SELECT DB OR IT DOESNT EXIST</div>"
+    for dbname in dbs:
+            print " [<a href='report.py?db=%s'>%s</a>] " % (dbname, dbname)
+    sys.exit()
+total = fullprofile[db]["-"]["-total"]
 
 # Limit the scope
 if compare:
-       compared=compared[db]["-"]
-       oldtotal=compared["-total"]
+    compared = compared[db]["-"]
+    oldtotal = compared["-total"]
 
 #cache.close()
-if sort=="name":
-    events.sort(lambda x,y: cmp(x[0],y[0]))
+if sort == "name":
+    events.sort(lambda x, y: cmp(x[0], y[0]))
 else:
-    events.sort(lambda y,x: cmp(x[1][sort],y[1][sort]))
+    events.sort(lambda y, x: cmp(x[1][sort], y[1][sort]))
 
-def surl(stype,stext=None,limit=50):
-       """ Simple URL formatter for headers """
-       if(stext==None): stext=stype
-       if stype==sort: return """<td><b>%s</b></td>"""%stext
-       return """<td><a 
href='report.py?db=%s&sort=%s&limit=%d&sample=%s&compare=%s&prefix=%s'>%s</a></td>"""%(db,stype,limit,sample,compare,prefix,stext)
+
+def surl(stype, stext=None, limit=50):
+    """ Simple URL formatter for headers """
+    if stext is None:
+        stext = stype
+    if stype == sort:
+        return """<td><b>%s</b></td>""" % stext
+    return """<td><a 
href='report.py?db=%s&sort=%s&limit=%d&sample=%s&compare=%s&prefix=%s'>%s</a></td>"""
 % (db, stype, limit, sample, compare, prefix, stext)
 
 print """
 <style>
 table { width: 100%; font-size: 9pt; }
-td { cell-padding: 1px; 
-       text-align: right; 
-       vertical-align: top;
-       argin: 2px;
-       border: 1px silver dotted;
-       white-space: nowrap; 
-       background-color: #eeeeee;
+td { cell-padding: 1px;
+    text-align: right;
+    vertical-align: top;
+    argin: 2px;
+    border: 1px silver dotted;
+    white-space: nowrap;
+    background-color: #eeeeee;
 }
 td.name { text-align: left; width: 100%; white-space: normal;}
 tr.head td { text-align: center; }
 </style>"""
 
 if sample:
-       print "<div>Using old sample: %s, <a href='report.py?db=%s'>reset to 
current</a></div>" % (sample,db)
+    print "<div>Using old sample: %s, <a href='report.py?db=%s'>reset to 
current</a></div>" % (sample, db)
 
 # Top list of databases
 for dbname in dbs:
-       if db == dbname: print " [%s] "%dbname
-       else: print " [<a href='report.py?db=%s'>%s</a>] "%(dbname,dbname)
+    if db == dbname:
+        print " [%s] " % dbname
+    else:
+        print " [<a href='report.py?db=%s'>%s</a>] " % (dbname, dbname)
 
-if limit==50:
-       print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&sample=%s&compare=%s&limit=5000'>show more</a> ] 
" % (limit,db,sort,sample,compare)
+if limit == 50:
+    print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&sample=%s&compare=%s&limit=5000'>show more</a> ] 
" % (limit, db, sort, sample, compare)
 else:
-       print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&sample=%s&compare=%s&limit=50'>show less</a> ] " 
% (limit,db,sort,sample,compare)
+    print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&sample=%s&compare=%s&limit=50'>show less</a> ] " 
% (limit, db, sort, sample, compare)
 
 print " [ <a href='admin.py'>admin</a> ]</div>"
 
@@ -119,12 +125,12 @@
 <input type='hidden' name='sort' value='%s'>
 <input type='hidden' name='limit' value='%d'>
 <input type='hidden' name='sample' value='%s'>
-<select name='compare'><option></option>""" %(db,sort,limit,sample)
+<select name='compare'><option></option>""" % (db, sort, limit, sample)
 
-samples=store.keys()
+samples = store.keys()
 samples.sort()
 for baseline in samples:
-       print "<option%s>%s</option>" % ((compare==baseline and " SELECTED" or 
""),baseline)
+    print "<option%s>%s</option>" % ((compare == baseline and " SELECTED" or 
""), baseline)
 print "</select><input type='submit' value='compare'></form>"
 
 
@@ -140,13 +146,13 @@
 #print "<td>change</td>"
 #print surl("onecpu","cpu/c")
 #print "<td>change</td>"
-print surl("real","real%")
+print surl("real", "real%")
 print "<td>change</td>"
-print surl("onereal","real/c")
+print surl("onereal", "real/c")
 print "<td>change</td>"
 print "</tr>"
 
-rowformat="""
+rowformat = """
 <tr class="data"><td class="name">%s</td><td>%d</td>
 <td>%.2f</td><td>%.1f</td><td>%.2f</td><td>%.1f</td></tr>"""
 
@@ -156,7 +162,7 @@
 # cputime: total compared percall compared
 # realtime: total compared percall compared
 
-comparedformat="""
+comparedformat = """
 <tr class="data"><td class="name">%s</td>
 <td>%d</td><td>%.2f</td><td>%.1f</td>
 <td>%.2f</td><td>%.1f</td><td>%.1f</td><td>%.1f</td>
@@ -165,63 +171,69 @@
 
 # This is really really hacky way of reporting percentages
 
-# And this is output of results. 
+# And this is output of results.
 for event in events:
-       (name,event)=event
-       if name=="close": continue
-       if not name.startswith(prefix): continue
-       if compared and name in compared: old=compared[name]
-       else: old=None
-       
-       limit-=1
-       if limit<0: break
-       
-       callcount=float(event["count"])/total["count"]
-       try: cpupct=event["cpu"]/total["cpu"]
-       except ZeroDivisionError: cpupct=0
-       onecpu=event["onecpu"]
-       realpct=event["real"]/total["real"]
-       onereal=event["onereal"]
-       
-       if old:
-               try:
-                       oldcount=float(old["count"])/oldtotal["count"]
-                       countdiff = (callcount-oldcount)/oldcount
-               
-                       oldcpupct = old["cpu"]/oldtotal["cpu"]
-                       cpupctdiff = (cpupct-oldcpupct)/oldcpupct
-               
-                       onecpudiff = ( onecpu - old["onecpu"] ) / old["onecpu"]
-               
-                       oldrealpct = old["real"]/oldtotal["real"]
-                       realpctdiff = (realpct-oldrealpct)/oldrealpct
-               
-                       onerealdiff = ( onereal - old["onereal"] ) / 
old["onereal"]
-               except ZeroDivisionError:
-                       countdiff=0
-                       cpupctdiff=0
-                       onecpudiff=0
-                       realpctdiff=0
-                       onerealdiff=0
-       else:
-               countdiff=0
-               cpupctdiff=0
-               onecpudiff=0
-               realpctdiff=0
-               onerealdiff=0
-       
-       dbg=0
-       
-       if dbg and name=="wfMsgReal": 
-               print old
-               print oldtotal
-               print event
-               print total
-       if not dbg: print comparedformat % (
-               name.replace(",",", "),
-               event["count"], callcount,countdiff*100,
-               realpct*100,realpctdiff*100,
-               onereal*1000,onerealdiff*100
-       )
+    (name, event) = event
+    if name == "close":
+        continue
+    if not name.startswith(prefix):
+        continue
+    if compared and name in compared:
+        old = compared[name]
+    else:
+        old = None
+
+    limit -= 1
+    if limit < 0:
+        break
+
+    callcount = float(event["count"]) / total["count"]
+    try:
+        cpupct = event["cpu"] / total["cpu"]
+    except ZeroDivisionError:
+        cpupct = 0
+    onecpu = event["onecpu"]
+    realpct = event["real"] / total["real"]
+    onereal = event["onereal"]
+
+    if old:
+        try:
+            oldcount = float(old["count"]) / oldtotal["count"]
+            countdiff = (callcount - oldcount) / oldcount
+
+            oldcpupct = old["cpu"] / oldtotal["cpu"]
+            cpupctdiff = (cpupct - oldcpupct) / oldcpupct
+
+            onecpudiff = (onecpu - old["onecpu"]) / old["onecpu"]
+
+            oldrealpct = old["real"] / oldtotal["real"]
+            realpctdiff = (realpct - oldrealpct) / oldrealpct
+
+            onerealdiff = (onereal - old["onereal"]) / old["onereal"]
+        except ZeroDivisionError:
+            countdiff = 0
+            cpupctdiff = 0
+            onecpudiff = 0
+            realpctdiff = 0
+            onerealdiff = 0
+    else:
+        countdiff = 0
+        cpupctdiff = 0
+        onecpudiff = 0
+        realpctdiff = 0
+        onerealdiff = 0
+
+    dbg = 0
+
+    if dbg and name == "wfMsgReal":
+        print old
+        print oldtotal
+        print event
+        print total
+    if not dbg:
+        print comparedformat % (name.replace(",", ", "),
+                                event["count"], callcount, countdiff * 100,
+                                realpct * 100, realpctdiff * 100,
+                                onereal * 1000, onerealdiff * 100)
 
 print "</table>"
diff --git a/files/cgi-bin/noc/rep.py b/files/cgi-bin/noc/rep.py
index c15d590..6215f7b 100755
--- a/files/cgi-bin/noc/rep.py
+++ b/files/cgi-bin/noc/rep.py
@@ -1,7 +1,7 @@
 #!/usr/bin/python
 
 #####################################################################
-### THIS FILE IS MANAGED BY PUPPET 
+### THIS FILE IS MANAGED BY PUPPET
 ### puppet:///files/cgi-bin/noc/rep.py
 #####################################################################
 
@@ -11,86 +11,95 @@
 profileport = 3811
 
 #db="enwiki"
-db="all"
-sort="real"
-limit=50
-prefix=""
+db = "all"
+sort = "real"
+limit = 50
+prefix = ""
 
 
 from extractprofile import ExtractProfile
 
 import cgi
-import cgitb; cgitb.enable()
+import cgitb
+cgitb.enable()
 
 import socket
 
-print "Content-type: text/html";
+print "Content-type: text/html"
 print "\n"
 
-form=cgi.SvFormContentDict()
+form = cgi.SvFormContentDict()
 
 if "db" in form:
-       db=form["db"]
+    db = form["db"]
 
 if "sort" in form:
-       sort=form["sort"]
+    sort = form["sort"]
 
 if "prefix" in form:
-       prefix=form["prefix"]
+    prefix = form["prefix"]
 
-if "limit" in form: limit=int(form["limit"])
+if "limit" in form:
+    limit = int(form["limit"])
 
-compare="none"
-if "compare" in form: compare=form["compare"]
+compare = "none"
+if "compare" in form:
+    compare = form["compare"]
+
 
 class SocketSource (socket.socket):
-    def read(self,what):
-        return self.recv(what,0)
-sock=SocketSource()
-sock.connect((profilehost,profileport))
+    def read(self, what):
+        return self.recv(what, 0)
+sock = SocketSource()
+sock.connect((profilehost, profileport))
 
-cache={}
-fullprofile=ExtractProfile().extract(sock)
-events=fullprofile[db]["-"].items()
-cache[db]=events
-cache["_dbs"]=fullprofile.keys()
-dbs=cache["_dbs"]
+cache = {}
+fullprofile = ExtractProfile().extract(sock)
+events = fullprofile[db]["-"].items()
+cache[db] = events
+cache["_dbs"] = fullprofile.keys()
+dbs = cache["_dbs"]
 
-total=fullprofile[db]["-"]["-total"]
+total = fullprofile[db]["-"]["-total"]
 
 #cache.close()
-if sort=="name":
-    events.sort(lambda x,y: cmp(x[0],y[0]))
+if sort == "name":
+    events.sort(lambda x, y: cmp(x[0], y[0]))
 else:
-    events.sort(lambda y,x: cmp(x[1][sort],y[1][sort]))
+    events.sort(lambda y, x: cmp(x[1][sort], y[1][sort]))
 
-def surl(stype,stext=None,limit=50):
-       if(stext==None): stext=stype
-       if stype==sort: return """<td>%s</td>"""%stext
-       return """<td><a 
href='report.py?db=%s&sort=%s&limit=%d'>%s</a></td>"""%(db,stype,limit,stext)
+
+def surl(stype, stext=None, limit=50):
+    if(stext is None):
+        stext = stype
+    if stype == sort:
+        return """<td>%s</td>""" % stext
+    return """<td><a href='report.py?db=%s&sort=%s&limit=%d'>%s</a></td>""" % 
(db, stype, limit, stext)
 
 print """
 <style>
 table { width: 100%; }
-td { cell-padding: 1px; 
-       text-align: right; 
-       vertical-align: top;
-       argin: 2px;
-       border: 1px silver dotted;
-       background-color: #eeeeee;
+td { cell-padding: 1px;
+    text-align: right;
+    vertical-align: top;
+    margin: 2px;
+    border: 1px silver dotted;
+    background-color: #eeeeee;
 }
 td.name { text-align: left; width: 100%;}
 tr.head td { text-align: center; }
 </style>"""
 
 for dbname in dbs:
-       if db == dbname: print " [%s] "%dbname
-       else: print " [<a href='report.py?db=%s'>%s</a>] "%(dbname,dbname)
+    if db == dbname:
+        print " [%s] " % dbname
+    else:
+        print " [<a href='report.py?db=%s'>%s</a>] " % (dbname, dbname)
 
-if limit==50:
-       print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&limit=5000'>show more</a> ] " % (limit,db,sort)
+if limit == 50:
+    print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&limit=5000'>show more</a> ] " % (limit, db, sort)
 else:
-       print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&limit=50'>show less</a> ] " % (limit,db,sort)
+    print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&limit=50'>show less</a> ] " % (limit, db, sort)
 
 
 print """
@@ -98,22 +107,25 @@
 <tr class="head">"""
 print surl("name")
 print surl("count")
-print surl("cpu","cpu%")
-print surl("onecpu","cpu/c")
-print surl("real","real%")
-print surl("onereal","real/c")
+print surl("cpu", "cpu%")
+print surl("onecpu", "cpu/c")
+print surl("real", "real%")
+print surl("onereal", "real/c")
 print "</tr>"
 
-rowformat="""<tr class="data"><td class="name">%s</td><td>%d</td>
-       <td>%.3g</td><td>%.3g</td><td>%.3g</td><td>%.3g</td></tr>"""
+rowformat = """<tr class="data"><td class="name">%s</td><td>%d</td>
+    <td>%.3g</td><td>%.3g</td><td>%.3g</td><td>%.3g</td></tr>"""
 
 for event in events:
-       if event[0]=="close": continue
-       if not event[0].startswith(prefix): continue 
-       limit-=1
-       if limit<0: break
-       print rowformat % \
-               (event[0].replace(",",", 
"),event[1]["count"],event[1]["cpu"]/total["cpu"]*100,event[1]["onecpu"]*1000,\
-                       
event[1]["real"]/total["real"]*100,event[1]["onereal"]*1000)
+    if event[0] == "close":
+        continue
+    if not event[0].startswith(prefix):
+        continue
+    limit -= 1
+    if limit < 0:
+        break
+    print rowformat % \
+        (event[0].replace(",", ", "), event[1]["count"], event[1]["cpu"] / 
total["cpu"] * 100, event[1]["onecpu"] * 1000,
+         event[1]["real"] / total["real"] * 100, event[1]["onereal"] * 1000)
 
 print "</table>"
diff --git a/files/cgi-bin/noc/report.py b/files/cgi-bin/noc/report.py
index 86067e7..b772e92 100755
--- a/files/cgi-bin/noc/report.py
+++ b/files/cgi-bin/noc/report.py
@@ -10,23 +10,24 @@
 profilehost = "professor.pmtpa.wmnet"
 profileport = 3811
 
-db="all"
-sort="real"
-limit=50
-prefix=""
+db = "all"
+sort = "real"
+limit = 50
+prefix = ""
 
 
 from extractprofile import ExtractProfile
 
 import cgi
-import cgitb; cgitb.enable()
+import cgitb
+cgitb.enable()
 
 import socket
 import codecs
 import sys
 
 
-print "Content-type: text/html; charset=utf-8";
+print "Content-type: text/html; charset=utf-8"
 print "\n"
 
 utf8 = codecs.getencoder("UTF-8")
@@ -42,48 +43,49 @@
     prefix = form["prefix"]
 
 if "limit" in form:
-    limit=int(form["limit"])
+    limit = int(form["limit"])
 
-compare="none"
+compare = "none"
 if "compare" in form:
     compare = form["compare"]
+
 
 class SocketSource (socket.socket):
     def read(self, what):
         enc = self.recv(what, 0)
         return enc.decode('latin-1').encode('utf-8')
 
-sock=SocketSource()
+sock = SocketSource()
 sock.connect((profilehost, profileport))
 
-cache={}
-fullprofile=ExtractProfile().extract(sock)
+cache = {}
+fullprofile = ExtractProfile().extract(sock)
 try:
-    events=fullprofile[db]["-"].items()
+    events = fullprofile[db]["-"].items()
 except KeyError:
     for dbname in fullprofile.keys():
         print " [<a href='report.py?db=%s'>%s</a>] " % (dbname, dbname)
         sys.exit(0)
-    
 
-cache[db]=events
-cache["_dbs"]=fullprofile.keys()
-dbs=cache["_dbs"]
+cache[db] = events
+cache["_dbs"] = fullprofile.keys()
+dbs = cache["_dbs"]
 
-total=fullprofile[db]["-"]["-total"]
+total = fullprofile[db]["-"]["-total"]
 
 #cache.close()
-if sort=="name":
-    events.sort(lambda x,y: cmp(x[0], y[0]))
+if sort == "name":
+    events.sort(lambda x, y: cmp(x[0], y[0]))
 else:
-    events.sort(lambda y,x: cmp(x[1][sort], y[1][sort]))
+    events.sort(lambda y, x: cmp(x[1][sort], y[1][sort]))
+
 
 def surl(stype, stext=None, limit=50):
-    if (stext == None):
+    if (stext is None):
         stext = stype
 
     if stype == sort:
-        return """<td>%s</td>"""%stext
+        return """<td>%s</td>""" % stext
     return """<td><a href='report.py?db=%s&sort=%s&limit=%d'>%s</a></td>""" % 
(db, stype, limit, stext)
 
 print """
@@ -102,11 +104,11 @@
 
 for dbname in dbs:
     if db == dbname:
-        print " [%s] "% dbname
+        print " [%s] " % dbname
     else:
         print " [<a href='report.py?db=%s'>%s</a>] " % (dbname, dbname)
 
-if limit==50:
+if limit == 50:
     print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&limit=5000'>show more</a> ] " % (limit, db, sort)
 else:
     print " [ showing %d events, <a 
href='report.py?db=%s&sort=%s&limit=50'>show less</a> ] " % (limit, db, sort)
@@ -117,10 +119,10 @@
 <tr class="head">"""
 print surl("name")
 print surl("count")
-print surl("cpu","cpu%")
-print surl("onecpu","cpu/c")
-print surl("real","real%")
-print surl("onereal","real/c")
+print surl("cpu", "cpu%")
+print surl("onecpu", "cpu/c")
+print surl("real", "real%")
+print surl("onereal", "real/c")
 print "</tr>"
 
 rowformat = u"""<tr class="data"><td class="name">%s</td><td>%d</td>
@@ -131,12 +133,12 @@
         continue
     if not event[0].startswith(prefix):
         continue
-        
+
     limit -= 1
     if limit < 0:
         break
     row = rowformat % \
-        (event[0].replace(",",", "), event[1]["count"], event[1]["cpu"] / 
total["cpu"] * 100, event[1]["onecpu"]  *1000,
+        (event[0].replace(",", ", "), event[1]["count"], event[1]["cpu"] / 
total["cpu"] * 100, event[1]["onecpu"] * 1000,
             event[1]["real"] / total["real"] * 100, event[1]["onereal"] * 1000)
     print utf8(row)[0]
 

-- 
To view, visit https://gerrit.wikimedia.org/r/52729
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I933e9d58c9b4403c66a61d2c6399c6cb5b78ff0b
Gerrit-PatchSet: 1
Gerrit-Project: operations/puppet
Gerrit-Branch: production
Gerrit-Owner: Demon <[email protected]>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to