summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSelvam <selvam@gluster.com>2011-05-05 12:36:42 +0530
committerSelvam <selvam@gluster.com>2011-05-05 12:36:42 +0530
commita46390ce97935a2c629f86c86a72e7407fc19740 (patch)
tree2fe117161223ed7bf5b39f881c3881d93ca6ccc3 /src
parenta2c8fa56175df44deacebbc816efa8562c2dc5a1 (diff)
parent6483de355e5c2204ad99009e4183808e00e17020 (diff)
Merge remote branch 'upstream/master'
Diffstat (limited to 'src')
-rwxr-xr-xsrc/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py23
-rw-r--r--src/com.gluster.storage.management.server/build/glusterserver.ant3
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java34
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/ServerUtil.java25
4 files changed, 63 insertions, 22 deletions
diff --git a/src/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py b/src/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py
index a09e055a..6218e921 100755
--- a/src/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py
+++ b/src/com.gluster.storage.management.server.scripts/src/nodes/PeerAgent.py
@@ -181,12 +181,27 @@ def main():
try:
requestString = Socket.readPacket(clientInputStream)
Utils.log('__DEBUG__ Received %s' % repr(requestString))
- responseString = executeCommand(requestString)
- if responseString:
- Socket.writePacket(clientOutputStream, responseString)
+ requestParts = requestString.split(None, 3)
+
+ if "get_file" == requestParts[0]:
+ if len(requestParts) != 2:
+ rs = ResponseXml()
+ rs.appendTagRoute("status.code", "-1")
+ rs.appendTagRoute("status.message", "File path not passed")
+ Socket.writePacket(clientOutputStream, rs.toprettyxml())
+ else:
+ filePath = requestParts[1]
+ fp = open(filePath)
+ clientSocket.sendall(fp.read())
+ fp.close()
clientOutputStream.flush()
else:
- Utils.log('__DEBUG__ empty response string')
+ responseString = executeCommand(requestString)
+ if responseString:
+ Socket.writePacket(clientOutputStream, responseString)
+ clientOutputStream.flush()
+ else:
+ Utils.log('__DEBUG__ empty response string')
Utils.log('__DEBUG__ Closing client %s' % str(clientAddress))
clientSocket.close()
except socket.error, e:
diff --git a/src/com.gluster.storage.management.server/build/glusterserver.ant b/src/com.gluster.storage.management.server/build/glusterserver.ant
index 88602fb6..98012515 100644
--- a/src/com.gluster.storage.management.server/build/glusterserver.ant
+++ b/src/com.gluster.storage.management.server/build/glusterserver.ant
@@ -39,7 +39,8 @@
<include name="**/*.sql" />
</fileset>
</copy>
- <javac srcdir="${basedir}/src" destdir="${WEB-INF}/classes" classpathref="libs" />
+ <!-- TODO: make debug option configurable in jenkins -->
+ <javac srcdir="${basedir}/src" destdir="${WEB-INF}/classes" classpathref="libs" debug="true" debuglevel="lines,vars,source"/>
</target>
<target name="archive" depends="compile">
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
index 7905111a..e635510a 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java
@@ -232,8 +232,14 @@ public class VolumesResource {
@SuppressWarnings("rawtypes")
private Status prepareBrick(String serverName, String diskName, String volumeName) {
- return (Status) ((GenericResponse) serverUtil.executeOnServer(true, serverName, PREPARE_BRICK_SCRIPT + " "
- + diskName + " " + volumeName, GenericResponse.class)).getStatus();
+ Object response = serverUtil.executeOnServer(true, serverName, PREPARE_BRICK_SCRIPT + " "
+ + diskName + " " + volumeName, GenericResponse.class);
+ if(response instanceof GenericResponse) {
+ return ((GenericResponse)response).getStatus();
+ } else {
+ // in case of script failure on server, a Status object will be returned
+ return (Status) response;
+ }
}
private Status createDirectories(List<String> disks, String volumeName) {
@@ -245,11 +251,8 @@ public class VolumesResource {
String[] diskParts = disk.split(":");
String serverName = diskParts[0];
String diskName = diskParts[1];
- try {
- status = prepareBrick(serverName, diskName, volumeName);
- } catch (Exception e) {
- status = new Status(e);
- }
+
+ status = prepareBrick(serverName, diskName, volumeName);
if (status.isSuccess()) {
String brickDir = status.getMessage().trim();
bricks.add(serverName + ":" + brickDir);
@@ -284,10 +287,19 @@ public class VolumesResource {
diskInfo = disks.get(i).split(":");
serverName = diskInfo[0];
diskName = diskInfo[1];
- result = ((GenericResponse) serverUtil.executeOnServer(true, serverName, VOLUME_DIRECTORY_CLEANUP_SCRIPT
- + " " + diskName + " " + volumeName + " " + deleteFlag, GenericResponse.class)).getStatus();
- if (!result.isSuccess()) {
- return result;
+
+ Object response = serverUtil.executeOnServer(true, serverName, VOLUME_DIRECTORY_CLEANUP_SCRIPT
+ + " " + diskName + " " + volumeName + " " + deleteFlag, GenericResponse.class);
+ if(response instanceof GenericResponse) {
+ result = ((GenericResponse)response).getStatus();
+ if (!result.isSuccess()) {
+ // TODO: append error and continue with cleaning up of other directories
+ return result;
+ }
+ } else {
+ // TODO: append error and continue with cleaning up of other directories
+ // In case of script execution failure, a Status object will be returned.
+ return (Status)response;
}
}
return new Status(Status.STATUS_CODE_SUCCESS, "Directories cleaned up successfully!");
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 59dc36c2..20f5252d 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
@@ -106,17 +106,30 @@ public class ServerUtil {
Socket connection = new Socket(address, 50000);
PrintWriter writer = new PrintWriter(connection.getOutputStream(), true);
- InputStream inputStream = connection.getInputStream();
-
writer.println(commandWithArgs);
writer.println(); // empty line means end of request
+ InputStream inputStream = connection.getInputStream();
int available = inputStream.available();
- byte[] responseData = new byte[available];
- inputStream.read(responseData);
+
+ 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 new String(responseData, "UTF-8");
+ return output.toString();
} catch (Exception e) {
throw new GlusterRuntimeException("Error during remote execution: [" + e.getMessage() + "]");
}
@@ -170,4 +183,4 @@ public class ServerUtil {
public Status getDiskForDir(String serverName, String brickDir) {
return (Status) executeOnServer(true, serverName, REMOTE_SCRIPT_GET_DISK_FOR_DIR + " " + brickDir, Status.class);
}
-} \ No newline at end of file
+}