summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/CoreConstants.java3
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/AlertsManager.java11
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/GlusterDataModelManager.java7
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/get_brick_status.py2
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/get_server_details.py14
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/get_server_status.py2
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java32
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) {