diff options
| author | Selvam <selvam@gluster.com> | 2011-05-05 12:36:42 +0530 | 
|---|---|---|
| committer | Selvam <selvam@gluster.com> | 2011-05-05 12:36:42 +0530 | 
| commit | a46390ce97935a2c629f86c86a72e7407fc19740 (patch) | |
| tree | 2fe117161223ed7bf5b39f881c3881d93ca6ccc3 /src | |
| parent | a2c8fa56175df44deacebbc816efa8562c2dc5a1 (diff) | |
| parent | 6483de355e5c2204ad99009e4183808e00e17020 (diff) | |
Merge remote branch 'upstream/master'
Diffstat (limited to 'src')
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 +}  | 
