summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorShireesh Anjal <anjalshireesh@gmail.com>2011-06-09 03:36:45 -0700
committerShireesh Anjal <anjalshireesh@gmail.com>2011-06-09 03:36:45 -0700
commit88d3c1664d867df409589911afd42277cff5a1dc (patch)
treeaf2c5e31ae3b1aa81f3c9d4b8a84f53fddcfb7ec /src
parent8fdcea6bf4bb25ed1d4a0ae54f71d13a737837de (diff)
parent5f1c439181a2445e505243ea0feedbc1bb7e3460 (diff)
Merge pull request #64 from Dhandapani/db76633e3a0eb1b02d2535c938a4d6f40fe5e1c5
Bug 2990 - Create volume operation throws error message
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java19
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java195
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java2
3 files changed, 121 insertions, 95 deletions
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java
index 556c12de..1b7335ee 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/utils/StringUtil.java
@@ -32,12 +32,15 @@ public class StringUtil {
}
public static String ListToString(List<String> list, String delimiter) {
+ if (list.size() == 0) {
+ return "";
+ }
StringBuilder output = new StringBuilder();
for (String element : list) {
output.append(element).append(delimiter);
}
String outputStr = output.toString();
- int endIndex = (list.size() > 1) ? outputStr.length() - (delimiter.length() + 1) : outputStr.length() - delimiter.length();
+ int endIndex = outputStr.length() - delimiter.length();
return outputStr.substring(0, endIndex);
}
@@ -48,4 +51,18 @@ public class StringUtil {
}
return enumAsArray;
}
+
+ public static void main(String args[]) {
+
+ //Test case for "ListToString"
+ List<String> string = new ArrayList<String>();
+ // Empty list
+ System.out.println(StringUtil.ListToString(string, ", "));
+ // Only one
+ string.add("test");
+ System.out.println(StringUtil.ListToString(string, ",:"));
+ // Multiple
+ string.add("welcome to java");
+ System.out.println(StringUtil.ListToString(string, ""));
+ }
}
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 d6c41475..fe6de156 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
@@ -102,14 +102,14 @@ public class VolumesResource {
private static final String VOLUME_BRICK_LOG_SCRIPT = "get_volume_brick_log.py";
@InjectParam
- private GlusterServersResource glusterServersResource;
-
+ private GlusterServersResource glusterServersResource;
+
@InjectParam
private ServerUtil serverUtil;
@InjectParam
private GlusterUtil glusterUtil;
-
+
@InjectParam
private ClusterService clusterService;
@@ -117,24 +117,24 @@ public class VolumesResource {
private VolumeOptionsDefaults volumeOptionsDefaults;
private FileUtil fileUtil = new FileUtil();
-
+
@GET
@Produces(MediaType.TEXT_XML)
public VolumeListResponse getAllVolumes(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName) {
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new VolumeListResponse(Status.STATUS_SUCCESS, new ArrayList<Volume>());
}
-
+
try {
return new VolumeListResponse(Status.STATUS_SUCCESS, glusterUtil.getAllVolumes(onlineServer.getName()));
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new VolumeListResponse(Status.STATUS_SUCCESS, new ArrayList<Volume>());
}
-
+
return new VolumeListResponse(Status.STATUS_SUCCESS, glusterUtil.getAllVolumes(onlineServer.getName()));
}
}
@@ -146,18 +146,19 @@ public class VolumesResource {
List<String> brickDirectories = GlusterCoreUtil.getQualifiedBrickList(volume.getBricks());
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
}
-
+
Status status = null;
try {
status = glusterUtil.createVolume(volume, brickDirectories, onlineServer.getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
- return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
+ if (onlineServer == null) {
+ return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName
+ + "]");
}
status = glusterUtil.createVolume(volume, brickDirectories, onlineServer.getName());
}
@@ -171,20 +172,24 @@ public class VolumesResource {
public GenericResponse getVolume(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName,
@PathParam(PATH_PARAM_VOLUME_NAME) String volumeName) {
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
- return new GenericResponse<Volume>(new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]"), null);
+ if (onlineServer == null) {
+ return new GenericResponse<Volume>(new Status(Status.STATUS_CODE_FAILURE,
+ "No online servers found in cluster [" + clusterName + "]"), null);
}
-
+
try {
- return new GenericResponse<Volume>(Status.STATUS_SUCCESS, glusterUtil.getVolume(volumeName, onlineServer.getName()));
- } catch(ConnectionException e) {
+ return new GenericResponse<Volume>(Status.STATUS_SUCCESS, glusterUtil.getVolume(volumeName,
+ onlineServer.getName()));
+ } catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
- return new GenericResponse<Volume>(new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]"), null);
+ if (onlineServer == null) {
+ return new GenericResponse<Volume>(new Status(Status.STATUS_CODE_FAILURE,
+ "No online servers found in cluster [" + clusterName + "]"), null);
}
-
- return new GenericResponse<Volume>(Status.STATUS_SUCCESS, glusterUtil.getVolume(volumeName, onlineServer.getName()));
+
+ return new GenericResponse<Volume>(Status.STATUS_SUCCESS, glusterUtil.getVolume(volumeName,
+ onlineServer.getName()));
}
}
@@ -194,7 +199,7 @@ public class VolumesResource {
public Status performOperation(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName,
@PathParam(PATH_PARAM_VOLUME_NAME) String volumeName, @FormParam(FORM_PARAM_OPERATION) String operation) {
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
}
@@ -203,8 +208,9 @@ public class VolumesResource {
} catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
- return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
+ if (onlineServer == null) {
+ return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName
+ + "]");
}
return performOperation(volumeName, operation, onlineServer);
}
@@ -227,27 +233,27 @@ public class VolumesResource {
@QueryParam(QUERY_PARAM_VOLUME_NAME) String volumeName,
@QueryParam(QUERY_PARAM_DELETE_OPTION) boolean deleteFlag) {
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
}
-
+
Volume volume = null;
try {
volume = glusterUtil.getVolume(volumeName, onlineServer.getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
- return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
+ if (onlineServer == null) {
+ return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName
+ + "]");
}
volume = glusterUtil.getVolume(volumeName, onlineServer.getName());
}
-
+ List<Brick> bricks = volume.getBricks();
Status status = glusterUtil.deleteVolume(volumeName, onlineServer.getName());
if (status.isSuccess()) {
- List<String> disks = volume.getDisks();
- Status postDeleteStatus = postDelete(volumeName, disks, deleteFlag);
+ Status postDeleteStatus = postDelete(volumeName, bricks, deleteFlag);
if (!postDeleteStatus.isSuccess()) {
status.setCode(Status.STATUS_CODE_PART_SUCCESS);
@@ -261,23 +267,25 @@ public class VolumesResource {
@Path("{" + QUERY_PARAM_VOLUME_NAME + "}/" + RESOURCE_DISKS)
@Produces(MediaType.TEXT_XML)
public Status removeBricks(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName,
- @PathParam(QUERY_PARAM_VOLUME_NAME) String volumeName, @QueryParam(QUERY_PARAM_BRICKS) String bricks,
+ @PathParam(QUERY_PARAM_VOLUME_NAME) String volumeName, @QueryParam(QUERY_PARAM_BRICKS) String bricks,
@QueryParam(QUERY_PARAM_DELETE_OPTION) boolean deleteFlag) {
- List<String> brickList = Arrays.asList(bricks.split(",")); // Convert from comma separated string (query parameter)
+ List<String> brickList = Arrays.asList(bricks.split(",")); // Convert from comma separated string (query
+ // parameter)
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
}
Status status = null;
try {
status = glusterUtil.removeBricks(volumeName, brickList, onlineServer.getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
- return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
+ if (onlineServer == null) {
+ return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName
+ + "]");
}
status = glusterUtil.removeBricks(volumeName, brickList, onlineServer.getName());
}
@@ -292,15 +300,14 @@ public class VolumesResource {
return status;
}
- private Status postDelete(String volumeName, List<String> disks, boolean deleteFlag) {
- String serverName, diskName, diskInfo[];
+ private Status postDelete(String volumeName, List<Brick> bricks, boolean deleteFlag) {
Status result;
- for (int i = 0; i < disks.size(); i++) {
- diskInfo = disks.get(i).split(":");
- serverName = diskInfo[0];
- diskName = diskInfo[1];
- result = (Status) serverUtil.executeOnServer(true, serverName, VOLUME_DIRECTORY_CLEANUP_SCRIPT + " "
- + diskName + " " + volumeName + (deleteFlag ? " -d" : ""), Status.class);
+ for (Brick brick : bricks) {
+ String brickDirectory = brick.getBrickDirectory();
+ String mountPoint = brickDirectory.substring(0, brickDirectory.lastIndexOf("/"));
+
+ result = (Status) serverUtil.executeOnServer(true, brick.getServerName(), VOLUME_DIRECTORY_CLEANUP_SCRIPT
+ + " " + mountPoint + " " + volumeName + (deleteFlag ? " -d" : ""), Status.class);
if (!result.isSuccess()) {
return result;
}
@@ -316,17 +323,18 @@ public class VolumesResource {
@FormParam(RESTConstants.FORM_PARAM_OPTION_KEY) String key,
@FormParam(RESTConstants.FORM_PARAM_OPTION_VALUE) String value) {
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
}
try {
return glusterUtil.setOption(volumeName, key, value, onlineServer.getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
- return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
+ if (onlineServer == null) {
+ return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName
+ + "]");
}
return glusterUtil.setOption(volumeName, key, value, onlineServer.getName());
}
@@ -374,7 +382,7 @@ public class VolumesResource {
diskName = diskInfo[1];
Object response = serverUtil.executeOnServer(true, serverName, VOLUME_DIRECTORY_CLEANUP_SCRIPT + " "
- + diskName + " " + volumeName + " " + (deleteFlag ? "-d" : ""), GenericResponse.class);
+ + diskName + " " + volumeName + " " + (deleteFlag ? "-d" : ""), GenericResponse.class);
if (response instanceof GenericResponse) {
result = ((GenericResponse) response).getStatus();
if (!result.isSuccess()) {
@@ -428,16 +436,16 @@ public class VolumesResource {
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) {
+ if (cluster == null) {
throw new GlusterRuntimeException("Cluster [" + clusterName + "] doesn't exist!");
}
- final Volume volume = (Volume)getVolume(clusterName, volumeName).getData();
- if(volume == null) {
+ 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
@@ -460,7 +468,8 @@ public class VolumesResource {
String tempDirPath = tempDir.getPath();
for (Brick brick : volume.getBricks()) {
- String logDir = glusterUtil.getLogLocation(volume.getName(), brick.getBrickDirectory(), brick.getServerName());
+ String logDir = glusterUtil.getLogLocation(volume.getName(), brick.getBrickDirectory(),
+ brick.getServerName());
String logFileName = glusterUtil.getLogFileNameForBrickDir(brick.getBrickDirectory());
String logFilePath = logDir + CoreConstants.FILE_SEPARATOR + logFileName;
@@ -479,34 +488,32 @@ public class VolumesResource {
@GET
@Path("{" + PATH_PARAM_VOLUME_NAME + "}/" + RESOURCE_LOGS)
public LogMessageListResponse getLogs(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName,
- @PathParam(PATH_PARAM_VOLUME_NAME) String volumeName,
- @QueryParam(QUERY_PARAM_BRICK_NAME) String brickName,
+ @PathParam(PATH_PARAM_VOLUME_NAME) String volumeName, @QueryParam(QUERY_PARAM_BRICK_NAME) String brickName,
@QueryParam(QUERY_PARAM_LOG_SEVERITY) String severity,
@QueryParam(QUERY_PARAM_FROM_TIMESTAMP) String fromTimestamp,
@QueryParam(QUERY_PARAM_TO_TIMESTAMP) String toTimestamp,
- @QueryParam(QUERY_PARAM_LINE_COUNT) Integer lineCount,
- @QueryParam(QUERY_PARAM_DOWNLOAD) Boolean download) {
+ @QueryParam(QUERY_PARAM_LINE_COUNT) Integer lineCount, @QueryParam(QUERY_PARAM_DOWNLOAD) Boolean download) {
List<VolumeLogMessage> logMessages = null;
ClusterInfo cluster = clusterService.getCluster(clusterName);
- if(cluster == null) {
+ if (cluster == null) {
return new LogMessageListResponse(new Status(Status.STATUS_CODE_FAILURE, "Cluster [" + clusterName
+ "] doesn't exist!"), null);
}
try {
- Volume volume = (Volume)getVolume(clusterName, volumeName).getData();
- if(volume == null) {
+ Volume volume = (Volume) getVolume(clusterName, volumeName).getData();
+ if (volume == null) {
return new LogMessageListResponse(new Status(Status.STATUS_CODE_FAILURE, "Volume [" + volumeName
+ "] doesn't exist in cluster [" + clusterName + "]!"), null);
}
-
+
if (brickName == null || brickName.isEmpty() || brickName.equals(CoreConstants.ALL)) {
logMessages = getLogsForAllBricks(volume, lineCount);
} else {
// fetch logs for given brick of the volume
- for(Brick brick : volume.getBricks()) {
- if(brick.getQualifiedName().equals(brickName)) {
+ for (Brick brick : volume.getBricks()) {
+ if (brick.getQualifiedName().equals(brickName)) {
logMessages = getBrickLogs(volume, brick, lineCount);
break;
}
@@ -585,17 +592,18 @@ public class VolumesResource {
public Status addBricks(@PathParam(PATH_PARAM_CLUSTER_NAME) String clusterName,
@PathParam(QUERY_PARAM_VOLUME_NAME) String volumeName, @FormParam(FORM_PARAM_BRICKS) String bricks) {
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
}
try {
return glusterUtil.addBricks(volumeName, Arrays.asList(bricks.split(",")), onlineServer.getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
- return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
+ if (onlineServer == null) {
+ return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName
+ + "]");
}
return glusterUtil.addBricks(volumeName, Arrays.asList(bricks.split(",")), onlineServer.getName());
}
@@ -607,17 +615,18 @@ public class VolumesResource {
@PathParam(QUERY_PARAM_VOLUME_NAME) String volumeName, @FormParam(FORM_PARAM_SOURCE) String diskFrom,
@FormParam(FORM_PARAM_TARGET) String diskTo, @FormParam(FORM_PARAM_OPERATION) String operation) {
GlusterServer onlineServer = glusterServersResource.getOnlineServer(clusterName);
- if(onlineServer == null) {
+ if (onlineServer == null) {
return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
}
-
+
try {
return glusterUtil.migrateDisk(volumeName, diskFrom, diskTo, operation, onlineServer.getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server has gone offline! try with a different one.
onlineServer = glusterServersResource.getNewOnlineServer(clusterName);
- if(onlineServer == null) {
- return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName + "]");
+ if (onlineServer == null) {
+ return new Status(Status.STATUS_CODE_FAILURE, "No online servers found in cluster [" + clusterName
+ + "]");
}
return glusterUtil.migrateDisk(volumeName, diskFrom, diskTo, operation, onlineServer.getName());
}
@@ -630,22 +639,22 @@ public class VolumesResource {
// System.out.println("\nName:" + volume.getName() + "\nType: " + volume.getVolumeTypeStr() + "\nStatus: "
// + volume.getStatusStr());
// }
-// Volume volume = new Volume();
-// volume.setName("vol3");
-// volume.setTransportType(TRANSPORT_TYPE.ETHERNET);
-// List<String> disks = new ArrayList<String>();
-// disks.add("192.168.1.210:sdb");
-// volume.addDisks(disks);
-// volume.setAccessControlList("192.168.*");
-// // Status status = vr.createVolume(volume);
-// // System.out.println(status.getMessage());
-// Form form = new Form();
-// form.add("volumeName", volume.getName());
-// form.add(RESTConstants.FORM_PARAM_DELETE_OPTION, 1);
-// Status status = vr.deleteVolume("Vol2", true);
-// System.out.println("Code : " + status.getCode());
-// System.out.println("Message " + status.getMessage());
-
+ // Volume volume = new Volume();
+ // volume.setName("vol3");
+ // volume.setTransportType(TRANSPORT_TYPE.ETHERNET);
+ // List<String> disks = new ArrayList<String>();
+ // disks.add("192.168.1.210:sdb");
+ // volume.addDisks(disks);
+ // volume.setAccessControlList("192.168.*");
+ // // Status status = vr.createVolume(volume);
+ // // System.out.println(status.getMessage());
+ // Form form = new Form();
+ // form.add("volumeName", volume.getName());
+ // form.add(RESTConstants.FORM_PARAM_DELETE_OPTION, 1);
+ // Status status = vr.deleteVolume("Vol2", true);
+ // System.out.println("Code : " + status.getCode());
+ // System.out.println("Message " + status.getMessage());
+
Status status1 = vr.removeBricks("testCluster", "test", "192.168.1.210:sdb", true);
System.out.println("Code : " + status1.getCode());
System.out.println("Message " + status1.getMessage());
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
index 7f2afc3f..fe725d17 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java
@@ -258,7 +258,7 @@ public class GlusterUtil {
public Status setOption(String volumeName, String key, String value, String knownServer) {
return new Status(sshUtil.executeRemote(knownServer, "gluster volume set " + volumeName + " " + key + " "
- + value));
+ + "\"" + value + "\""));
}
public Status deleteVolume(String volumeName, String knownServer) {