diff options
| author | Shireesh Anjal <shireesh@gluster.com> | 2011-07-22 16:10:03 +0530 |
|---|---|---|
| committer | Shireesh Anjal <shireesh@gluster.com> | 2011-07-22 16:10:03 +0530 |
| commit | 660a3afa12de06e790e74a0dae55f0f1dbeaab74 (patch) | |
| tree | eb34b1b19a22d38c1a9b774e0ee671353b8453e0 /src | |
| parent | 5aaec5b2bb350cd7414fb4077c2db982599ed9c1 (diff) | |
| parent | 500221df2e0a79a055256fc87aa6a54dec34725a (diff) | |
Merge branch 'master' of github.com:gluster/console
Diffstat (limited to 'src')
7 files changed, 49 insertions, 22 deletions
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/CoreConstants.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/CoreConstants.java index 4d77ba43..67ab1695 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/CoreConstants.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/CoreConstants.java @@ -33,4 +33,7 @@ public class CoreConstants { public static final String PURE_TIME_FORMAT = "HH:mm:ss.SSS"; public static final String NA = "NA"; public static final String DEFAULT_PASSWORD = "gluster"; + public static final String OFFLINE = "OFFLINE"; + public static final String ONLINE = "ONLINE"; + public static final String UNKNOWN = "UNKNOWN"; } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java index 8af61058..5bfae8d0 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java @@ -35,6 +35,7 @@ import com.gluster.storage.management.core.model.GlusterServer; import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS; import com.gluster.storage.management.core.model.Partition; import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS; import com.gluster.storage.management.core.utils.StringUtil; import com.gluster.storage.management.gui.preferences.PreferenceConstants; @@ -117,7 +118,7 @@ public class AlertsManager { // To check High CPU usage if (server.getCpuUsage() >= CPU_USAGE_THRESHOLD) { serverAlerts.add(new Alert(ALERT_TYPES.CPU_USAGE_ALERT, server.getName(), - Alert.ALERT_TYPE_STR[ALERT_TYPES.CPU_USAGE_ALERT.ordinal()] + "[" + server.getCpuUsage() + Alert.ALERT_TYPE_STR[ALERT_TYPES.CPU_USAGE_ALERT.ordinal()] + " [" + server.getCpuUsage() + "] in server [" + server.getName() + "]")); } @@ -125,7 +126,7 @@ public class AlertsManager { Double memoryUtilized = server.getMemoryInUse() / server.getTotalMemory() * 100d; if (memoryUtilized >= MEMORY_USAGE_THRESHOLD) { serverAlerts.add(new Alert(ALERT_TYPES.MEMORY_USAGE_ALERT, server.getName(), - Alert.ALERT_TYPE_STR[ALERT_TYPES.MEMORY_USAGE_ALERT.ordinal()] + "[" + Alert.ALERT_TYPE_STR[ALERT_TYPES.MEMORY_USAGE_ALERT.ordinal()] + " [" + StringUtil.formatNumber(memoryUtilized, 2) + "%] in server [" + server.getName() + "]")); } @@ -188,6 +189,10 @@ public class AlertsManager { List<String> offlineBricks = new ArrayList<String>(); for (Volume volume : cluster.getVolumes()) { + if (volume.getStatus() == VOLUME_STATUS.OFFLINE) { + continue; + } + // To check off line bricks offlineBricks = new ArrayList<String>(); for (Brick brick : volume.getBricks()) { @@ -198,7 +203,7 @@ public class AlertsManager { // One offline brick alert per volume if (offlineBricks.size() > 0) { volumeAlerts.add(new Alert(ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT, volume.getName(), - Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT.ordinal()] + Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT.ordinal()] + " " + offlineBricks.toString() + " in volume " + volume.getName())); } } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java index 07aa37da..da72d1cc 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java @@ -462,12 +462,11 @@ public class GlusterDataModelManager { Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_SERVERS_ALERT.ordinal()] + " " + server.getName())); continue; } - + if (alerts.size() == 3) { - alerts.add(new Alert(ALERT_TYPES.DISK_USAGE_ALERT, server.getName(), - Alert.ALERT_TYPE_STR[ALERT_TYPES.DISK_USAGE_ALERT.ordinal()] + " in " + server.getName() + ":" + "sdc")); alerts.add(new Alert(ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT, "songs", - Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT.ordinal()] + " [KVM-GVSA4:/export/hdb4/songs] in volume [songs]")); + Alert.ALERT_TYPE_STR[ALERT_TYPES.OFFLINE_VOLUME_BRICKS_ALERT.ordinal()] + + " [KVM-GVSA4:/export/hdb4/songs] in volume [songs]")); continue; } } 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 index 91622f1e..cf84080b 100755 --- 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 @@ -14,7 +14,7 @@ def main(): volumeName = sys.argv[1] brickName = sys.argv[2] - pidFile = "/etc/glusterd/vols/%s/run/%s.pid" % (volumeName, brickName.replace(":", "-").replace("/", "-")) + pidFile = "/etc/glusterd/vols/%s/run/%s.pid" % (volumeName, brickName.replace(":", "").replace("/", "-")) if not os.path.exists(pidFile): print "OFFLINE" diff --git a/src/com.gluster.storage.management.server.scripts/src/get_server_details.py b/src/com.gluster.storage.management.server.scripts/src/get_server_details.py index 2beb685b..cda1518b 100755 --- a/src/com.gluster.storage.management.server.scripts/src/get_server_details.py +++ b/src/com.gluster.storage.management.server.scripts/src/get_server_details.py @@ -39,6 +39,14 @@ def getServerDetails(listall): serverTag = responseDom.appendTagRoute("server") serverTag.appendChild(responseDom.createTag("name", serverName)) serverTag.appendChild(responseDom.createTag("domainname", domain[0])) + if Utils.runCommand("pidof glusterd") == 0: + serverTag.appendChild(responseDom.createTag("status", "ONLINE")) + else: + serverTag.appendChild(responseDom.createTag("status", "OFFLINE")) + serverTag.appendChild(responseDom.createTag("cpuUsage", str(cpu))) + serverTag.appendChild(responseDom.createTag("totalMemory", str(convertKbToMb(meminfo['MemTotal'])))) + serverTag.appendChild(responseDom.createTag("memoryInUse", str(convertKbToMb(meminfo['MemUsed'])))) + serverTag.appendChild(responseDom.createTag("uuid", None)) for dns in nameServerList: serverTag.appendChild(responseDom.createTag("dns%s" % str(nameServerList.index(dns) +1) , dns)) @@ -90,12 +98,6 @@ def getServerDetails(listall): Utils.log("Failed to get disk details") sys.exit(1) - serverTag.appendChild(responseDom.createTag("cpuUsage", str(cpu))) - serverTag.appendChild(responseDom.createTag("totalMemory", str(convertKbToMb(meminfo['MemTotal'])))) - serverTag.appendChild(responseDom.createTag("memoryInUse", str(convertKbToMb(meminfo['MemUsed'])))) - serverTag.appendChild(responseDom.createTag("status", "ONLINE")) - serverTag.appendChild(responseDom.createTag("uuid", None)) - serverTag.appendChild(diskDom.getElementsByTagRoute("disks")[0]) return serverTag 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 index 99432a72..a57428b6 100755 --- 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 @@ -12,12 +12,10 @@ def main(): sys.stderr.write("usage: %s\n" % os.path.basename(sys.argv[0])) sys.exit(-1) - responseDom = ResponseXml() if Utils.runCommand("pidof glusterd") == 0: print "ONLINE" else: print "OFFLINE" - print responseDom.toxml() sys.exit(0) if __name__ == "__main__": diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java index 9878f223..f43b7ae6 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java @@ -392,20 +392,40 @@ public class GlusterUtil { return false; } - private boolean readBrick(Volume volume, String line) { - if (line.matches("Brick[0-9]+:.*")) { + private boolean readBrick(Volume volume, String brickLine) { + BRICK_STATUS brickStatus; + if (brickLine.matches("Brick[0-9]+:.*")) { // line: "Brick1: server1:/export/md0/volume-name" - String[] brickParts = line.split(":"); + String brickName = brickLine.split(": ")[1]; + String[] brickParts = brickLine.split(":"); String serverName = brickParts[1].trim(); String brickDir = brickParts[2].trim(); - addBrickToVolume(volume, serverName, brickDir); + //To get the brick status + brickStatus = getBrickStatus(serverName, volume.getName(), brickName); + + addBrickToVolume(volume, serverName, brickDir, brickStatus); return true; } return false; } - private void addBrickToVolume(Volume volume, String serverName, String brickDir) { - volume.addBrick(new Brick(serverName, BRICK_STATUS.ONLINE, brickDir.split("/")[2].trim(), brickDir)); + private void addBrickToVolume(Volume volume, String serverName, String brickDir, BRICK_STATUS status) { + volume.addBrick(new Brick(serverName, status, brickDir.split("/")[2].trim(), brickDir)); + } + + // Do not throw exception, Gracefully handle as Offline brick. + private BRICK_STATUS getBrickStatus(String serverName, String volumeName, String brick){ + try { + ProcessResult output = getSshUtil().executeRemote(serverName, "get_brick_status.py" + " " + volumeName + " " + brick); + + if (output.isSuccess() && output.getOutput().equals(CoreConstants.ONLINE)) { + return BRICK_STATUS.ONLINE; + } else { + return BRICK_STATUS.OFFLINE; + } + } catch(Exception e) { // Particularly interested on ConnectionExecption, if the server is offline + return BRICK_STATUS.OFFLINE; + } } private boolean readBrickGroup(String line) { |
