diff options
| author | Selvasundaram <selvam@gluster.com> | 2011-07-20 20:57:09 +0530 |
|---|---|---|
| committer | Selvasundaram <selvam@gluster.com> | 2011-07-20 20:57:09 +0530 |
| commit | 9ef0e377687ad77bae6018202dcb7772880bcea6 (patch) | |
| tree | 1ce07d062988e69b67a951cbefda354d4c658312 /src/com.gluster.storage.management.server.scripts | |
| parent | 3ee5ef2d7f86d9b0ebd70391375d05330b23da21 (diff) | |
| parent | 467d023dfbccc7ff10c5fe29fe7992e6c798875a (diff) | |
Merge branch 'master' of github.com:gluster/console
Diffstat (limited to 'src/com.gluster.storage.management.server.scripts')
4 files changed, 130 insertions, 30 deletions
diff --git a/src/com.gluster.storage.management.server.scripts/src/DiskUtils.py b/src/com.gluster.storage.management.server.scripts/src/DiskUtils.py index e796f479..bffbe940 100644 --- a/src/com.gluster.storage.management.server.scripts/src/DiskUtils.py +++ b/src/com.gluster.storage.management.server.scripts/src/DiskUtils.py @@ -101,6 +101,17 @@ def getDiskPartitionLabel(device): return False +def readFile(fileName): + lines = None + try: + fp = open(fileName) + lines = fp.readlines() + fp.close() + except IOError, e: + Utils.log("failed to read file %s: %s" % (file, str(e))) + return lines + + def getRootPartition(fsTabFile=Globals.FSTAB_FILE): fsTabEntryList = readFsTab(fsTabFile) for fsTabEntry in fsTabEntryList: @@ -162,7 +173,7 @@ def getRaidDisk(): if not rv["Stderr"]: words = rv["Stdout"].strip().split() if words: - raid['Type'] = "INITIALIZED" + raid['Status'] = "INITIALIZED" if len(words) > 2: raid['Uuid'] = words[1].split("UUID=")[-1].split('"')[1] raid['FsType'] = words[2].split("TYPE=")[-1].split('"')[1] @@ -307,7 +318,7 @@ def getDiskInfo(diskDeviceList=None): partition["SpaceInUse"] = used if partition["MountPoint"] or isDataDiskPartitionFormatted(partitionDevice): partition["Init"] = True - #partition["Status"] = "INITIALIZED" + partition["Status"] = "INITIALIZED" if partition["MountPoint"]: if "/export/" in partition["MountPoint"]: partition["Type"] = "DATA" @@ -323,6 +334,32 @@ def getDiskInfo(diskDeviceList=None): disk["SpaceInUse"] = diskSpaceInUse diskList.append(disk) diskInfo["disks"] = diskList + if diskList: + return diskInfo + for line in readFile("/proc/partitions")[2:]: + disk = {} + tokens = line.split() + if tokens[3].startswith("md"): + continue + disk["Device"] = tokens[3] + ## if diskDeviceList and disk["Device"] not in diskDeviceList: + ## continue + disk["Description"] = None + disk["Size"] = long(tokens[2]) / 1024 + disk["Status"] = None + disk["Interface"] = None + disk["DriveType"] = None + disk["Uuid"] = None + disk["Init"] = False + disk["Type"] = None + disk["FsType"] = None + disk["FsVersion"] = None + disk["MountPoint"] = None + disk["ReadOnlyAccess"] = None + disk["SpaceInUse"] = None + disk["Partitions"] = [] + diskList.append(disk) + diskInfo["disks"] = diskList return diskInfo def getDiskList(diskDeviceList=None): @@ -515,12 +552,12 @@ def getDiskDom(diskDeviceList=None, bootPartition=None, skipDisk=None): diskTag.appendChild(diskDom.createTag("status", disk["Status"])) diskTag.appendChild(diskDom.createTag("interface", disk["Interface"])) - if not disk["Partitions"]: - diskTag.appendChild(diskDom.createTag("type", disk["Type"])) - #diskTag.appendChild(diskDom.createTag("init", str(disk["Init"]).lower())) - diskTag.appendChild(diskDom.createTag("fsType", disk["FsType"])) - diskTag.appendChild(diskDom.createTag("fsVersion", disk["FsVersion"])) - diskTag.appendChild(diskDom.createTag("mountPoint", disk["MountPoint"])) + #if not disk["Partitions"]: + diskTag.appendChild(diskDom.createTag("type", disk["Type"])) + #diskTag.appendChild(diskDom.createTag("init", str(disk["Init"]).lower())) + diskTag.appendChild(diskDom.createTag("fsType", disk["FsType"])) + diskTag.appendChild(diskDom.createTag("fsVersion", disk["FsVersion"])) + diskTag.appendChild(diskDom.createTag("mountPoint", disk["MountPoint"])) diskTag.appendChild(diskDom.createTag("size", disk["Size"])) diskTag.appendChild(diskDom.createTag("spaceInUse", disk["SpaceInUse"])) @@ -528,7 +565,9 @@ def getDiskDom(diskDeviceList=None, bootPartition=None, skipDisk=None): if raidPartitions.has_key(diskDevice): rdList = {} rdList[diskDevice] = [deepcopy(diskTag)] - raidDisks[raidPartitions[diskDevice]] = rdList + if not raidDisks.has_key(raidPartitions[diskDevice]): + raidDisks[raidPartitions[diskDevice]] = [] + raidDisks[raidPartitions[diskDevice]] += [rdList] continue for partition in disk["Partitions"]: partitionTag = diskDom.createTag("partition", None) @@ -549,16 +588,17 @@ def getDiskDom(diskDeviceList=None, bootPartition=None, skipDisk=None): tempPartitionTag = diskDom.createTag("partitions", None) if raidDisks.has_key(raidPartitions[device]): rdList = raidDisks[raidPartitions[device]] - if not rdList.has_key(diskDevice): - rdList[diskDevice] = [deepcopy(diskTag), tempPartitionTag] - rdList[diskDevice][0].appendChild(tempPartitionTag) - rdList[diskDevice][-1].appendChild(partitionTag) + for rdItem in rdList: + if not rdItem.has_key(diskDevice): + rdItem[diskDevice] = [deepcopy(diskTag), tempPartitionTag] + rdItem[diskDevice][0].appendChild(tempPartitionTag) + rdItem[diskDevice][-1].appendChild(partitionTag) continue rdList = {} rdList[diskDevice] = [deepcopy(diskTag), tempPartitionTag] tempPartitionTag.appendChild(partitionTag) rdList[diskDevice][0].appendChild(tempPartitionTag) - raidDisks[raidPartitions[device]] = rdList + raidDisks[raidPartitions[device]] = [rdList] continue partitionsTag.appendChild(partitionTag) diskTag.appendChild(partitionsTag) @@ -579,8 +619,9 @@ def getDiskDom(diskDeviceList=None, bootPartition=None, skipDisk=None): raidDiskTag.appendChild(diskDom.createTag("spaceInUse", raidDisk[rdisk]['SpaceInUse'])) raidDisksTag = diskDom.createTag("raidDisks", None) if raidDisks.has_key(rdisk): - for diskTag in raidDisks[rdisk].values(): - raidDisksTag.appendChild(diskTag[0]) + for item in raidDisks[rdisk]: + for diskTag in item.values(): + raidDisksTag.appendChild(diskTag[0]) raidDiskTag.appendChild(raidDisksTag) disksTag.appendChild(raidDiskTag) diskDom.addTag(disksTag) diff --git a/src/com.gluster.storage.management.server.scripts/src/get_brick_status.py b/src/com.gluster.storage.management.server.scripts/src/get_brick_status.py new file mode 100755 index 00000000..8d827bd2 --- /dev/null +++ b/src/com.gluster.storage.management.server.scripts/src/get_brick_status.py @@ -0,0 +1,45 @@ +#!/usr/bin/python +# Copyright (C) 2011 Gluster, Inc. <http://www.gluster.com> +# This file is part of Gluster Management Console. +# + +import os +import sys +import Utils +from XmlHandler import ResponseXml + +def main(): + if len(sys.argv) != 3: + sys.stderr.write("usage: %s VOLUME_NAME BRICK_NAME\n" % os.path.basename(sys.argv[0])) + sys.exit(-1) + + volumeName = sys.argv[1] + brickName = sys.argv[2] + pidFile = "/etc/glusterd/vols/%s/run/%s.pid" % (volumeName, brickName.replace(":", "-").replace("/", "-")) + + responseDom = ResponseXml() + responseDom.appendTagRoute("volumeName", volumeName) + responseDom.appendTagRoute("brickName", brickName) + if not os.path.exists(pidFile): + responseDom.appendTagRoute("brickStatus", "OFFLINE") + else: + try: + fp = open(pidFile) + pidString = fp.readline() + fp.close() + os.getpgid(int(pidString)) + responseDom.appendTagRoute("brickStatus", "ONLINE") + except IOError, e: + Utils.log("failed to open file %s: %s" % (pidFile, str(e))) + responseDom.appendTagRoute("brickStatus", "UNKNOWN") + except ValueError, e: + Utils.log("invalid pid %s in file %s: %s" % (pidString, pidFile, str(e))) + responseDom.appendTagRoute("brickStatus", "UNKNOWN") + except OSError, e: + #Utils.log("failed to get process detail of pid %s: %s" % (pidString, str(e))) + responseDom.appendTagRoute("brickStatus", "OFFLINE") + print responseDom.toxml() + sys.exit(0) + +if __name__ == "__main__": + main() diff --git a/src/com.gluster.storage.management.server.scripts/src/get_server_status.py b/src/com.gluster.storage.management.server.scripts/src/get_server_status.py new file mode 100755 index 00000000..4e089b4b --- /dev/null +++ b/src/com.gluster.storage.management.server.scripts/src/get_server_status.py @@ -0,0 +1,25 @@ +#!/usr/bin/python +# Copyright (C) 2011 Gluster, Inc. <http://www.gluster.com> +# This file is part of Gluster Management Console. +# + +import os +import sys +import Utils +from XmlHandler import ResponseXml + +def main(): + if len(sys.argv) != 1: + sys.stderr.write("usage: %s\n" % os.path.basename(sys.argv[0])) + sys.exit(-1) + + responseDom = ResponseXml() + if Utils.runCommand("pidof glusterd") == 0: + responseDom.appendTagRoute("serverStatus", "ONLINE") + else: + responseDom.appendTagRoute("serverStatus", "OFFLINE") + print responseDom.toxml() + sys.exit(0) + +if __name__ == "__main__": + main() diff --git a/src/com.gluster.storage.management.server.scripts/src/gluster_provision_block_wrapper.py b/src/com.gluster.storage.management.server.scripts/src/gluster_provision_block_wrapper.py index 89d7df38..a3b2776d 100755 --- a/src/com.gluster.storage.management.server.scripts/src/gluster_provision_block_wrapper.py +++ b/src/com.gluster.storage.management.server.scripts/src/gluster_provision_block_wrapper.py @@ -89,26 +89,15 @@ def main(): writeStatus(deviceFormatStatusFile, "Device format failed\n") sys.exit(5) - ## try: - ## process = subprocess.Popen(command, - ## stdout=fptr, - ## stderr=subprocess.PIPE, - ## stdin=subprocess.PIPE, - ## close_fds=True) - ## status = process.wait() - ## except OSError: - ## os.unlink(deviceFormatOutputFile) - ## Utils.log(syslog.LOG_ERR, "formatting disk command failed. command: %s" % str(command)) - ## writeStatus(deviceFormatStatusFile, "Formatting disk command failed\n") - ## removeLockFile() - ## sys.exit(-5) - if status != 0: Utils.removeFile(deviceFormatOutputFile) Utils.removeFile(deviceFormatLockFile) writeStatus(deviceFormatStatusFile, "Device format failed\n") sys.exit(6) + if Utils.runCommand("/sbin/udevtrigger") != 0: + Utils.log("failed running /sbin/udevtrigger") + if Utils.runCommand("/usr/bin/lshal") != 0: Utils.log("failed running /usr/bin/lshal") writeStatus(deviceFormatStatusFile, "Completed\n") |
