diff options
| author | James Meyer <james.meyer@operamail.com> | 2008-11-09 02:33:48 (GMT) | 
|---|---|---|
| committer | James Meyer <james.meyer@operamail.com> | 2008-11-09 02:33:48 (GMT) | 
| commit | 7cd3835eeb8d64936731b10395836be332705fb8 (patch) | |
| tree | aab766a765784c2e5d71c0f4f902e35e08b4c51f /abs/mv-core/hobbitmon/hbnotes.py | |
| parent | 1ba69cc033dfbd0a6c4c29c6d877c7e753f96e8e (diff) | |
| download | linhes_pkgbuild-7cd3835eeb8d64936731b10395836be332705fb8.zip linhes_pkgbuild-7cd3835eeb8d64936731b10395836be332705fb8.tar.gz linhes_pkgbuild-7cd3835eeb8d64936731b10395836be332705fb8.tar.bz2  | |
hobbit server
Diffstat (limited to 'abs/mv-core/hobbitmon/hbnotes.py')
| -rwxr-xr-x | abs/mv-core/hobbitmon/hbnotes.py | 357 | 
1 files changed, 357 insertions, 0 deletions
diff --git a/abs/mv-core/hobbitmon/hbnotes.py b/abs/mv-core/hobbitmon/hbnotes.py new file mode 100755 index 0000000..b7ef16b --- /dev/null +++ b/abs/mv-core/hobbitmon/hbnotes.py @@ -0,0 +1,357 @@ +#!/usr/bin/python +# import MySQL module + +import MySQLdb +import sys +import getopt +import socket +import os +global ignorehostlist +try: +    import  ignoreclient +    ignorehostlist=ignoreclient.ignorehosts +except: +    print "could not find the ignore list" +    ignorehostlist="'ignoreme'" + + + + + +def createdropdown(): +    dropdown=''' +     <input name="param2" type="radio"  value="Restore" />Restore database </> +     <select name="param1"> +    ''' +    dir = "/data/database_backup" +    files = os.listdir(dir) +    for file in os.listdir(dir): +        if (file.endswith(".tgz")): +            dropdown+='<option value="' + file + '">' + file + '</option> ' +    dropdown+='</select> <br><input name="param2" type="radio" value="Backup" checked="checked" />Backup database<br />  ' +    dropdown+='<input name="param2" type="radio" value="Optimize"  />Optimize database<br />  ' +    dropdown+='<input name="param2" type="radio" value="ShutdownAll"  />Shutdown All Systems (expect MBE)<br />  ' +    dropdown+='''<input name="param2" type="radio"  value="UpdateAll" />Update All Systems </>           <select name="param5"> +                   <option value="Myth_only">Myth only</option> +                   <option value="All"> Full System</option> +           </select> +	   </br> +	   </br> +           </br>''' +    return dropdown + +def main(argv): +    db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg") + +    # create a cursor +    cursor = db.cursor() +#------------------------------write client-config------------------------------------------------ +    SQL="SELECT DISTINCT(hostname) from settings where hostname not in(%s)" +    cursor.execute(SQL %ignorehostlist) +    result = cursor.fetchall() +    frontonly="_FRONTEND_" +    masterbackend="_MASTERBACKEND_" +    masterbacked_w_fe="_MASTERFE_" +    slave_w_fe="_SLAVEFE_" +    slave="_SLAVEBACKEND_" +    stand_alone="_STANDALONE_" +    dotMBE="" +    dotfrontend=list() +    dotslave=list() +    dotslavefe=list() +    tunerdict = {} +    for row in result: +  #     print row[0] +   #Find the system type +       cursor.execute("select value,data  from settings where hostname=%s and value in ('HostSystemType','HostRunFrontend');",(row)) +       hostvalues=cursor.fetchall() +       if  len(hostvalues) == 2: +          if hostvalues[1][1] == 'Frontend_only': +             frontonly+=","+row[0] +             dotfrontend.append(row[0]) + +          elif hostvalues[1][1] == 'Standalone': +             stand_alone+=","+row[0] +             dotMBE="MBE" + " [ label=\"" + row[0]  + "  \\n Standalone  \" shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/be.png\"  fontcolor=\"white\"  color=blue4 style=filled   ] " +             dotfrontend.append(row[0]) +             cursor.execute("select cardtype,defaultinput  from capturecard  where hostname=%s;",(row)) +             tuners=cursor.fetchall() +             tstring="" + +             if len(tuners) == 0: +                 tunerdict["MBE"]="no tuners \\n" +             else: +                for t in tuners: +                    tstring+=t[0] +                    tstring+=t[1] +                    tstring+='\\n' +                    tunerdict["MBE"]=tstring + +          elif hostvalues[1][1] == 'Master_backend': +              if hostvalues[0][1]=='0': +                  masterbackend+=","+row[0] +                  dotMBE=row[0] + "\\n Master Backend" +              else: +                  masterbacked_w_fe+=","+row[0] +                  dotMBE="MBE" + " [ label=\"" + row[0]  + "  \\n Master Backend with frontend  \" shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/be.png\"  fontcolor=\"white\"  color=blue4 style=filled   ] " +                  cursor.execute("select cardtype,defaultinput  from capturecard  where hostname=%s;",(row)) +                  tuners=cursor.fetchall() +                  tstring="" + +                  if len(tuners) == 0: +                    tunerdict["MBE"]="no tuners \\n" +                  else: +                    for t in tuners: +                            tstring+=t[0] +                            tstring+=t[1] +                            tstring+='\\n' +                            tunerdict["MBE"]=tstring +                  dotfrontend.append(row[0]) + +          elif hostvalues[1][1] == 'Slave_backend': +              if hostvalues[0][1]=='0': +                  slave+=","+row[0] +                  dotslave.append(row[0]) +                  cursor.execute("select cardtype,defaultinput  from capturecard  where hostname=%s;",(row)) +                  tuners=cursor.fetchall() +                  tstring="" +                  for t in tuners: +                        tstring+=t[0] +                        tstring+=t[1] +                        tstring+='\\n' +                  tunerdict["STUNER"+row[0]]=tstring +                  #dotfrontend.append(row[0]) +              else: +                  cursor.execute("select cardtype,defaultinput  from capturecard  where hostname=%s;",(row)) +                  tuners=cursor.fetchall() +                  tstring="" +                  for t in tuners: +                        tstring+=t[0] +                        tstring+=t[1] +                        tstring+='\\n' +                  tunerdict["STUNER"+row[0]]=tstring +                  print tstring + +                  slave_w_fe+=","+row[0] +                  dotslave.append(row[0]) +                  dotfrontend.append(row[0]) + +#----------------------------------Create graphviz dot files +    dotfilename="/data/srv/hobbit/server/etc/mythdot" + +    dotfile=open(dotfilename,'w') +    dotfile.write("digraph G {   " + "\n" ) +    dotfile.write("graph [bgcolor=transparent]" + "\n" ) + + +#define the nodes +    dotfile.write( dotMBE + "  \n" ) + +    dotfile.write("tunermbe"+   " [ label= \"" + tunerdict["MBE"] +     "\" , shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/tuner.png\"   fontcolor=\"white\"  color=red ]  \n" ) + +    for fe in dotfrontend: +        dotfile.write("FEND"+fe + "[ label=\"frontend \\n " + fe +     "\" ,shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/tv.png\" , fontcolor=\"white\" , imagescale=\"true\"  color=\"gold2\" ]   \n" ) + +    for fe in dotslave: +        cslave="STUNER"+fe +        if tunerdict[cslave] != "" : +    	    dotfile.write(cslave+   " [ label= \"" + tunerdict[cslave] +     "\" ,  shape=box ]     \n" ) +        dotfile.write("SLAVE"+fe + "[ label=\"slave backend \\n " + fe +     "\" shapefile=\"/data/srv/httpd/htdocs/hobbit/gifs/be.png\"  fontcolor=\"white\"  color=green ]   \n" ) + + +#connect up the nodes! +    dotfile.write("tunermbe -> MBE  [color=\"red\"] \n  "  ) + +    for fe in dotfrontend: +        dotfile.write("MBE  -> FEND" + fe + "[color=\"gold2\"]   \n  "  ) + +    for fe in dotslave: +        cslave="STUNER"+fe +        dotfile.write("SLAVE" + fe + "-> MBE [color=\"green\"]  \n  "  ) +        if tunerdict[cslave] != "" : +            dotfile.write(cslave + "-> SLAVE"+fe + "\n"  ) + + + +    dotfile.write("}  " + "\n"   ) +    dotfile.close() + + +    cmd="/usr/bin/unflatten -l6 -c3 -f " + dotfilename + " |/usr/bin/dot -Tpng  -o/data/srv/httpd/htdocs/hobbit/gifs/network.png " + #   cmd="/usr/bin/circo -Tpng  -o/data/srv/httpd/htdocs/hobbit/gifs/network.png " + dotfilename + +    results=os.popen(cmd,'r') + + #-------------------------------------------------- +    hobbitfile="/data/srv/hobbit/server/etc/hobbit-clients.cfg" +    hobbitf=open(hobbitfile,'r') +    hobbitconfig=hobbitf.readlines() +    hobbitf.close() +    hobbitf=open(hobbitfile,'w') +#    print "FE",frontonly + #   print "MBE",masterbackend +  #  print "MBEwFW",masterbacked_w_fe +   # print "SLAVEwFW",slave_w_fe +    #print "SLAVE",slave +    #print "STD",stand_alone + +    for line in hobbitconfig: +        if line.startswith("HOST"): +            cline=line.split("=") +            if cline[1].startswith("_FRONTEND_"): +                pline="HOST=" +                pline+=frontonly.strip() +                hobbitf.write(pline + "\n") +            elif cline[1].startswith("_MASTERBACKEND_"): +                pline="HOST=" +                pline+=masterbackend.strip() +                #print pline +                hobbitf.write(pline+ "\n") +            elif cline[1].startswith("_MASTERFRONTEND_"): +                pline="HOST=" +                pline+=masterbacked_w_fe.strip() +                #print pline +                hobbitf.write(pline+ "\n") +            elif cline[1].startswith("_SLAVEBACKEND_"): +                pline="HOST=" +                pline+=slave.strip() +                #print pline +                hobbitf.write(pline+ "\n") +            elif cline[1].startswith("_SLAVEFE_"): +                pline="HOST=" +                pline+=slave_w_fe.strip() +                #print pline +                hobbitf.write(pline+ "\n") +            else: +                #print line +                hobbitf.write(line) +        else: +            #print line +            hobbitf.write(line) + + + + + +#-----------------------------------------------------------END CLIENT CONFIG + + + + + + + + + + + + + +    # execute SQL statement +    cursor.execute("SELECT DISTINCT(hostname) from settings") +    result = cursor.fetchall() + +    for row in result: +       cursor.execute("select value,data  from settings where hostname=%s and value in ('HostSystemType','HostHwuuid');",(row)) +       hostvalues=cursor.fetchall() +       found_uuid="false" +       filename="/data/srv/hobbit/server/www/notes/" +       filename+=str(row[0]) +       filename+=(".html") + +       file = open(filename,'w') +       string=''' +        <html> +        <head> +            <style type="text/css">@import "/frame.css";</style> +        </head> +       ''' +       file.write(string) + + +       for i in range( 0 , len(hostvalues)): +            value=hostvalues[i][0] +            data=hostvalues[i][1] +            currenthostype='' +            currenthostname='' +            if  value == "HostHwuuid" : +                if data != "blank" : +                    found_uuid="true" +                    uuid=data +            if value == "HostSystemType" : + +                currenthostname= str(row[0]).strip() +                currenthostype=str(data).strip() +                header="<h1>" + currenthostname + "(" + currenthostype + ") </h1>" +                file.write(header + '\n') + + +       if found_uuid == "true" : +            string=str("http://smolt.mythvantage.com/client/show?uuid=") +            string+=str(uuid) +            file.write("<A href=\""  ) +            file.write(string) +            file.write("\" >" +  str(uuid)   + "</A>") +       else: +            file.write( "uuid  not found, please submit a hardware profile" ) + + + +       buttonform_top=''' +         <div class="content" style="solid #aaa; width:500px; height:350px; overflow:auto; color:#FFF;text-align:left;"> +	     <form action="/process.py" method="get"> +         ''' + + +       buttonform_bottom=''' +           <input name="param2" type="radio"  value="Update" />Update System </> +           <select name="param3"> +                   <option value="Myth_only">Myth only</option> +                   <option value="All"> Full System</option> +           </select> +           </br> +           <input name="param2" type="radio"  value="Shutdown" />Shutdown System<br /> +           <input name="param2" type="radio"  value="Reboot" />Reboot System<br /> +           <input name="param2" type="radio"  value="WOL" />Wake on Lan<br /> +           <input name="hiddenparam" type="hidden" value=" +            ''' +       oldurlform=''' +                   "/> +            <input name="param4" type="hidden" value=" +            ''' + + +       closetag=''' +           "/> +            </br> +            <input id="submitbutton" type="submit" /> +        </form> +        </div> +        ''' + +       #ordurlform=''' +            #"/> +            #<input name="param4" type="hidden" value=" +            #''' + +       if currenthostype == "Master_backend" : +            mbeoptions=createdropdown() +       else: +            mbeoptions='' +       returnurl="/hobbit/notes/" +       returnurl+=str(row[0]) +       returnurl+=(".html") +       file.write('</br> </br>  ') +       file.write(buttonform_top) +       file.write(mbeoptions) +       file.write(buttonform_bottom) +       file.write(str(row[0])) +       file.write(oldurlform) +       file.write(returnurl) +       file.write(closetag) + +       string=(' </html>') +       file.write(string) + +if __name__ == "__main__": +    main(sys.argv[1:])  | 
