summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client
diff options
context:
space:
mode:
authorShireesh Anjal <shireesh@gluster.com>2011-05-09 15:20:04 +0530
committerShireesh Anjal <shireesh@gluster.com>2011-05-09 15:20:04 +0530
commitc0db2695f0979b400ebea561bccd72a8cd9aee75 (patch)
tree99c23854decf242866fcf0c132e05548ec50aaca /src/com.gluster.storage.management.client
parent2668c28ff8a4bb678304e73b156c34dc889aea8b (diff)
Story #42 - Volume logs download
Diffstat (limited to 'src/com.gluster.storage.management.client')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java33
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java6
2 files changed, 26 insertions, 13 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
index b9a0ef56..a077c721 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java
@@ -1,12 +1,15 @@
package com.gluster.storage.management.client;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URI;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.MultivaluedMap;
import com.gluster.storage.management.client.utils.ClientUtil;
-import com.gluster.storage.management.core.constants.RESTConstants;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
@@ -49,15 +52,25 @@ public abstract class AbstractClient {
.get(responseClass);
}
- private Object downloadResource(WebResource res, MultivaluedMap<String, String> queryParams, Class responseClass) {
- return res.queryParams(queryParams).header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML)
- .get(responseClass);
- }
-
- protected Object downloadResource(WebResource res) {
+ protected void downloadResource(WebResource res, String filePath) {
ClientResponse response = res.header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_OCTET_STREAM)
.get(ClientResponse.class);
- return response;
+ try {
+ if(!response.hasEntity()) {
+ throw new GlusterRuntimeException("No entity in response!");
+ }
+
+ InputStream inputStream = response.getEntityInputStream();
+ byte[] data = new byte[inputStream.available()];
+ inputStream.read(data);
+ inputStream.close();
+
+ FileOutputStream os = new FileOutputStream(filePath);
+ os.write(data);
+ os.close();
+ } catch (IOException e) {
+ throw new GlusterRuntimeException("Error while downloading resource [" + res.getURI().getPath() + "]", e);
+ }
}
/**
@@ -104,8 +117,8 @@ public abstract class AbstractClient {
return fetchResource(resource.path(subResourceName), NO_PARAMS, responseClass);
}
- protected Object downloadSubResource(String subResourceName) {
- return downloadResource(resource.path(subResourceName));
+ protected void downloadSubResource(String subResourceName, String filePath) {
+ downloadResource(resource.path(subResourceName), filePath);
}
/**
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 f1464211..c0ce8620 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
@@ -141,8 +141,8 @@ public class VolumesClient extends AbstractClient {
queryParams, LogMessageListResponse.class);
}
- public void downloadLogs(String volumeName) {
- downloadSubResource((volumeName) + "/" + RESTConstants.SUBRESOURCE_LOGS + "/" + RESTConstants.SUBRESOURCE_DOWNLOAD);
+ public void downloadLogs(String volumeName, String filePath) {
+ downloadSubResource((volumeName) + "/" + RESTConstants.SUBRESOURCE_LOGS + "/" + RESTConstants.SUBRESOURCE_DOWNLOAD, filePath);
}
public Status removeBricks(String volumeName, List<Disk> diskList, boolean deleteOption) {
@@ -258,7 +258,7 @@ public class VolumesClient extends AbstractClient {
//
// Status status = client.addDisks("Volume3", disks);
// System.out.println(status.getMessage());
- client.downloadLogs("vol1");
+ client.downloadLogs("vol1", "/tmp/temp1.tar.gz");
}
}
}