diff options
Diffstat (limited to 'src/com.gluster.storage.management.server.scripts')
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))) |
