diff options
| author | Selvasundaram <selvam@gluster.com> | 2011-07-21 21:39:39 +0530 |
|---|---|---|
| committer | Selvasundaram <selvam@gluster.com> | 2011-07-22 12:23:48 +0530 |
| commit | b8f8971cadb8cfb0a950047234767c2e0a8346f4 (patch) | |
| tree | 3cb2fa731f74b877d360be2d31f75e74df5150a3 /src | |
| parent | 7ccbedc95387640e0b3f5a2fbedcf6e875a2c37c (diff) | |
Volume brick status feature and alerts message enhancement
Diffstat (limited to 'src')
5 files changed, 41 insertions, 14 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/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) { |
