From d75e0387f3c75fa812acd10c258fe33f31ddf8df Mon Sep 17 00:00:00 2001 From: Shireesh Anjal Date: Mon, 6 Jun 2011 13:37:16 +0530 Subject: Design changes - introducing cluster-server mapping on gateway --- build/package-server.sh | 3 ++- .../storage/management/client/VolumesClient.java | 2 +- .../management/server/resources/VolumesResource.java | 20 ++++++++++++++------ .../storage/management/server/utils/ServerUtil.java | 4 ++-- .../storage/management/server/utils/SshUtil.java | 11 +++++++++++ 5 files changed, 30 insertions(+), 10 deletions(-) diff --git a/build/package-server.sh b/build/package-server.sh index 62aae70d..ddd6a92f 100755 --- a/build/package-server.sh +++ b/build/package-server.sh @@ -13,7 +13,8 @@ prepare-dist-dir() get-server-war() { cd ${WAR_NAME} - WAR_FILE=`find -L ${SERVER_DIST_DIR} -name ${WAR_NAME}` + #WAR_FILE=`find -L ${SERVER_DIST_DIR} -name ${WAR_NAME}` + WAR_FILE=`find ${SERVER_DIST_DIR} -name ${WAR_NAME}` jar xvf ${WAR_FILE} cd - } diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java index 43435675..424fbca7 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java @@ -144,7 +144,7 @@ public class VolumesClient extends AbstractClient { } public void downloadLogs(String volumeName, String filePath) { - downloadSubResource((volumeName) + "/" + RESTConstants.RESOURCE_LOGS + "/" + RESTConstants.RESOURCE_DOWNLOAD, filePath); + downloadSubResource(volumeName + "/" + RESTConstants.RESOURCE_LOGS + "/" + RESTConstants.RESOURCE_DOWNLOAD, filePath); } public Status removeBricks(String volumeName, List BrickList, boolean deleteOption) { 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 c14290f8..7ef917bd 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 @@ -427,15 +427,24 @@ public class VolumesResource { @GET @Produces(MediaType.APPLICATION_OCTET_STREAM) @Path("{" + PATH_PARAM_VOLUME_NAME + "}/" + RESOURCE_LOGS + "/" + RESOURCE_DOWNLOAD) - public StreamingOutput getLogs(@PathParam(PATH_PARAM_CLUSTER_NAME) final String clusterName, + public StreamingOutput downloadLogs(@PathParam(PATH_PARAM_CLUSTER_NAME) final String clusterName, @PathParam(PATH_PARAM_VOLUME_NAME) final String volumeName) { + final ClusterInfo cluster = clusterService.getCluster(clusterName); + if(cluster == null) { + throw new GlusterRuntimeException("Cluster [" + clusterName + "] doesn't exist!"); + } + + final Volume volume = (Volume)getVolume(clusterName, volumeName).getData(); + if(volume == null) { + throw new GlusterRuntimeException("Volume [" + volumeName + "] doesn't exist in cluster [" + clusterName + + "]!"); + } + return new StreamingOutput() { @Override public void write(OutputStream output) throws IOException, WebApplicationException { - Volume volume = (Volume)getVolume(clusterName, volumeName).getData(); try { - // TODO: pass clusterName to downloadLogs File archiveFile = new File(downloadLogs(volume)); output.write(fileUtil.readFileAsByteArray(archiveFile)); archiveFile.delete(); @@ -457,8 +466,7 @@ public class VolumesResource { String logFileName = glusterUtil.getLogFileNameForBrickDir(brick.getBrickDirectory()); String logFilePath = logDir + CoreConstants.FILE_SEPARATOR + logFileName; - String logContents = serverUtil.getFileFromServer(brick.getServerName(), logFilePath); - fileUtil.createTextFile(tempDirPath + CoreConstants.FILE_SEPARATOR + logFileName, logContents); + serverUtil.getFileFromServer(brick.getServerName(), logFilePath, tempDirPath); } String gzipPath = fileUtil.getTempDirName() + CoreConstants.FILE_SEPARATOR + volume.getName() + "-logs.tar.gz"; @@ -479,7 +487,7 @@ public class VolumesResource { @QueryParam(QUERY_PARAM_FROM_TIMESTAMP) String fromTimestamp, @QueryParam(QUERY_PARAM_TO_TIMESTAMP) String toTimestamp, @QueryParam(QUERY_PARAM_LINE_COUNT) Integer lineCount) { - List logMessages = null; + List logMessages = null; ClusterInfo cluster = clusterService.getCluster(clusterName); if(cluster == null) { 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 2a055ee8..ed1aea75 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 @@ -161,8 +161,8 @@ public class ServerUtil { // } // } - public String getFileFromServer(String serverName, String fileName) { - return executeOnServer(serverName, "get_file " + fileName); + public void getFileFromServer(String serverName, String remoteFileName, String localDirName) { + sshUtil.getFile(serverName, remoteFileName, localDirName); } /** diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java index 1cc51d23..a4728d21 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/SshUtil.java @@ -80,6 +80,17 @@ public class SshUtil { } } + public void getFile(String serverName, String remoteFile, String localDir) { + try { + Connection conn = getConnection(serverName); + SCPClient scpClient = new SCPClient(conn); + scpClient.get(remoteFile, localDir); + } catch (IOException e) { + throw new GlusterRuntimeException("Error while fetching file [" + remoteFile + "] from server [" + + serverName + "]", e); + } + } + public synchronized void installPublicKey(String serverName) { Connection conn = getConnectionWithPassword(serverName); SCPClient scpClient = new SCPClient(conn); -- cgit