def getDiskSite_default(device): res = {} res["name"] = device res["host"] = None res["phy"] = None res["port"] = None rv = MyAPI.runCommand("udevadm info -a -p /sys/block/%s " % device, output=True, root=True) resorce = rv["Stdout"].strip().split('\n') for i in resorce: if i.strip().startswith('KERNELS'): if i.split('==')[1].strip('"').startswith('host'): res["host"] = i.split('==')[1].strip('"') elif i.split('==')[1].strip('"').startswith('port'): res["port"] = i.split('==')[1].strip('"') elif i.split('==')[1].strip('"').startswith('target'): res["target"] = i.split('==')[1].strip('"') rv = MyAPI.runCommand("ls /sys/bus/scsi/devices/%s/%s/" % (res["host"], res["port"]), output=True, root=True) resorce = rv["Stdout"].strip().split() for i in resorce: if i.startswith("phy"): res["phy"] = i if res["host"] != None and res["phy"] != None: disksite = int(res["host"][-1]) * 8 + int(res["phy"][-1]) + 1 else: disksite = None return disksite
def getDiskSite_default(device): res = {} res["name"]=device res["host"]=None res["phy"]=None res["port"]=None rv = MyAPI.runCommand("udevadm info -a -p /sys/block/%s " % device , output=True, root=True) resorce=rv["Stdout"].strip().split('\n') for i in resorce: if i.strip().startswith('KERNELS'): if i.split('==')[1].strip('"').startswith('host'): res["host"]=i.split('==')[1].strip('"') elif i.split('==')[1].strip('"').startswith('port'): res["port"]=i.split('==')[1].strip('"') elif i.split('==')[1].strip('"').startswith('target'): res["target"]=i.split('==')[1].strip('"') rv = MyAPI.runCommand("ls /sys/bus/scsi/devices/%s/%s/"% (res["host"],res["port"]),output=True, root=True) resorce=rv["Stdout"].strip().split() for i in resorce: if i.startswith("phy"): res["phy"]=i if res["host"]!=None and res["phy"]!=None: disksite = int(res["host"][-1])*8+int(res["phy"][-1])+1 else: disksite = None return disksite
def CheckSmart(): rv = MyAPI.runCommand("which smartctl", output=True, root=True) if rv["Status"]!=0: res = "Not installed" else: rv = MyAPI.runCommand("smartctl --version", output=True, root=True) res = rv["Stdout"].split()[1] return res
def CheckSmart(): rv = MyAPI.runCommand("which smartctl", output=True, root=True) if rv["Status"] != 0: res = "Not installed" else: rv = MyAPI.runCommand("smartctl --version", output=True, root=True) res = rv["Stdout"].split()[1] return res
def runReadWrite(testdir): print ("w/r performance test\n\noption\tsize\tspeed") for i in range(1,15,3): rv = MyAPI.runCommand("dd if=/dev/zero of=%s/testfile%d bs=%dM count=1024"% (testdir,i,i), output=True, root=True) for line in rv["Stderr"].split('\n'): if line.count('bytes')!=0: speed = line.split(',')[-1] size = line.split('(')[1].split(')')[0] print ("write\t%s\t%s"%(size,speed)) rv = MyAPI.runCommand("dd of=%s/testfile%d if=/dev/zero bs=%dM count=1024"% (testdir,i,i), output=True, root=True) for line in rv["Stderr"].split('\n'): if line.count('bytes')!=0: speed = line.split(',')[-1] size = line.split('(')[1].split(')')[0] print ("read\t%s\t%s"%(size,speed))
def getDiskSite_9220_2U12(device): res = {} diskmap ={} res["name"]=device res["target"]=None res["host"]=None res["ID"]=None rv = MyAPI.runCommand("udevadm info -a -p /sys/block/%s " % device , output=True, root=True) resorce=rv["Stdout"].strip().split('\n') for i in resorce: if i.strip().startswith('KERNELS'): if i.split('==')[1].strip('"').startswith('target'): res["target"]=i.split('==')[1].strip('"').split(":")[-1] elif i.split('==')[1].strip('"').startswith('host'): res["host"]=i.split('==')[1].strip('"') if res["target"]!='0': tmpsite = res["target"] else: tmpsite = res["host"] diskmap = getDiskSiteList() try: disksite = diskmap[tmpsite] except: disksite = None return disksite
def getProcPartitions(): procPartitionsDict = {} s = MyAPI.readFile("/proc/partitions", lines=True) for line in s[2:]: tokens = line.strip().split() procPartitionsDict[tokens[3]] = {"Size": long(tokens[2])} return procPartitionsDict
def getDiskSite_9220_2U12(device): res = {} diskmap = {} res["name"] = device res["target"] = None res["host"] = None res["ID"] = None rv = MyAPI.runCommand("udevadm info -a -p /sys/block/%s " % device, output=True, root=True) resorce = rv["Stdout"].strip().split('\n') for i in resorce: if i.strip().startswith('KERNELS'): if i.split('==')[1].strip('"').startswith('target'): res["target"] = i.split('==')[1].strip('"').split(":")[-1] elif i.split('==')[1].strip('"').startswith('host'): res["host"] = i.split('==')[1].strip('"') if res["target"] != '0': tmpsite = res["target"] else: tmpsite = res["host"] diskmap = getDiskSiteList() try: disksite = diskmap[tmpsite] except: disksite = None return disksite
def getProcPartitions(): procPartitionsDict = {} s = MyAPI.readFile("/proc/partitions", lines=True) for line in s[2:]: tokens = line.strip().split() procPartitionsDict[tokens[3]] = {"Size" : long(tokens[2])} return procPartitionsDict
def isDirMounted(mountpoint): mountflag = 0 errorflag = 0 lines = MyAPI.readFile("/proc/mounts", lines=True) for line in lines: tokens = line.split() if tokens[1] == mountpoint: mountflag = 1 if mountflag == 1: rv = MyAPI.runCommand(["df", mountpoint], output=True) if rv["Status"] == 0: try: diskspace = long(rv["Stdout"].split("\n")[1].split()[2]) except IndexError, e: errorflag = 1 except ValueError, e: errorflag = 1
def getDeviceMountPoint(device): lines = MyAPI.readFile("/proc/mounts", lines=True) uuid = getUuidByDiskPartition(device) for line in lines: tokens = line.split() if tokens[0] == device or (uuid and tokens[0].endswith(uuid)): return tokens[1] return None
def TestGetinfo(): print "Testing get info config\n" print "Testing get_server_info\t\t", sys.stdout.flush() rv = MyAPI.runCommand("/opt/glustermg/1.0.0alpha/backend/get_server_details.py", output=True, root=True) if rv["Status"]==0: print "pass" else: print "failed" print "Testing get_server_brick\t", sys.stdout.flush() rv = MyAPI.runCommand("/opt/glustermg/1.0.0alpha/backend/get_server_bricks.py", output=True, root=True) if rv["Status"]==0: print "pass" else: print "failed" print ""
def isDirMounted(mountpoint): mountflag = 0 errorflag = 0 lines = MyAPI.readFile("/proc/mounts", lines=True) for line in lines: tokens = line.split() if tokens[1] == mountpoint: mountflag = 1 if mountflag == 1: rv = MyAPI.runCommand(["df", mountpoint], output=True) if rv["Status"] == 0: try: diskspace = long(rv["Stdout"].split("\n")[1].split()[2]) except IndexError, e: errorflag=1 except ValueError, e: errorflag=1
def getDevice(deviceName): if MyAPI.isString(deviceName): return _addDev(deviceName) if type(deviceName) == type([]): nameList = [] for d in deviceName: nameList.append(_addDev(d)) return nameList return _addDev(deviceName)
def isBrick(device): lines = MyAPI.readFile("/proc/mounts", lines=True) uuid = getUuidByDiskPartition(device) device = getDevice(device) for line in lines: tokens = line.split() if tokens[0] == device or (uuid and tokens[0].endswith(uuid)): if tokens[1] in glob.glob("/brick/*"): return True return False
def getProcMdstat(): raidArrayDict = {} lines = MyAPI.readFile("/proc/mdstat", lines=True) for line in lines[1:]: tokens = line.strip().split() if not tokens: continue if tokens[0].startswith("md"): raidArrayDict[tokens[0]] = {"Status" : tokens[2], "Type" : tokens[3], "Member" : [token.split('[')[0] for token in tokens[4:]]} return raidArrayDict
def CheckMulticast(): checkfile = "/etc/init.d/multicast-discoverd" flag = os.access(checkfile,os.F_OK) if flag: rv = MyAPI.runCommand("/etc/init.d/multicast-discoverd status", output=True, root=True) if re.search("running",rv["Stdout"]): return "ON" else: return "OFF" else: return "Not installed"
def CheckMulticast(): checkfile = "/etc/init.d/multicast-discoverd" flag = os.access(checkfile, os.F_OK) if flag: rv = MyAPI.runCommand("/etc/init.d/multicast-discoverd status", output=True, root=True) if re.search("running", rv["Stdout"]): return "ON" else: return "OFF" else: return "Not installed"
def isRaidClean(): status = True mdlist = getProcMdstat() for raidname in mdlist: #print raidname status=False mdinfo = MyAPI.runCommand("mdadm -D /dev/%s" % raidname,output=True,root=True) if mdinfo["Status"]==0: for line in mdinfo["Stdout"].strip().split("\n"): if line.strip().startswith("State"): state = line.split(":")[1].strip() if state == "active" or status == "clean": status = True return status
def getProcMdstat(): raidArrayDict = {} lines = MyAPI.readFile("/proc/mdstat", lines=True) for line in lines[1:]: tokens = line.strip().split() if not tokens: continue if tokens[0].startswith("md"): raidArrayDict[tokens[0]] = { "Status": tokens[2], "Type": tokens[3], "Member": [token.split('[')[0] for token in tokens[4:]] } return raidArrayDict
def TestGetinfo(): print "Testing get info config\n" print "Testing get_server_info\t\t", sys.stdout.flush() rv = MyAPI.runCommand( "/opt/glustermg/1.0.0alpha/backend/get_server_details.py", output=True, root=True) if rv["Status"] == 0: print "pass" else: print "failed" print "Testing get_server_brick\t", sys.stdout.flush() rv = MyAPI.runCommand( "/opt/glustermg/1.0.0alpha/backend/get_server_bricks.py", output=True, root=True) if rv["Status"] == 0: print "pass" else: print "failed" print ""
def runReadWrite(testdir): print("w/r performance test\n\noption\tsize\tspeed") for i in range(1, 15, 3): rv = MyAPI.runCommand( "dd if=/dev/zero of=%s/testfile%d bs=%dM count=1024" % (testdir, i, i), output=True, root=True) for line in rv["Stderr"].split('\n'): if line.count('bytes') != 0: speed = line.split(',')[-1] size = line.split('(')[1].split(')')[0] print("write\t%s\t%s" % (size, speed)) rv = MyAPI.runCommand( "dd of=%s/testfile%d if=/dev/zero bs=%dM count=1024" % (testdir, i, i), output=True, root=True) for line in rv["Stderr"].split('\n'): if line.count('bytes') != 0: speed = line.split(',')[-1] size = line.split('(')[1].split(')')[0] print("read\t%s\t%s" % (size, speed))
def CheckRaidfix(): scriptfile = "/opt/glustermg/1.0.0alpha/backend/fixraid.py" flag = os.access(scriptfile,os.F_OK) confflag = False conf = MyAPI.readFile('/etc/udev/rules.d/60-raw.rules',lines=True) for line in conf: if re.search(scriptfile,line): confflag = True if not flag: return "Not installed" elif not confflag: return "Not configured" else: return "Configured"
def CheckRaidfix(): scriptfile = "/opt/glustermg/1.0.0alpha/backend/fixraid.py" flag = os.access(scriptfile, os.F_OK) confflag = False conf = MyAPI.readFile('/etc/udev/rules.d/60-raw.rules', lines=True) for line in conf: if re.search(scriptfile, line): confflag = True if not flag: return "Not installed" elif not confflag: return "Not configured" else: return "Configured"
def CheckAlert(): alertfile = '/opt/glustermg/1.0.0alpha/backend/alert.py' flag = os.access(alertfile,os.F_OK) confflag = False conf = MyAPI.readFile('/etc/crontab',lines=True) for line in conf: if re.search(alertfile,line): confflag = True if not flag: res = "Not installed" elif not confflag: res = "Not configured" else: res = "Configured" return res
def TestUdevBug(): res = 0 disklist = MyDiskAPI.getDiskList() print "Testing udevadm bug\n\nTest Complate : ", for i in range(1000): print "\b\b\b\b%2d%%"%(i/10), #time.sleep(0.01) sys.stdout.flush() for device in disklist: rv = MyAPI.runCommand("udevadm info -a -p /sys/block/%s " % device , output=True, root=True) if not rv["Status"]==0: res=res+1 print "\b\b\b\bDone" print "pass the test with result:%d\n"%res print "" return 0
def isRaidClean(): status = True mdlist = getProcMdstat() for raidname in mdlist: #print raidname status = False mdinfo = MyAPI.runCommand("mdadm -D /dev/%s" % raidname, output=True, root=True) if mdinfo["Status"] == 0: for line in mdinfo["Stdout"].strip().split("\n"): if line.strip().startswith("State"): state = line.split(":")[1].strip() if state == "active" or status == "clean": status = True return status
def CheckAlert(): alertfile = '/opt/glustermg/1.0.0alpha/backend/alert.py' flag = os.access(alertfile, os.F_OK) confflag = False conf = MyAPI.readFile('/etc/crontab', lines=True) for line in conf: if re.search(alertfile, line): confflag = True if not flag: res = "Not installed" elif not confflag: res = "Not configured" else: res = "Configured" return res
def TestUdevBug(): res = 0 disklist = MyDiskAPI.getDiskList() print "Testing udevadm bug\n\nTest Complate : ", for i in range(1000): print "\b\b\b\b%2d%%" % (i / 10), #time.sleep(0.01) sys.stdout.flush() for device in disklist: rv = MyAPI.runCommand("udevadm info -a -p /sys/block/%s " % device, output=True, root=True) if not rv["Status"] == 0: res = res + 1 print "\b\b\b\bDone" print "pass the test with result:%d\n" % res print "" return 0