summaryrefslogtreecommitdiffstats
path: root/abs/mv-core/hobbitmon/hbfunc.py
diff options
context:
space:
mode:
Diffstat (limited to 'abs/mv-core/hobbitmon/hbfunc.py')
-rwxr-xr-xabs/mv-core/hobbitmon/hbfunc.py167
1 files changed, 167 insertions, 0 deletions
diff --git a/abs/mv-core/hobbitmon/hbfunc.py b/abs/mv-core/hobbitmon/hbfunc.py
new file mode 100755
index 0000000..9cb66df
--- /dev/null
+++ b/abs/mv-core/hobbitmon/hbfunc.py
@@ -0,0 +1,167 @@
+#!/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()))
+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/hobbit/etc/bb-hosts', 'r')
+ except(IOError), e:
+ print "couldn't open bb-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 :
+ host=cline.split("#")
+ host=host[0].split()
+ hostlist.append(host[1].strip())
+ infile.close()
+ try:
+ infile = open('/usr/local/share/mythtv/.releasetype')
+ mythtype= infile.readline()
+ infile.close()
+ except(IOError), e:
+ print "couldn't open mythfile "
+ mythtype='unkown'
+
+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 + ".myth_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 + ".myth_version green" + " " + DATE + " " + BBLINE
+ except:
+ BBLINE="Something went wrong! \n "
+ LINE = "status " + currentclient + ".myth_version red" + " " + 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:
+ client = (fc.Client( currentclient ))
+ cmd='/data/srv/hobbit/server/bin/bb 127.0.0.1 "query '
+ cmd+=currentclient
+ cmd+='.conn"'
+ bbresults=os.popen(cmd,'r' ).readline().strip().split()
+ bbstate=bbresults[0]
+ if bbstate == 'green':
+ 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'
+ 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 " + MACHINE + ".func green" + " " + DATE + " " + BBLINE
+#cmd = BB + ' ' + BBDISP + ' "' + LINE + '"'
+#os.system(cmd)
+
+#print BBLINE
+#print BBCOLOR