summaryrefslogtreecommitdiffstats
path: root/abs/core/xymon/hbfunc.py
diff options
context:
space:
mode:
Diffstat (limited to 'abs/core/xymon/hbfunc.py')
-rw-r--r--abs/core/xymon/hbfunc.py217
1 files changed, 217 insertions, 0 deletions
diff --git a/abs/core/xymon/hbfunc.py b/abs/core/xymon/hbfunc.py
new file mode 100644
index 0000000..edd2461
--- /dev/null
+++ b/abs/core/xymon/hbfunc.py
@@ -0,0 +1,217 @@
+#!/usr/bin/python
+#checks that the MBE can connect to the minions
+
+# ===============================================
+import sys
+import os
+import string
+import time
+import func.overlord.client as fc
+BBLINE = ''
+BBCOLOR="green"
+DATE = time.strftime("%a %b %d %H:%M:%S %Z %Y", time.localtime(time.time()))
+BB="/data/srv/xymon/server/bin/xymon"
+BBDISP="127.0.01"
+
+
+#if os.environ['BB']:
+# #print os.environ['BB']
+# BB=os.environ['BB']
+
+#if os.environ['BBDISP']:
+# #print os.environ['BBDISP']
+# BBDISP=os.environ['BBDISP']
+
+#if os.environ['MACHINE']:
+# #print os.environ['MACHINE']
+# MACHINE=os.environ['MACHINE']
+
+
+def readbb():
+ global hostlist
+ global mythtype
+
+ try:
+ infile = open('/data/srv/xymon/etc/hosts.cfg', 'r')
+ except(IOError), e:
+ #print "couldn't open xymon hosts file"
+ sys.exit(1)
+ else:
+ bbhostlist = infile.readlines()
+ infile.close()
+ for line in bbhostlist:
+ cline=line.strip()
+ #if not cline.startswith("#") and cline != '' and cline.find("bbd") == -1 and cline.find("func") != -1 :
+ if not cline.startswith("#") and cline != '' and cline.find("func") != -1 :
+ host=cline.split("#")
+ host=host[0].split()
+ hostlist.append(host[1].strip())
+ #print hostlist
+ infile.close()
+ try:
+ infile = open('/etc/mythtv-releasetype')
+ mythtype= infile.readline()
+ infile.close()
+ except(IOError), e:
+ #print "couldn't open mythfile "
+ mythtype=''
+
+def find_local_myth_version():
+ global mythtype
+ local_pkg_name="not_found"
+ pkgname="mythtv"
+ pkgname+=mythtype
+ cmd="/usr/bin/pacman -Q %s " %pkgname
+ result = os.popen2(cmd)[1].readlines()
+ for list in result:
+ l=list.strip()
+ if l.startswith('mythtv') :
+ local_pkg_name=l.strip()
+ break
+ return local_pkg_name
+
+
+def mythversion_check(currentclient,local_myth_version):
+ global mythtype
+ pkgname="mythtv"
+ pkgname+=mythtype
+ remote_pkg_name="remote_pkg_not_found"
+ client = (fc.Client( currentclient ))
+ results=client.pacman.pkgversion(pkgname)
+ #print currentclient
+ #print local_myth_version
+ #print results[currentclient][1]
+ try:
+ for pkg in results[currentclient][1] :
+ p=pkg.strip()
+ if p.startswith('mythtv'):
+ remote_pkg_name=p
+ break
+ if (remote_pkg_name != local_myth_version):
+ BBLINE="Myth version MBE: %s does not match %s %s \n " %(local_myth_version,currentclient,remote_pkg_name)
+ LINE = "status " + currentclient + ".version yellow" + " " + DATE + " " + BBLINE
+
+ if (remote_pkg_name == local_myth_version):
+ BBLINE="%s: success (green) Myth version match %s \n " %(currentclient,remote_pkg_name)
+ LINE = "status " + currentclient + ".version green" + " " + DATE + " " + BBLINE
+ except:
+ BBLINE="Something went wrong! \n "
+ LINE = "status " + currentclient + ".version red" + " " + DATE + " " + BBLINE
+
+ cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+ os.system(cmd)
+ return
+
+def send_myth_clear(currentclient):
+ BBLINE="could not connect to host to check version\n "
+ LINE = "status " + currentclient + ".version clear" + " " + DATE + " " + BBLINE
+ cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+ os.system(cmd)
+ return
+#-------------------------
+
+global hostlist
+global mythtype
+mythtype=""
+hostlist = []
+readbb()
+local_myth_version=find_local_myth_version()
+
+for currentclient in hostlist:
+ #print currentclient
+ cmd='/data/srv/xymon/server/bin/xymon 127.0.0.1 "query '
+ cmd+=currentclient
+ cmd+='.conn"'
+ bbresults=os.popen(cmd,'r' ).readline().strip().split()
+
+ try:
+ bbstate=bbresults[0]
+ except:
+ bbstate="clear"
+
+ #print bbstate
+ if bbstate == 'green':
+ try:
+ client = (fc.Client( currentclient ))
+ except Exception as e:
+ #couldn't find minion in certmaster
+ #print "couldn't find minion in certmaster:%s" %currentclient
+ BBLINE="%s: %s (red) \n " %(currentclient,e)
+ LINE = "status " + currentclient + ".func red" + " " + DATE + " " + BBLINE
+ cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+ cmd2= "echo " + currentclient + " >> /data/srv/httpd/htdocs/failed_func_hosts"
+ os.system(cmd2)
+ os.system(cmd)
+ BBCOLOR="red"
+ send_myth_clear(currentclient)
+ continue
+
+
+ results=client.test.add("1","2")
+ try:
+ #print currentclient
+ #print results[currentclient]
+ #print type(results[currentclient])
+ #print "----------"
+ if type(results[currentclient]) == str:
+ if results[currentclient] == '12':
+ BBLINE="%s: success (green) \n " %currentclient
+ LINE = "status " + currentclient + ".func green" + " " + DATE + " " + BBLINE
+ cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+ os.system(cmd)
+ #REMOVE HOST FROM FAILED_FUNC
+ #cmd='sed -i "/' + currentclient + '/d" /data/srv/httpd/htdocs/failed_func_hosts'
+ f = open("/data/srv/httpd/htdocs/failed_func_hosts")
+ failed_lines=f.readlines()
+ f.close
+ f = open("/data/srv/httpd/htdocs/failed_func_hosts",'w')
+ for line in failed_lines:
+ if line.strip() == currentclient:
+ continue
+ f.write(line)
+ f.close()
+
+
+ #os.system(cmd)
+ mythversion_check(currentclient,local_myth_version)
+ else:
+ BBLINE="%s: connected but wtf (yellow) \n " %currentclient
+ LINE = "status " + currentclient + ".func yellow" + " " + DATE + " " + BBLINE
+ cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+ os.system(cmd)
+ if BBCOLOR != "red":
+ BBCOLOR="yellow"
+ else:
+ BBLINE="%s: %s (red) \n " %(currentclient,results[currentclient])
+ LINE = "status " + currentclient + ".func red" + " " + DATE + " " + BBLINE
+ cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+ cmd2= "echo " + currentclient + " >> /data/srv/httpd/htdocs/failed_func_hosts"
+ cmd3="sudo /usr/bin/certmaster-ca -c " + currentclient
+ os.system(cmd2)
+ os.system(cmd3)
+ os.system(cmd)
+ BBCOLOR="red"
+ except:
+ BBLINE="%s had an error : %s (red) \n " % (currentclient,str(results))
+ LINE = "status " + currentclient + ".func red" + " " + DATE + " " + BBLINE
+ cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+ cmd2= "echo " + currentclient + " >> /data/srv/httpd/htdocs/failed_func_hosts"
+ os.system(cmd)
+ os.system(cmd2)
+ cmd3="sudo /usr/bin/certmaster-ca -c " + currentclient
+ os.system(cmd3)
+ BBCOLOR="red"
+ else:
+ BBLINE+= "Not testing %s \n " % currentclient
+ LINE = "status " + currentclient + ".func clear" + " " + DATE + " " + BBLINE
+ cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+ os.system(cmd)
+ BBCOLOR="clear"
+ send_myth_clear(currentclient)
+
+#LINE = "status " + MACHINE + ".func green" + " " + DATE + " " + BBLINE
+#cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+#os.system(cmd)
+
+#print BBLINE
+#print BBCOLOR