summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.server.scripts
diff options
context:
space:
mode:
Diffstat (limited to 'src/com.gluster.storage.management.server.scripts')
-rw-r--r--src/com.gluster.storage.management.server.scripts/src/common/NetworkUtils.py23
-rw-r--r--src/com.gluster.storage.management.server.scripts/src/nodes/Disk.py20
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/nodes/get_server_details.py16
3 files changed, 56 insertions, 3 deletions
diff --git a/src/com.gluster.storage.management.server.scripts/src/common/NetworkUtils.py b/src/com.gluster.storage.management.server.scripts/src/common/NetworkUtils.py
index f8a5de30..7a854564 100644
--- a/src/com.gluster.storage.management.server.scripts/src/common/NetworkUtils.py
+++ b/src/com.gluster.storage.management.server.scripts/src/common/NetworkUtils.py
@@ -177,6 +177,26 @@ def writeIfcfgConfFile(deviceName, conf, root="", deviceFile=None):
return True
+def getNetModel(deviceName):
+ rv = runCommandFG("ifconfig %s" % deviceName, stdout=True, root=True)
+ if rv["Status"] != 0:
+ return False
+ for line in rv["Stdout"].split():
+ tokens = line.strip().split(":")
+ if tokens[0].upper() == "ENCAP":
+ return tokens[1].strip().upper()
+ return None
+
+def getNetSpeed(deviceName):
+ rv = runCommandFG("ethtool %s" % deviceName, stdout=True, root=True)
+ if rv["Status"] != 0:
+ return False
+ for line in rv["Stdout"].split("\n"):
+ tokens = line.strip().split(":")
+ if tokens[0].upper() == "SPEED":
+ return tokens[1].strip().upper()
+ return None
+
def getLinkStatus(deviceName):
return True
## ethtool takes very long time to respond. So its disabled now
@@ -276,6 +296,9 @@ def getNetDeviceList(root=""):
netDevice["type"] = None
netDevice["link"] = getLinkStatus(deviceName)
netDevice["mode"] = getBondMode(deviceName, root + Globals.MODPROBE_CONF_FILE)
+ netDevice["model"] = getNetModel(deviceName)
+ netDevice["speed"] = getNetSpeed(deviceName)
+
try:
netDevice["hwaddr"] = open("/sys/class/net/%s/address" % deviceName).read().strip()
except IOError:
diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/Disk.py b/src/com.gluster.storage.management.server.scripts/src/nodes/Disk.py
index 6a4c2998..a1ab9264 100644
--- a/src/com.gluster.storage.management.server.scripts/src/nodes/Disk.py
+++ b/src/com.gluster.storage.management.server.scripts/src/nodes/Disk.py
@@ -80,6 +80,8 @@ class Disk:
else: # iterate over children looking for a volume
children = self.hal.FindDeviceStringMatch("info.parent",
device)
+ if not children and "disk" == dev.GetProperty("storage.drive_type"):
+ self._add_volume(dev)
for child in children:
child = self._get_device(child)
if child.GetProperty("block.is_volume"):
@@ -88,6 +90,23 @@ class Disk:
def _add_volume(self, dev, parent=None):
volume = str(dev.GetProperty('block.device'))
+ if not parent:
+ self.volumes.append ({
+ 'device' : volume,
+ 'label' : str(dev.GetProperty('block.device')),
+ 'fstype' : None,
+ 'fsversion': None,
+ 'uuid' : None,
+ 'interface': str(dev.GetProperty('storage.bus')),
+ 'parent' : None,
+ 'description': str(dev.GetProperty('storage.model')) + " " + str(dev.GetProperty('storage.vendor')),
+ 'size' : None,
+ 'totalsize' : str(int(dev.GetProperty('storage.size')) / 1024**2),
+ 'drive_type': str(dev.GetProperty('storage.drive_type')),
+ 'mount_point': "NA"
+ })
+ return
+
self.volumes.append ({
'device' : volume,
'label' : str(dev.GetProperty('volume.label')),
@@ -102,6 +121,7 @@ class Disk:
'drive_type': str(parent.GetProperty('storage.drive_type')),
'mount_point': str(dev.GetProperty('volume.mount_point'))
})
+ return
def _get_device(self, udi):
""" Return a dbus Interface to a specific HAL device UDI """
diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/get_server_details.py b/src/com.gluster.storage.management.server.scripts/src/nodes/get_server_details.py
index 67148586..932be8d7 100755
--- a/src/com.gluster.storage.management.server.scripts/src/nodes/get_server_details.py
+++ b/src/com.gluster.storage.management.server.scripts/src/nodes/get_server_details.py
@@ -117,16 +117,18 @@ def getServerDetails():
#TODO: probe and retrieve timezone, ntp-server, preferred-network details and update the tags
deviceList = {}
+ interfaces = responseDom.createTag("networkInterfaces", None)
for device in getNetDeviceList():
deviceList[device["device"]] = device
try:
macAddress = open("/sys/class/net/%s/address" % device["device"]).read().strip()
except IOError:
continue
- interfaces = responseDom.createTag("networkInterfaces", None)
interfaceTag = responseDom.createTag("networkInterface", None)
interfaceTag.appendChild(responseDom.createTag("name", device["device"]))
- interfaceTag.appendChild(responseDom.createTag("hwaddr", macAddress))
+ interfaceTag.appendChild(responseDom.createTag("hwAddr", macAddress))
+ interfaceTag.appendChild(responseDom.createTag("speed", device["speed"]))
+ interfaceTag.appendChild(responseDom.createTag("model", device["model"]))
if deviceList[device["device"]]:
if deviceList[device["device"]]["onboot"]:
interfaceTag.appendChild(responseDom.createTag("onboot", "yes"))
@@ -147,6 +149,7 @@ def getServerDetails():
interfaceTag.appendChild(responseDom.createTag("bootProto", "none"))
interfaces.appendChild(interfaceTag)
serverTag.appendChild(interfaces)
+
responseDom.appendTag(serverTag)
serverTag.appendChild(responseDom.createTag("numOfCPUs", int(os.sysconf('SC_NPROCESSORS_ONLN'))))
@@ -192,14 +195,21 @@ def getServerDetails():
partitionTag.appendChild(responseDom.createTag("mountPoint", disk['mount_point']))
partitionTag.appendChild(responseDom.createTag("serverName", serverName))
partitionTag.appendChild(responseDom.createTag("description", disk['description']))
- total, used, free = getDiskSizeInfo(disk['device'])
+ total, used, free = 0, 0, 0
+ if disk['size']:
+ total, used, free = getDiskSizeInfo(disk['device'])
if total:
partitionTag.appendChild(responseDom.createTag("space", str(total)))
totalDiskSpace += total
+ else:
+ partitionTag.appendChild(responseDom.createTag("space", "NA"))
if used:
partitionTag.appendChild(responseDom.createTag("spaceInUse", str(used)))
diskSpaceInUse += used
partitionTag.appendChild(responseDom.createTag("status", "READY"))
+ else:
+ partitionTag.appendChild(responseDom.createTag("spaceInUse", "NA"))
+ partitionTag.appendChild(responseDom.createTag("status", "UNINITIALIZED"))
diskTag.appendChild(partitionTag)
serverTag.appendChild(diskTag)
serverTag.appendChild(responseDom.createTag("totalDiskSpace", str(totalDiskSpace)))