Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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))
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
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
Ejemplo n.º 12
0
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 ""
Ejemplo n.º 13
0
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
Ejemplo n.º 14
0
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
Ejemplo n.º 15
0
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)
Ejemplo n.º 16
0
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)
Ejemplo n.º 17
0
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
Ejemplo n.º 18
0
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
Ejemplo n.º 19
0
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
Ejemplo n.º 20
0
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"    
Ejemplo n.º 21
0
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"
Ejemplo n.º 22
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
Ejemplo n.º 23
0
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
Ejemplo n.º 24
0
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 ""
Ejemplo n.º 25
0
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))
Ejemplo n.º 26
0
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"
Ejemplo n.º 27
0
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"
Ejemplo n.º 28
0
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
Ejemplo n.º 29
0
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
Ejemplo n.º 30
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
Ejemplo n.º 31
0
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
Ejemplo n.º 32
0
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