summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorselvam <selvam@selvam-Studio-XPS-1340.(none)>2011-05-24 20:03:21 +0530
committerselvam <selvam@selvam-Studio-XPS-1340.(none)>2011-05-24 20:03:21 +0530
commit7b78baadb7dd100940a4d6ddb5ca33826a3a5ce1 (patch)
treec351ecdcdc4fe22c51d6186d921a6f95889e0985 /src
parentb321add074a8b8413f9285bac7458a1d4ceea60c (diff)
Story:#15 task:#81 Intergrate interface changes in the server, model and UI
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java24
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java108
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java7
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/CoreConstants.java1
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java8
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterDummyModel.java33
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServer.java1
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/NetworkInterface.java56
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Server.java17
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DiskTableLabelProvider.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java19
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java31
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java39
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java57
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java78
16 files changed, 275 insertions, 212 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java
index c7ea7507..3c3ef401 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/DiscoveredServersClient.java
@@ -45,19 +45,17 @@ public class DiscoveredServersClient extends AbstractClient {
private Object getDiscoveredServers(Boolean getDetails, Class responseClass) {
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.putSingle("details", getDetails.toString());
-
- //System.out.println((String) fetchResource(queryParams, String.class));
- return ((Response) fetchResource(queryParams, responseClass)).getData();
+ // return ((Response) fetchResource(queryParams, responseClass)).getData();
+ return responseClass.cast(fetchResource(queryParams, responseClass));
}
- @SuppressWarnings("unchecked")
- public List<String> getDiscoveredServerNames() {
- return (List<String>) getDiscoveredServers(Boolean.FALSE, StringListResponse.class);
+ public StringListResponse getDiscoveredServerNames() {
+
+ return (StringListResponse) getDiscoveredServers(Boolean.FALSE, StringListResponse.class);
}
- @SuppressWarnings("unchecked")
- public List<Server> getDiscoveredServerDetails() {
- return (List<Server>) getDiscoveredServers(Boolean.TRUE, ServerListResponse.class);
+ public ServerListResponse getDiscoveredServerDetails() {
+ return (ServerListResponse) getDiscoveredServers(Boolean.TRUE, ServerListResponse.class);
}
@SuppressWarnings("unchecked")
@@ -71,10 +69,10 @@ public class DiscoveredServersClient extends AbstractClient {
if (usersClient.authenticate("gluster", "gluster").isSuccess()) {
DiscoveredServersClient serverResource = new DiscoveredServersClient("localhost",
usersClient.getSecurityToken());
- List<String> discoveredServerNames = serverResource.getDiscoveredServerNames();
- System.out.println(discoveredServerNames);
- List<Server> discoveredServers = serverResource.getDiscoveredServerDetails();
- System.out.println(discoveredServers);
+ StringListResponse discoveredServerNames = serverResource.getDiscoveredServerNames();
+ System.out.println(discoveredServerNames.getData());
+ ServerListResponse discoveredServers = serverResource.getDiscoveredServerDetails();
+ System.out.println(discoveredServers.getData());
// Server serverDetails = ServerResource.getServer("localhost");
// System.out.println(serverDetails.getName());
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
index e639f615..3ef5f87f 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
@@ -19,7 +19,6 @@
package com.gluster.storage.management.client;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map.Entry;
@@ -29,21 +28,20 @@ import com.gluster.storage.management.core.model.Cluster;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Disk.DISK_STATUS;
-import com.gluster.storage.management.core.model.Entity;
import com.gluster.storage.management.core.model.Event;
import com.gluster.storage.management.core.model.Event.EVENT_TYPE;
import com.gluster.storage.management.core.model.GlusterDataModel;
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.LogMessage;
-import com.gluster.storage.management.core.model.NetworkInterface;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.TRANSPORT_TYPE;
import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
import com.gluster.storage.management.core.model.Volume.VOLUME_TYPE;
import com.gluster.storage.management.core.model.VolumeOptionInfo;
+import com.gluster.storage.management.core.response.GlusterServerListResponse;
import com.gluster.storage.management.core.response.RunningTaskListResponse;
+import com.gluster.storage.management.core.response.ServerListResponse;
import com.gluster.storage.management.core.response.VolumeListResponse;
import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse;
@@ -80,42 +78,9 @@ public class GlusterDataModelManager {
return instance;
}
- // Renamed preferredInterfaceName to interfaceName
- private GlusterServer addGlusterServer(List<GlusterServer> servers, Entity parent, String name,
- SERVER_STATUS status, String interfaceName, int numOfCPUs, double cpuUsage, double totalMemory,
- double memoryInUse) {
- GlusterServer glusterServer = new GlusterServer(name, parent, status, numOfCPUs, cpuUsage, totalMemory,
- memoryInUse);
- NetworkInterface networkInterface = addNetworkInterface(glusterServer, interfaceName); // Renamed
- // preferredInterfaceName
- // to
- // interfaceName
- // glusterServer.setPreferredNetworkInterface(networkInterface);
-
- servers.add(glusterServer);
- return glusterServer;
- }
-
- private NetworkInterface addNetworkInterface(Server server, String interfaceName) {
- NetworkInterface networkInterface = new NetworkInterface(interfaceName, server, "192.168.1."
- + Math.round(Math.random() * 255), "255.255.255.0", "192.168.1.1");
- server.setNetworkInterfaces(Arrays.asList(new NetworkInterface[] { networkInterface }));
- return networkInterface;
- }
-
- private void addDiscoveredServer(List<Server> servers, Entity parent, String name, int numOfCPUs, double cpuUsage,
- double totalMemory, double memoryInUse, double totalDiskSpace, double diskSpaceInUse) {
- Server server = new Server(name, parent, numOfCPUs, cpuUsage, totalMemory, memoryInUse);
- server.addDisk(new Disk(server, "sda", totalDiskSpace, diskSpaceInUse, DISK_STATUS.READY));
- addNetworkInterface(server, "eth0");
-
- servers.add(server);
- }
-
public void initializeModel(String securityToken, String knownServer) {
model = new GlusterDataModel("Gluster Data Model");
setSecurityToken(securityToken);
-
Cluster cluster = new Cluster("Home", model);
initializeGlusterServers(cluster, knownServer);
@@ -123,8 +88,6 @@ public class GlusterDataModelManager {
initializeAutoDiscoveredServers(cluster);
initializeDisks();
- // addDisksToVolumes();
- // addVolumeOptions();
createDummyLogMessages();
@@ -135,6 +98,31 @@ public class GlusterDataModelManager {
model.addCluster(cluster);
}
+ private void initializeGlusterServers(Cluster cluster, String knownServer) {
+ GlusterServerListResponse glusterServerListResponse = new GlusterServersClient(securityToken).getServers(knownServer);
+ if (!glusterServerListResponse.getStatus().isSuccess()) {
+ throw new GlusterRuntimeException(glusterServerListResponse.getStatus().getMessage());
+ }
+ cluster.setServers(glusterServerListResponse.getServers());
+ }
+
+ private void initializeAutoDiscoveredServers(Cluster cluster) {
+ ServerListResponse discoveredServerListResponse = new DiscoveredServersClient(serverName, securityToken).getDiscoveredServerDetails();
+ if (!discoveredServerListResponse.getStatus().isSuccess()) {
+ throw new GlusterRuntimeException(discoveredServerListResponse.getStatus().getMessage());
+ }
+ cluster.setAutoDiscoveredServers(discoveredServerListResponse.getData());
+ }
+
+ private void initializeVolumes(Cluster cluster) {
+ VolumesClient volumeClient = new VolumesClient(securityToken);
+ VolumeListResponse response = volumeClient.getAllVolumes();
+ if (!response.getStatus().isSuccess()) {
+ throw new GlusterRuntimeException("Error fetching volume list: [" + response.getStatus() + "]");
+ }
+ cluster.setVolumes(response.getVolumes());
+ }
+
private void initializeVolumeOptionsDefaults() {
VolumeOptionInfoListResponse response = new VolumesClient(getSecurityToken()).getVolumeOptionsDefaults();
if (!response.getStatus().isSuccess()) {
@@ -143,6 +131,19 @@ public class GlusterDataModelManager {
}
this.volumeOptionsDefaults = response.getOptions();
}
+
+ public void initializeRunningTasks(Cluster cluster) {
+ RunningTaskListResponse runningTaskResponse = new RunningTaskClient(securityToken).getRunningTasks();
+ if (!runningTaskResponse.getStatus().isSuccess()) {
+ throw new GlusterRuntimeException(runningTaskResponse.getStatus().getMessage());
+ }
+ cluster.setRunningTasks(runningTaskResponse.getRunningTasks());
+ }
+
+ public void initializeAlerts(Cluster cluster) {
+ cluster.setAlerts(new AlertsClient(securityToken).getAllAlerts());
+ }
+
private void addVolumeOptions() {
for (Volume vol : new Volume[] { volume1, volume2, volume3, volume4, volume5 }) {
@@ -162,14 +163,6 @@ public class GlusterDataModelManager {
return volume;
}
- private void initializeVolumes(Cluster cluster) {
- VolumesClient volumeClient = new VolumesClient(securityToken);
- VolumeListResponse response = volumeClient.getAllVolumes();
- if (!response.getStatus().isSuccess()) {
- throw new GlusterRuntimeException("Error fetching volume list: [" + response.getStatus() + "]");
- }
- cluster.setVolumes(response.getVolumes());
- }
private void initializeDisks() {
s1da = new Disk(server1, "sda", 100d, 80d, DISK_STATUS.READY);
@@ -181,7 +174,7 @@ public class GlusterDataModelManager {
s2dd = new Disk(server2, "sdd", 200d, 124.89, DISK_STATUS.READY);
// disk name unavailable since server is offline
- s3da = new Disk(server3, "NA", -1d, -1d, DISK_STATUS.OFFLINE);
+ s3da = new Disk(server3, "NA", -1d, -1d, DISK_STATUS.IO_ERROR);
s4da = new Disk(server4, "sda", 100d, 85.39, DISK_STATUS.READY);
@@ -227,14 +220,6 @@ public class GlusterDataModelManager {
volume5.addDisk("server5:sdb");
}
- private void initializeGlusterServers(Cluster cluster, String knownServer) {
- cluster.setServers(new GlusterServersClient(securityToken).getServers(knownServer));
- }
-
- private void initializeAutoDiscoveredServers(Cluster cluster) {
- cluster.setAutoDiscoveredServers(new DiscoveredServersClient(serverName, securityToken)
- .getDiscoveredServerDetails());
- }
private void addMessages(List<LogMessage> messages, Disk disk, String severity, int count) {
for (int i = 1; i <= count; i++) {
@@ -250,17 +235,6 @@ public class GlusterDataModelManager {
addMessages(logMessages, disk, "INFO", 5);
}
- public void initializeRunningTasks(Cluster cluster) {
- RunningTaskListResponse runningTaskResponse = new RunningTaskClient(securityToken).getRunningTasks();
- if (!runningTaskResponse.getStatus().isSuccess()) {
- throw new GlusterRuntimeException(runningTaskResponse.getStatus().getMessage());
- }
- cluster.setRunningTasks(runningTaskResponse.getRunningTasks());
- }
-
- public void initializeAlerts(Cluster cluster) {
- cluster.setAlerts(new AlertsClient(securityToken).getAllAlerts());
- }
public List<LogMessage> createDummyLogMessages() {
addMessagesForDisk(logMessages, s1da);
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java
index 98b8878c..6d164993 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java
@@ -44,11 +44,12 @@ public class GlusterServersClient extends AbstractClient {
return RESOURCE_NAME;
}
- public List<GlusterServer> getServers(String knownServer) {
+ // public List<GlusterServer> getServers(String knownServer) {
+ public GlusterServerListResponse getServers(String knownServer) {
MultivaluedMap<String, String> queryParams = new MultivaluedMapImpl();
queryParams.add(RESTConstants.QUERY_PARAM_KNOWN_SERVER, knownServer);
GlusterServerListResponse response = (GlusterServerListResponse) fetchResource(queryParams, GlusterServerListResponse.class);
- return response.getServers();
+ return response; //.getServers();
}
@SuppressWarnings("unchecked")
@@ -78,7 +79,7 @@ public class GlusterServersClient extends AbstractClient {
if (usersClient.authenticate("gluster", "gluster").isSuccess()) {
GlusterServersClient serverResource = new GlusterServersClient(usersClient.getSecurityToken());
- List<GlusterServer> glusterServers = serverResource.getServers("127.0.0.1");
+ List<GlusterServer> glusterServers = serverResource.getServers("127.0.0.1").getData();
for (GlusterServer server : glusterServers) {
System.out.println(server.getName());
}
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 b5e25ce7..85a84c4a 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
@@ -31,4 +31,5 @@ public class CoreConstants {
public static final String DATE_WITH_TIME_FORMAT = "MM/dd/yyyy HH:mm:ss";
public static final String PURE_DATE_FORMAT = "MM/dd/yyyy";
public static final String PURE_TIME_FORMAT = "HH:mm:ss.SSS";
+ public static final String NA = "NA";
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java
index 9924d596..9acd3d71 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Disk.java
@@ -26,10 +26,10 @@ import com.gluster.storage.management.core.utils.StringUtil;
@XmlRootElement(name="Disk")
public class Disk extends Entity {
public enum DISK_STATUS {
- READY, UNINITIALIZED, INITIALIZING, OFFLINE
+ READY, UNINITIALIZED, INITIALIZING, IO_ERROR
};
- private String[] DISK_STATUS_STR = { "Ready", "Uninitialized", "Initializing", "Offline" };
+ private String[] DISK_STATUS_STR = { "Ready", "Uninitialized", "Initializing", "I/O Error" };
private String serverName;
private Double space;
@@ -52,8 +52,8 @@ public class Disk extends Entity {
return getStatus() == DISK_STATUS.UNINITIALIZED;
}
- public boolean isOffline() {
- return getStatus() == DISK_STATUS.OFFLINE;
+ public boolean hasErrors() {
+ return getStatus() == DISK_STATUS.IO_ERROR;
}
public boolean isReady() {
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterDummyModel.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterDummyModel.java
index 09137014..af90b574 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterDummyModel.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterDummyModel.java
@@ -56,16 +56,15 @@ public class GlusterDummyModel {
double memoryInUse) {
GlusterServer glusterServer = new GlusterServer(name, parent, status, numOfCPUs, cpuUsage, totalMemory,
memoryInUse);
- NetworkInterface networkInterface = addNetworkInterface(glusterServer, interfaceName); // Renamed preferredInterfaceName to interfaceName
- // glusterServer.setPreferredNetworkInterface(networkInterface);
+ NetworkInterface networkInterface = addNetworkInterface(glusterServer, interfaceName);
servers.add(glusterServer);
return glusterServer;
}
private NetworkInterface addNetworkInterface(Server server, String interfaceName) {
- NetworkInterface networkInterface = new NetworkInterface(interfaceName, server, "192.168.1."
- + Math.round(Math.random() * 255), "255.255.255.0", "192.168.1.1");
+ NetworkInterface networkInterface = new NetworkInterface(interfaceName, server, "00:00:00:00", "IPV6-IN-IPV4",
+ "1000MB/S", "192.168.1." + Math.round(Math.random() * 255), "255.255.255.0", "192.168.1.1");
server.setNetworkInterfaces(Arrays.asList(new NetworkInterface[] { networkInterface }));
return networkInterface;
}
@@ -148,7 +147,7 @@ public class GlusterDummyModel {
s2dc = new Disk(server2, "sdc", 200d, -1d, DISK_STATUS.UNINITIALIZED);
s2dd = new Disk(server2, "sdd", 200d, 124.89, DISK_STATUS.READY);
- s3da = new Disk(server3, "NA", -1d, -1d, DISK_STATUS.OFFLINE); // disk name unavailable since server is offline
+ s3da = new Disk(server3, "NA", -1d, -1d, DISK_STATUS.IO_ERROR); // disk name unavailable since server is offline
s4da = new Disk(server4, "sda", 100d, 85.39, DISK_STATUS.READY);
@@ -245,29 +244,29 @@ public class GlusterDummyModel {
public static List<LogMessage> getDummyLogMessages() {
return logMessages;
}
-
+
public Disk getVolumeDisk(String volumeDisk) {
List<Disk> allDisks = getReadyDisksOfAllServers();
String brickInfo[] = volumeDisk.split(":");
- for( Disk disk: allDisks) {
+ for (Disk disk : allDisks) {
if (disk.getServerName() == brickInfo[0] && disk.getName() == brickInfo[1]) {
return disk;
}
}
return null;
}
-
+
public List<Disk> getReadyDisksOfVolume(Volume volume) {
-// List<Disk> disks = new ArrayList<Disk>();
-// for (Disk disk : volume.getDisks()) {
-// if (disk.isReady()) {
-// disks.add(disk);
-// }
-// }
-// return disks;
+ // List<Disk> disks = new ArrayList<Disk>();
+ // for (Disk disk : volume.getDisks()) {
+ // if (disk.isReady()) {
+ // disks.add(disk);
+ // }
+ // }
+ // return disks;
Disk disk = null;
List<Disk> volumeDisks = new ArrayList<Disk>();
- for (String volumeDisk : volume.getDisks() ) {
+ for (String volumeDisk : volume.getDisks()) {
disk = getVolumeDisk(volumeDisk);
if (disk != null && disk.isReady()) {
volumeDisks.add(disk);
@@ -290,7 +289,7 @@ public class GlusterDummyModel {
public List<Disk> getReadyDisksOfAllServersExcluding(List<Disk> excludeDisks) {
List<Disk> disks = new ArrayList<Disk>();
-
+
for (Server server : ((Cluster) model.getChildren().get(0)).getServers()) {
for (Disk disk : server.getDisks()) {
if (disk.isReady() && !excludeDisks.contains(disk)) {
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServer.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServer.java
index fd4e58c9..c7748f9c 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServer.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/GlusterServer.java
@@ -33,7 +33,6 @@ public class GlusterServer extends Server {
private String uuid;
private SERVER_STATUS status;
- // private NetworkInterface preferredNetworkInterface;
private Cluster cluster;
public GlusterServer() {
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/NetworkInterface.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/NetworkInterface.java
index 882dfe09..c0521ef3 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/NetworkInterface.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/NetworkInterface.java
@@ -20,24 +20,29 @@ package com.gluster.storage.management.core.model;
import javax.xml.bind.annotation.XmlRootElement;
-@XmlRootElement(name="networkInterface")
+@XmlRootElement(name = "networkInterface")
public class NetworkInterface extends Entity {
+ private String hwAddr;
+ private String model;
+ private String speed;
private String ipAddress;
private String netMask;
private String defaultGateway;
-// private boolean isPreferred;
-
+
public NetworkInterface() {
-
+
}
-// public boolean isPreferred() {
-// return isPreferred;
-// }
-//
-// public void setPreferred(boolean isPreferred) {
-// this.isPreferred = isPreferred;
-// }
+ public NetworkInterface(String name, Entity parent, String hwAddr, String model, String speed, String ipAddress,
+ String netMask, String defaultGateway) {
+ super(name, parent);
+ setHwAddr(hwAddr);
+ setModel(model);
+ setSpeed(speed);
+ setIpAddress(ipAddress);
+ setNetMask(netMask);
+ setDefaultGateway(defaultGateway);
+ }
public String getIpAddress() {
return ipAddress;
@@ -63,11 +68,28 @@ public class NetworkInterface extends Entity {
this.defaultGateway = defaultGateway;
}
- public NetworkInterface(String name, Entity parent, String ipAddress, String netMask, String defaultGateway) {
- super(name, parent);
- setIpAddress(ipAddress);
- setNetMask(netMask);
- setDefaultGateway(defaultGateway);
+ public String getHwAddr() {
+ return hwAddr;
}
-
+
+ public void setHwAddr(String hwAddr) {
+ this.hwAddr = hwAddr;
+ }
+
+ public String getModel() {
+ return model;
+ }
+
+ public void setModel(String model) {
+ this.model = model;
+ }
+
+ public String getSpeed() {
+ return speed;
+ }
+
+ public void setSpeed(String speed) {
+ this.speed = speed;
+ }
+
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Server.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Server.java
index 4f870eaf..256b9ec4 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Server.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Server.java
@@ -133,7 +133,7 @@ public class Server extends Entity {
}
public void addDisk(Disk disk) {
- if (disks.add(disk)) {
+ if (disks.add(disk) && disk.isReady()) {
totalDiskSpace += disk.getSpace();
diskSpaceInUse += disk.getSpaceInUse();
}
@@ -180,4 +180,19 @@ public class Server extends Entity {
public boolean filter(String filterString, boolean caseSensitive) {
return StringUtil.filterString(getName() + getIpAddressesAsString(), filterString, caseSensitive);
}
+
+ @SuppressWarnings("unchecked")
+ public void copyFrom(Server server) {
+ this.setName(server.getName());
+ this.setParent(server.getParent());
+ this.setChildren(( List<Entity>) server.getChildren());
+ this.setNetworkInterfaces(server.getNetworkInterfaces());
+ this.setNumOfCPUs(server.getNumOfCPUs());
+ this.setCpuUsage(server.getCpuUsage());
+ this.setTotalMemory(server.getTotalMemory());
+ this.setMemoryInUse(server.getMemoryInUse());
+ this.setTotalDiskSpace(server.getTotalDiskSpace());
+ this.setDiskSpaceInUse(server.getDiskSpaceInUse());
+ this.setDisks(server.getDisks());
+ }
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DiskTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DiskTableLabelProvider.java
index 92553797..520bc3e7 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DiskTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/DiskTableLabelProvider.java
@@ -42,7 +42,7 @@ public class DiskTableLabelProvider extends TableLabelProviderAdapter {
switch (status) {
case READY:
return guiHelper.getImage(IImageKeys.STATUS_ONLINE);
- case OFFLINE:
+ case IO_ERROR:
return guiHelper.getImage(IImageKeys.STATUS_OFFLINE);
case UNINITIALIZED:
return guiHelper.getImage(IImageKeys.DISK_UNINITIALIZED);
@@ -65,7 +65,7 @@ public class DiskTableLabelProvider extends TableLabelProviderAdapter {
}
private String getDiskSpace(Disk disk) {
- if (disk.isOffline()) {
+ if (disk.hasErrors() || disk.isUninitialized()) {
return "NA";
} else {
return NumberUtil.formatNumber(disk.getSpace());
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java
index d7b700d4..760d8346 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/NetworkInterfaceTableLabelProvider.java
@@ -19,6 +19,7 @@
package com.gluster.storage.management.gui;
+import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.NetworkInterface;
import com.gluster.storage.management.gui.views.details.tabcreators.GlusterServerTabCreator.NETWORK_INTERFACE_TABLE_COLUMN_INDICES;
@@ -30,11 +31,12 @@ public class NetworkInterfaceTableLabelProvider extends TableLabelProviderAdapte
}
NetworkInterface networkInterface = (NetworkInterface) element;
- return (columnIndex == NETWORK_INTERFACE_TABLE_COLUMN_INDICES.INTERFACE.ordinal() ? networkInterface.getName()
+ String columnText = (columnIndex == NETWORK_INTERFACE_TABLE_COLUMN_INDICES.INTERFACE.ordinal() ? networkInterface.getName()
: columnIndex == NETWORK_INTERFACE_TABLE_COLUMN_INDICES.IP_ADDRESS.ordinal() ? networkInterface.getIpAddress()
: columnIndex == NETWORK_INTERFACE_TABLE_COLUMN_INDICES.NETMASK.ordinal() ? networkInterface.getNetMask()
: columnIndex == NETWORK_INTERFACE_TABLE_COLUMN_INDICES.GATEWAY.ordinal() ? networkInterface.getDefaultGateway()
// : columnIndex == NETWORK_INTERFACE_TABLE_COLUMN_INDICES.PREFERRED.ordinal() ? (networkInterface.isPreferred() ? "Yes" : "No")
: "Invalid");
+ return ((columnText == null || columnText.trim().equals("")) ? CoreConstants.NA : columnText);
}
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
index cd5fab62..a07c64bf 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/ServerDiskTableLabelProvider.java
@@ -20,6 +20,7 @@ package com.gluster.storage.management.gui;
import org.eclipse.swt.graphics.Image;
+import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Disk;
import com.gluster.storage.management.core.model.Disk.DISK_STATUS;
@@ -43,7 +44,7 @@ public class ServerDiskTableLabelProvider extends TableLabelProviderAdapter {
switch (status) {
case READY:
return guiHelper.getImage(IImageKeys.STATUS_ONLINE);
- case OFFLINE:
+ case IO_ERROR:
return guiHelper.getImage(IImageKeys.STATUS_OFFLINE);
case UNINITIALIZED:
return guiHelper.getImage(IImageKeys.DISK_UNINITIALIZED);
@@ -58,16 +59,16 @@ public class ServerDiskTableLabelProvider extends TableLabelProviderAdapter {
}
private String getDiskSpaceInUse(Disk disk) {
- if(disk.isReady()) {
- return NumberUtil.formatNumber(disk.getSpaceInUse());
+ if(disk.hasErrors() || disk.isUninitialized()) {
+ return CoreConstants.NA;
} else {
- return "NA";
+ return NumberUtil.formatNumber(disk.getSpaceInUse());
}
}
private String getDiskSpace(Disk disk) {
- if(disk.isOffline()) {
- return "NA";
+ if(disk.hasErrors() || disk.isUninitialized()) {
+ return CoreConstants.NA;
} else {
return NumberUtil.formatNumber(disk.getSpace());
}
@@ -78,13 +79,13 @@ public class ServerDiskTableLabelProvider extends TableLabelProviderAdapter {
if (!(element instanceof Disk)) {
return null;
}
-
Disk disk = (Disk) element;
- return (columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.DISK.ordinal() ? disk.getName()
- : columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.SPACE.ordinal() ? getDiskSpace(disk)
+ String columnText = (columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.DISK.ordinal() ? disk.getName()
+ : columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.SPACE.ordinal() ? getDiskSpace(disk)
: columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.SPACE_IN_USE.ordinal() ? getDiskSpaceInUse(disk)
: columnIndex == SERVER_DISK_TABLE_COLUMN_INDICES.STATUS.ordinal() ? disk.getStatusStr()
: "Invalid");
+ return ((columnText == null || columnText.trim().equals("")) ? CoreConstants.NA : columnText);
}
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java
index 004160a7..0c91a02b 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/AbstractServersResource.java
@@ -21,8 +21,8 @@
package com.gluster.storage.management.server.resources;
import com.gluster.storage.management.core.model.Disk;
-import com.gluster.storage.management.core.model.NetworkInterface;
import com.gluster.storage.management.core.model.Server;
+import com.gluster.storage.management.core.response.GenericResponse;
/**
* Abstract resource class for servers. Abstracts basic server related functionality like "get server details".
@@ -38,14 +38,15 @@ public class AbstractServersResource {
* @param server
* Server whose details are to be fetched
*/
- protected void fetchServerDetails(Server server) {
- String serverName = server.getName();
-
- // TODO: Fetch the server details and populate in the object.
- // For now, populating dummy data.
- populateDummyData(server);
- }
+
+
+// public Server getServerDetails(String serverName) {
+//
+// }
+
+
+
/**
* @param server
*/
@@ -55,15 +56,15 @@ public class AbstractServersResource {
server.setTotalMemory(Math.ceil(Math.random() * 8));
server.setMemoryInUse(Math.random() * server.getTotalMemory());
addDummyDisks(server);
- addDummyNetworkInterfaces(server, (int) Math.ceil(Math.random() * 4));
+ //addDummyNetworkInterfaces(server, (int) Math.ceil(Math.random() * 4));
}
- private void addDummyNetworkInterfaces(Server server, int interfaceCount) {
- for (int i = 0; i < interfaceCount; i++) {
- server.addNetworkInterface(new NetworkInterface("eth" + i, server, "192.168.1." + ipCount++,
- "255.255.255.0", "192.168.1.1"));
- }
- }
+// private void addDummyNetworkInterfaces(Server server, int interfaceCount) {
+// for (int i = 0; i < interfaceCount; i++) {
+// server.addNetworkInterface(new NetworkInterface("eth" + i, server, "192.168.1." + ipCount++,
+// "255.255.255.0", "192.168.1.1"));
+// }
+// }
/**
* @param server
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java
index c1ddffd1..189e75f9 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/DiscoveredServersResource.java
@@ -33,8 +33,11 @@ import org.springframework.stereotype.Component;
import com.gluster.storage.management.core.model.Response;
import com.gluster.storage.management.core.model.Server;
import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.response.GenericResponse;
import com.gluster.storage.management.core.response.ServerListResponse;
import com.gluster.storage.management.core.response.StringListResponse;
+import com.gluster.storage.management.server.utils.ServerUtil;
+import com.sun.jersey.api.core.InjectParam;
import com.sun.jersey.spi.resource.Singleton;
@Component
@@ -42,6 +45,9 @@ import com.sun.jersey.spi.resource.Singleton;
@Path("/discoveredservers")
public class DiscoveredServersResource extends AbstractServersResource {
private List<String> discoveredServerNames = new ArrayList<String>();
+
+ @InjectParam
+ private static ServerUtil serverUtil;
public List<String> getDiscoveredServerNames() {
return discoveredServerNames;
@@ -49,22 +55,27 @@ public class DiscoveredServersResource extends AbstractServersResource {
@GET
@Produces(MediaType.TEXT_XML)
- public Response getDiscoveredServers(@QueryParam("details") Boolean getDetails) {
+ public Object getDiscoveredServers(@QueryParam("details") Boolean getDetails) {
if(getDetails != null && getDetails == true) {
- return new ServerListResponse(Status.STATUS_SUCCESS, getDiscoveredServerDetails());
+ return getDiscoveredServerDetails();
}
return new StringListResponse(getDiscoveredServerNames());
}
- private List<Server> getDiscoveredServerDetails() {
+ private ServerListResponse getDiscoveredServerDetails() {
List<Server> discoveredServers = new ArrayList<Server>();
List<String> serverNames = getDiscoveredServerNames();
+ GenericResponse<Server> discoveredServer;
for (String serverName : serverNames) {
- discoveredServers.add(getDiscoveredServer(serverName));
+ discoveredServer = getDiscoveredServer(serverName);
+ if (!discoveredServer.getStatus().isSuccess()) {
+ return new ServerListResponse(discoveredServer.getStatus(), discoveredServers);
+ }
+ discoveredServers.add(discoveredServer.getData());
}
- return discoveredServers;
+ return new ServerListResponse(Status.STATUS_SUCCESS, discoveredServers);
}
-
+
public void setDiscoveredServerNames(List<String> discoveredServerNames) {
synchronized (discoveredServerNames) {
this.discoveredServerNames = discoveredServerNames;
@@ -74,11 +85,21 @@ public class DiscoveredServersResource extends AbstractServersResource {
@Path("/{serverName}")
@GET
@Produces(MediaType.TEXT_XML)
- public Server getDiscoveredServer(@PathParam("serverName") String serverName) {
+ public GenericResponse<Server> getDiscoveredServer(@PathParam("serverName") String serverName) {
Server server = new Server(serverName);
- fetchServerDetails(server);
- return server;
+ return fetchServerDetails(server);
+ }
+
+ protected GenericResponse<Server> fetchServerDetails(Server server) {
+ // fetch standard server details like cpu, disk, memory details
+ Object response = serverUtil.executeOnServer(true, server.getName(), "get_server_details.py", Server.class);
+ if (response instanceof Status) {
+ return new GenericResponse<Server>((Status)response, server);
+ }
+ server.copyFrom((Server) response); // Update the details in <Server> object
+ return new GenericResponse<Server>( Status.STATUS_SUCCESS, (Server) response);
}
+
public static void main(String[] args) {
StringListResponse listResponse = (StringListResponse)new DiscoveredServersResource().getDiscoveredServers(false);
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java
index 3092e80d..d01b4d3d 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/GlusterServersResource.java
@@ -37,9 +37,14 @@ 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.Server;
import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.response.GenericResponse;
import com.gluster.storage.management.core.response.GlusterServerListResponse;
import com.gluster.storage.management.core.response.GlusterServerResponse;
+import com.gluster.storage.management.core.utils.ProcessResult;
+import com.gluster.storage.management.core.utils.ProcessUtil;
+import com.gluster.storage.management.server.filters.GlusterResourceFilterFactory;
import com.gluster.storage.management.server.utils.GlusterUtil;
+import com.gluster.storage.management.server.utils.ServerUtil;
import com.gluster.storage.management.server.utils.SshUtil;
import com.sun.jersey.api.core.InjectParam;
import com.sun.jersey.spi.resource.Singleton;
@@ -50,7 +55,10 @@ import com.sun.jersey.spi.resource.Singleton;
public class GlusterServersResource extends AbstractServersResource {
@InjectParam
private GlusterUtil glusterUtil;
-
+
+ @InjectParam
+ private static ServerUtil serverUtil;
+
public static final String HOSTNAMETAG = "hostname:";
public void setGlusterUtil(GlusterUtil glusterUtil) {
@@ -61,31 +69,35 @@ public class GlusterServersResource extends AbstractServersResource {
return glusterUtil;
}
- private List<GlusterServer> getServerDetails(String knownServer) {
+ private GlusterServerListResponse getServerDetails(String knownServer) {
List<GlusterServer> glusterServers = glusterUtil.getGlusterServers(knownServer);
+ GenericResponse<Server> serverResponse;
for (GlusterServer server : glusterServers) {
if (server.getStatus() == SERVER_STATUS.ONLINE) {
- fetchServerDetails(server);
+ serverResponse = fetchServerDetails(server);
+ if (!serverResponse.getStatus().isSuccess()) {
+ return new GlusterServerListResponse(serverResponse.getStatus(), glusterServers);
+ }
}
}
- return glusterServers;
+ return new GlusterServerListResponse(Status.STATUS_SUCCESS, glusterServers);
}
@GET
@Produces(MediaType.TEXT_XML)
- public GlusterServerListResponse getGlusterServers(@QueryParam(RESTConstants.QUERY_PARAM_KNOWN_SERVER) String knownServer) {
- return new GlusterServerListResponse(Status.STATUS_SUCCESS, getServerDetails(knownServer));
+ public GlusterServerListResponse getGlusterServers(
+ @QueryParam(RESTConstants.QUERY_PARAM_KNOWN_SERVER) String knownServer) {
+ return getServerDetails(knownServer);
}
@GET
@Path("{serverName}")
@Produces(MediaType.TEXT_XML)
- public GlusterServer getGlusterServer(@PathParam("serverName") String serverName) {
+ public GlusterServerResponse getGlusterServer(@PathParam("serverName") String serverName) {
// TODO: Implement logic to fetch details of a single gluster server (peer)
GlusterServer server = new GlusterServer(serverName);
- fetchServerDetails(server);
- server.setStatus(SERVER_STATUS.ONLINE);
- return server;
+ GenericResponse<Server> serverResponse = fetchServerDetails(server);
+ return new GlusterServerResponse(serverResponse.getStatus(), (GlusterServer) serverResponse.getData());
}
/*
@@ -95,25 +107,28 @@ public class GlusterServersResource extends AbstractServersResource {
* com.gluster.storage.management.server.resources.AbstractServersResource#fetchServerDetails(com.gluster.storage
* .management.core.model.Server)
*/
- @Override
- protected void fetchServerDetails(Server server) {
+ protected GenericResponse<Server> fetchServerDetails(Server server) {
// fetch standard server details like cpu, disk, memory details
- super.fetchServerDetails(server);
-
- // TODO: Fetch gluster server details like status
+ Object response = serverUtil.executeOnServer(true, server.getName(), "get_server_details.py", Server.class);
+ if (response instanceof Status) {
+ return new GenericResponse<Server>((Status) response, server);
+ }
+ server.copyFrom((Server) response); // Update the details in <Server> object
+ return new GenericResponse<Server>(Status.STATUS_SUCCESS, (Server) response);
}
@POST
@Produces(MediaType.TEXT_XML)
- public GlusterServerResponse addServer(@FormParam("serverName") String serverName, @FormParam("existingServer") String existingServer) {
+ public GlusterServerResponse addServer(@FormParam("serverName") String serverName,
+ @FormParam("existingServer") String existingServer) {
Status status = glusterUtil.addServer(serverName, existingServer);
if (!status.isSuccess()) {
return new GlusterServerResponse(status, null);
}
- return new GlusterServerResponse(Status.STATUS_SUCCESS, getGlusterServer(serverName));
+ return new GlusterServerResponse(Status.STATUS_SUCCESS, getGlusterServer(serverName).getGlusterServer());
}
-
+
@DELETE
@Produces(MediaType.TEXT_XML)
public Status removeServer(@QueryParam("serverName") String serverName) {
@@ -125,10 +140,10 @@ public class GlusterServersResource extends AbstractServersResource {
GlusterUtil glusterUtil = new GlusterUtil();
glusterUtil.setSshUtil(new SshUtil());
glusterServersResource.setGlusterUtil(glusterUtil);
- System.out.println(glusterServersResource.getServerDetails("127.0.0.1").size());
+ // System.out.println(glusterServersResource.getServerDetails("127.0.0.1").size());
// To add a server
-// GlusterServerResponse response = glusterServersResource.addServer("my-server");
-// System.out.println(response.getData().getName());
+ // GlusterServerResponse response = glusterServersResource.addServer("my-server");
+ // System.out.println(response.getData().getName());
}
}
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java
index 20f5252d..23a8169d 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java
@@ -49,6 +49,9 @@ import com.gluster.storage.management.core.utils.ProcessUtil;
public class ServerUtil {
@Autowired
ServletContext servletContext;
+
+ @Autowired
+ private SshUtil sshUtil;
private static final String SCRIPT_DIR = "scripts";
private static final String SCRIPT_COMMAND = "python";
@@ -84,7 +87,7 @@ public class ServerUtil {
Class expectedClass) {
try {
String output = executeOnServer(serverName, commandWithArgs);
-
+System.out.println(output);
// In case the script execution exits ungracefully, the agent would return a GenericResponse.
// hence pass last argument as true to try GenericResponse unmarshalling in such cases.
Object response = unmarshal(expectedClass, output, expectedClass != GenericResponse.class);
@@ -101,40 +104,51 @@ public class ServerUtil {
}
private String executeOnServer(String serverName, String commandWithArgs) {
- try {
- InetAddress address = InetAddress.getByName(serverName);
- Socket connection = new Socket(address, 50000);
-
- PrintWriter writer = new PrintWriter(connection.getOutputStream(), true);
- writer.println(commandWithArgs);
- writer.println(); // empty line means end of request
-
- InputStream inputStream = connection.getInputStream();
- int available = inputStream.available();
-
- StringBuffer output = new StringBuffer();
- if( available > 0 ) {
- // This happens when PeerAgent sends complete file
- byte[] responseData = new byte[available];
- inputStream.read(responseData);
- output.append(new String(responseData, "UTF-8"));
- } else {
- // This happens in case of normal XML response from PeerAgent
- BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
-
- String line;
- while (!(line = reader.readLine()).trim().isEmpty()) {
- output.append(line + CoreConstants.NEWLINE);
- }
- }
- connection.close();
-
- return output.toString();
- } catch (Exception e) {
- throw new GlusterRuntimeException("Error during remote execution: [" + e.getMessage() + "]");
+ ProcessResult result = sshUtil.executeRemote(serverName, commandWithArgs);
+ if(!result.isSuccess()) {
+ throw new GlusterRuntimeException("Command [" + commandWithArgs + "] failed on [" + serverName
+ + "] with error [" + result.getExitValue() + "][" + result.getOutput() + "]");
}
+ return result.getOutput();
}
+ // This is the old executeOnServer that used socket communication.
+ // We can keep it commented for the time being.
+ // private String executeOnServerUsingSocket(String serverName, String commandWithArgs) {
+ // try {
+ // InetAddress address = InetAddress.getByName(serverName);
+ // Socket connection = new Socket(address, 50000);
+ //
+ // PrintWriter writer = new PrintWriter(connection.getOutputStream(), true);
+ // writer.println(commandWithArgs);
+ // writer.println(); // empty line means end of request
+ //
+ // InputStream inputStream = connection.getInputStream();
+ // int available = inputStream.available();
+ //
+ // StringBuffer output = new StringBuffer();
+ // if( available > 0 ) {
+ // // This happens when PeerAgent sends complete file
+ // byte[] responseData = new byte[available];
+ // inputStream.read(responseData);
+ // output.append(new String(responseData, "UTF-8"));
+ // } else {
+ // // This happens in case of normal XML response from PeerAgent
+ // BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
+ //
+ // String line;
+ // while (!(line = reader.readLine()).trim().isEmpty()) {
+ // output.append(line + CoreConstants.NEWLINE);
+ // }
+ // }
+ // connection.close();
+ //
+ // return output.toString();
+ // } catch (Exception e) {
+ // throw new GlusterRuntimeException("Error during remote execution: [" + e.getMessage() + "]");
+ // }
+ // }
+
public String getFileFromServer(String serverName, String fileName) {
return executeOnServer(serverName, "get_file " + fileName);
}