summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.server.scripts
diff options
context:
space:
mode:
authorSelvasundaram <selvam@gluster.com>2011-07-20 20:57:09 +0530
committerSelvasundaram <selvam@gluster.com>2011-07-20 20:57:09 +0530
commit9ef0e377687ad77bae6018202dcb7772880bcea6 (patch)
tree1ce07d062988e69b67a951cbefda354d4c658312 /src/com.gluster.storage.management.server.scripts
parent3ee5ef2d7f86d9b0ebd70391375d05330b23da21 (diff)
parent467d023dfbccc7ff10c5fe29fe7992e6c798875a (diff)
Merge branch 'master' of github.com:gluster/console
Diffstat (limited to 'src/com.gluster.storage.management.server.scripts')
-rw-r--r--src/com.gluster.storage.management.server.scripts/src/DiskUtils.py73
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/get_brick_status.py45
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/get_server_status.py25
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/gluster_provision_block_wrapper.py17
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")