summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDhandapani <dhandapani@gluster.com>2011-04-21 15:24:30 +0530
committerDhandapani <dhandapani@gluster.com>2011-04-25 14:24:48 +0530
commit9d8fdadfeedbd132ab01dd0cdd79f21f52f90a4e (patch)
tree387453bee4d3581158942f3cf3a20308117943ed /src
parent1bf13c069eff1230f768bb8611a3e643ff4334f5 (diff)
parent2f7b2e1e712fe6ff51590b50c3b7215c5c0879f9 (diff)
Merge branch 'deletevolume'
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/AbstractClient.java60
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java46
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/VolumesClient.java7
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java2
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java4
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java2
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java5
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java63
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java71
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java4
10 files changed, 213 insertions, 51 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 807e32a3..e8877321 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
@@ -19,12 +19,12 @@ public abstract class AbstractClient {
protected WebResource resource;
private String securityToken;
private String authHeader;
-
+
public AbstractClient() {
URI baseURI = new ClientUtil().getServerBaseURI();
resource = Client.create(new DefaultClientConfig()).resource(baseURI).path(getResourceName());
}
-
+
public AbstractClient(String securityToken) {
this();
setSecurityToken(securityToken);
@@ -93,8 +93,11 @@ public abstract class AbstractClient {
/**
* Submits given Form using POST method to the resource and returns the object received as response
- * @param responseClass Class of the object expected as response
- * @param form Form to be submitted
+ *
+ * @param responseClass
+ * Class of the object expected as response
+ * @param form
+ * Form to be submitted
* @return Object of given class received as response
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
@@ -105,9 +108,13 @@ public abstract class AbstractClient {
/**
* Submits given Form using POST method to the given sub-resource and returns the object received as response
- * @param subResourceName Name of the sub-resource to which the request is to be posted
- * @param responseClass Class of the object expected as response
- * @param form Form to be submitted
+ *
+ * @param subResourceName
+ * Name of the sub-resource to which the request is to be posted
+ * @param responseClass
+ * Class of the object expected as response
+ * @param form
+ * Form to be submitted
* @return Object of given class received as response
*/
@SuppressWarnings({ "rawtypes", "unchecked" })
@@ -118,9 +125,13 @@ public abstract class AbstractClient {
/**
* Submits given Form using PUT method to the given sub-resource and returns the object received as response
- * @param subResourceName Name of the sub-resource to which the request is to be posted
- * @param responseClass Class of the object expected as response
- * @param form Form to be submitted
+ *
+ * @param subResourceName
+ * Name of the sub-resource to which the request is to be posted
+ * @param responseClass
+ * Class of the object expected as response
+ * @param form
+ * Form to be submitted
* @return Object of given class received as response
*/
protected Object putRequest(String subResourceName, Class responseClass, Form form) {
@@ -130,8 +141,11 @@ public abstract class AbstractClient {
/**
* Submits given Form using PUT method to the given sub-resource and returns the object received as response
- * @param subResourceName Name of the sub-resource to which the request is to be posted
- * @param responseClass Class of the object expected as response
+ *
+ * @param subResourceName
+ * Name of the sub-resource to which the request is to be posted
+ * @param responseClass
+ * Class of the object expected as response
* @return Object of given class received as response
*/
protected Object putRequest(String subResourceName, Class responseClass) {
@@ -141,8 +155,11 @@ public abstract class AbstractClient {
/**
* Submits given object to the resource and returns the object received as response
- * @param responseClass Class of the object expected as response
- * @param requestObject the Object to be submitted
+ *
+ * @param responseClass
+ * Class of the object expected as response
+ * @param requestObject
+ * the Object to be submitted
* @return Object of given class received as response
*/
@SuppressWarnings({ "unchecked", "rawtypes" })
@@ -151,6 +168,18 @@ public abstract class AbstractClient {
.post(responseClass, requestObject);
}
+ @SuppressWarnings("unchecked")
+ protected Object deleteResource(Class responseClass, Form form) {
+ return resource.header(HTTP_HEADER_AUTH, authHeader).delete(responseClass);
+ }
+
+ @SuppressWarnings({ "unchecked", "rawtypes" })
+ protected Object deleteSubResource(String subResourceName, Class responseClass, String volumeName,
+ String deleteOption) {
+ return resource.path(subResourceName).queryParam("volumeName", volumeName)
+ .queryParam("deleteOption", deleteOption).header(HTTP_HEADER_AUTH, authHeader).delete(responseClass);
+ }
+
public abstract String getResourceName();
/**
@@ -161,7 +190,8 @@ public abstract class AbstractClient {
}
/**
- * @param securityToken the securityToken to set
+ * @param securityToken
+ * the securityToken to set
*/
protected void setSecurityToken(String securityToken) {
this.securityToken = securityToken;
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
index 2a6f053a..9e031ad3 100644
--- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
+++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java
@@ -120,7 +120,6 @@ public class GlusterDataModelManager {
initializeGlusterServers(cluster);
initializeVolumes(cluster);
-
initializeAutoDiscoveredServers(cluster);
initializeDisks();
@@ -138,8 +137,9 @@ public class GlusterDataModelManager {
private void initializeVolumeOptionsDefaults() {
VolumeOptionInfoListResponse response = new VolumesClient(getSecurityToken()).getVolumeOptionsDefaults();
- if(!response.getStatus().isSuccess()) {
- throw new GlusterRuntimeException("Error fetching volume option defaults: [" + response.getStatus().getMessage() + "]");
+ if (!response.getStatus().isSuccess()) {
+ throw new GlusterRuntimeException("Error fetching volume option defaults: ["
+ + response.getStatus().getMessage() + "]");
}
this.volumeOptionsDefaults = response.getOptions();
}
@@ -165,7 +165,7 @@ public class GlusterDataModelManager {
private void initializeVolumes(Cluster cluster) {
VolumesClient volumeClient = new VolumesClient(securityToken);
VolumeListResponse response = volumeClient.getAllVolumes();
- if(!response.getStatus().isSuccess()) {
+ if (!response.getStatus().isSuccess()) {
throw new GlusterRuntimeException("Error fetching volume list: [" + response.getStatus() + "]");
}
cluster.setVolumes(response.getVolumes());
@@ -299,8 +299,8 @@ public class GlusterDataModelManager {
/*
* TODO: review the logic
*
- * List<Disk> disks = new ArrayList<Disk>(); for (Disk disk :
- * volume.getDisks()) { if (disk.isReady()) { disks.add(disk); } }
+ * List<Disk> disks = new ArrayList<Disk>(); for (Disk disk : volume.getDisks()) { if (disk.isReady()) {
+ * disks.add(disk); } }
*/
Disk disk = null;
List<Disk> volumeDisks = new ArrayList<Disk>();
@@ -364,23 +364,32 @@ public class GlusterDataModelManager {
}
}
+ public void deleteVolume(Volume volume) {
+ Cluster cluster = model.getCluster();
+ cluster.deleteVolume(volume);
+
+ for (ClusterListener listener : listeners) {
+ listener.volumeDeleted(volume);
+ }
+ }
+
public void updateVolumeStatus(Volume volume, VOLUME_STATUS newStatus) {
volume.setStatus(newStatus);
for (ClusterListener listener : listeners) {
listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_STATUS_CHANGED, newStatus));
}
}
-
+
public void resetVolumeOptions(Volume volume) {
volume.getOptions().clear();
for (ClusterListener listener : listeners) {
listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_OPTIONS_RESET, null));
}
}
-
+
public void setVolumeOption(Volume volume, Entry<String, String> entry) {
volume.setOption(entry.getKey(), (String) entry.getValue());
- for(ClusterListener listener : listeners) {
+ for (ClusterListener listener : listeners) {
listener.volumeChanged(volume, new Event(EVENT_TYPE.VOLUME_OPTION_SET, entry));
}
}
@@ -393,25 +402,25 @@ public class GlusterDataModelManager {
listener.volumeCreated(volume);
}
}
-
+
public List<VolumeOptionInfo> getVolumeOptionsDefaults() {
return volumeOptionsDefaults;
}
public VolumeOptionInfo getVolumeOptionInfo(String optionKey) {
- for(VolumeOptionInfo info : volumeOptionsDefaults) {
- if(info.getName().equals(optionKey)) {
+ for (VolumeOptionInfo info : volumeOptionsDefaults) {
+ if (info.getName().equals(optionKey)) {
return info;
}
}
throw new GlusterRuntimeException("Invalid option key [" + optionKey
+ "] passed to GlusterDataModelManager#getVolumeOptionInfo");
}
-
+
public String getVolumeOptionDefaultValue(String optionKey) {
return getVolumeOptionInfo(optionKey).getDefaultValue();
}
-
+
public String getVolumeOptionDesc(String optionKey) {
return getVolumeOptionInfo(optionKey).getDescription();
}
@@ -420,13 +429,14 @@ public class GlusterDataModelManager {
volume.setAccessControlList(accessControlList);
setVolumeOption(volume, getOptionEntry(volume, Volume.OPTION_AUTH_ALLOW));
}
-
+
private Entry<String, String> getOptionEntry(Volume volume, String optionKey) {
- for(Entry entry : volume.getOptions().entrySet()) {
- if(entry.getKey().equals(optionKey)) {
+ for (Entry entry : volume.getOptions().entrySet()) {
+ if (entry.getKey().equals(optionKey)) {
return entry;
}
}
- throw new GlusterRuntimeException("Couldn't find entry for option [" + optionKey + "] on volume [" + volume.getName());
+ throw new GlusterRuntimeException("Couldn't find entry for option [" + optionKey + "] on volume ["
+ + volume.getName());
}
}
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 1d9ddbff..05b89306 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
@@ -20,12 +20,9 @@
*/
package com.gluster.storage.management.client;
-import java.util.List;
-
import com.gluster.storage.management.core.constants.RESTConstants;
import com.gluster.storage.management.core.model.Status;
import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.core.model.VolumeOptionInfo;
import com.gluster.storage.management.core.response.VolumeListResponse;
import com.gluster.storage.management.core.response.VolumeOptionInfoListResponse;
import com.sun.jersey.api.representation.Form;
@@ -78,6 +75,10 @@ public class VolumesClient extends AbstractClient {
public Volume getVolume(String volumeName) {
return (Volume) fetchSubResource(volumeName, Volume.class);
}
+
+ public Status deleteVolume(Volume volume, String deleteOption) {
+ return (Status) deleteSubResource(volume.getName(), Status.class, volume.getName(), deleteOption);
+ }
public VolumeOptionInfoListResponse getVolumeOptionsDefaults() {
return ((VolumeOptionInfoListResponse) fetchSubResource(RESTConstants.SUBRESOURCE_DEFAULT_OPTIONS,
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java
index 3fb22ff6..f44b24e5 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/RESTConstants.java
@@ -35,9 +35,11 @@ public class RESTConstants {
public static final String FORM_PARAM_VALUE_START = "start";
public static final String FORM_PARAM_VALUE_STOP = "stop";
public static final String FORM_PARAM_OPTION_KEY = "key";
+ public static final String FORM_PARAM_VOLUME_NAME = "volumeName";
public static final String FORM_PARAM_OPTION_VALUE = "value";
public static final String PATH_PARAM_VOLUME_NAME = "volumeName";
+ public static final String FORM_PARAM_DELETE_OPTION = "value";
public static final String QUERY_PARAM_DISK_NAME = "diskName";
public static final String QUERY_PARAM_LINE_COUNT = "lineCount";
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java
index 1af57266..8d1eb624 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java
@@ -54,6 +54,10 @@ public class Cluster extends Entity {
discoveredServers.remove(server);
}
+ public void deleteVolume(Volume volume) {
+ volumes.remove(volume);
+ }
+
public void setServers(List<GlusterServer> servers) {
this.servers = servers;
children.add(new EntityGroup<GlusterServer>("Servers", GlusterServer.class, this, servers));
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
index ce2752a4..f96116ed 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/ClusterListener.java
@@ -40,4 +40,6 @@ public interface ClusterListener {
public void volumeChanged(Volume volume, Event event);
public void volumeCreated(Volume volume);
+
+ public void volumeDeleted(Volume volume);
}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
index 1a39a014..e226d51b 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/DefaultClusterListener.java
@@ -69,6 +69,11 @@ public class DefaultClusterListener implements ClusterListener {
clusterChanged();
}
+ @Override
+ public void volumeDeleted(Volume volume) {
+ clusterChanged();
+ }
+
/**
* This method is called by every other event method. Thus, if a view/listener is interested in performing the same
* task on any change happening in the cluster data model, it can simply override this method and implement the
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
index 82ac1663..2a213acc 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/DeleteVolumeAction.java
@@ -19,15 +19,76 @@
package com.gluster.storage.management.gui.actions;
import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.viewers.ISelection;
+
+import com.gluster.storage.management.client.GlusterDataModelManager;
+import com.gluster.storage.management.client.VolumesClient;
+import com.gluster.storage.management.core.model.Status;
+import com.gluster.storage.management.core.model.Volume;
+import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
+import com.gluster.storage.management.gui.IImageKeys;
+import com.gluster.storage.management.gui.utils.GUIHelper;
public class DeleteVolumeAction extends AbstractActionDelegate {
+ private Volume volume;
+ private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
+
@Override
protected void performAction(IAction action) {
- System.out.println("Running [" + this.getClass().getSimpleName() + "]");
+ final String actionDesc = action.getDescription();
+
+ String warningMessage;
+ if (volume.getStatus() == VOLUME_STATUS.OFFLINE) {
+ warningMessage = "Are you sure to delete the Volume[" + volume.getName() + "] ?";
+ } else {
+ warningMessage = "Volume [" + volume.getName() + "] is running, \nAre you sure to continue?";
+ }
+
+ Integer deleteOption = new MessageDialog(getShell(), "Gluster Storage Platform", GUIHelper.getInstance().getImage(
+ IImageKeys.SERVER), warningMessage, MessageDialog.INFORMATION, new String[] { "Cancel",
+ "Delete volume and it's data", "Delete volume, keep back-up of data" }, 2).open();
+ if (deleteOption == 0) {
+ return;
+ }
+
+ VolumesClient client = new VolumesClient(modelManager.getSecurityToken());
+
+ Status status;
+ if (volume.getStatus() == VOLUME_STATUS.ONLINE) { // To stop the volume service, if running
+ status = client.stopVolume(volume.getName());
+ if (!status.isSuccess()) {
+ showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] could not be stopped! Error: [" + status.getMessage()
+ + "]");
+ return;
+ }
+ }
+
+ status = client.deleteVolume(volume, deleteOption.toString());
+ if (status.isSuccess()) {
+ showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] deleted successfully!");
+ modelManager.deleteVolume(volume);
+ } else {
+ if (status.isPartSuccess()) {
+ showWarningDialog(actionDesc, "Volume deleted, but following error(s) occured: " + status.getMessage());
+ modelManager.deleteVolume(volume);
+ } else {
+ showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] could not be deleted! Error: [" + status.getMessage()
+ + "]");
+ }
+ }
}
@Override
public void dispose() {
System.out.println("Disposing [" + this.getClass().getSimpleName() + "]");
}
+
+ @Override
+ public void selectionChanged(IAction action, ISelection selection) {
+ super.selectionChanged(action, selection);
+ if (selectedEntity instanceof Volume) {
+ volume = (Volume) selectedEntity;
+ }
+ }
}
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 0bf781cf..92fba9f3 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
@@ -36,6 +36,7 @@ import java.util.Arrays;
import java.util.List;
import javax.ws.rs.Consumes;
+import javax.ws.rs.DELETE;
import javax.ws.rs.FormParam;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
@@ -61,6 +62,7 @@ import com.gluster.storage.management.server.constants.VolumeOptionsDefaults;
import com.gluster.storage.management.server.utils.GlusterUtil;
import com.gluster.storage.management.server.utils.ServerUtil;
import com.sun.jersey.api.core.InjectParam;
+import com.sun.jersey.api.representation.Form;
import com.sun.jersey.spi.resource.Singleton;
@Singleton
@@ -101,13 +103,13 @@ public class VolumesResource {
status = glusterUtil.createVolume(volume, bricks);
if (status.isSuccess()) {
Status optionsStatus = glusterUtil.createOptions(volume);
- if(!optionsStatus.isSuccess()) {
+ if (!optionsStatus.isSuccess()) {
status.setCode(Status.STATUS_CODE_PART_SUCCESS);
status.setMessage("Error while setting volume options: " + optionsStatus);
}
} else {
Status cleanupStatus = cleanupDirectories(disks, volume.getName(), disks.size());
- if(!cleanupStatus.isSuccess()) {
+ if (!cleanupStatus.isSuccess()) {
status.setMessage(status.getMessage() + CoreConstants.NEWLINE + "Cleanup errors: "
+ CoreConstants.NEWLINE + cleanupStatus);
}
@@ -138,6 +140,41 @@ public class VolumesResource {
return new Status(Status.STATUS_CODE_FAILURE, "Invalid operation code [" + operation + "]");
}
+ @DELETE
+ @Path("{" + PATH_PARAM_VOLUME_NAME + "}")
+ @Produces(MediaType.TEXT_XML)
+ public Status deleteVolume(@QueryParam("volumeName") String volumeName, @QueryParam("deleteOption") int deleteOption) {
+ Volume volume = glusterUtil.getVolume(volumeName);
+ Status status = glusterUtil.deleteVolume(volumeName);
+
+ if (status.isSuccess()) {
+ List<String> disks = volume.getDisks();
+ Status postDeleteStatus = postDelete(volumeName, disks, deleteOption);
+
+ if (!postDeleteStatus.isSuccess()) {
+ status.setCode(Status.STATUS_CODE_PART_SUCCESS);
+ status.setMessage("Error while post deletion operation: " + postDeleteStatus);
+ }
+ }
+ return status;
+ }
+
+ private Status postDelete(String volumeName, List<String> disks, int deleteFlag) {
+ String serverName, diskName, diskInfo[];
+ 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, Status.class);
+ if (!result.isSuccess()) {
+ return result;
+ }
+ }
+ return new Status(Status.STATUS_CODE_SUCCESS, "Post volume delete operation successfully initiated");
+ }
+
@POST
@Path("{" + PATH_PARAM_VOLUME_NAME + " }/" + SUBRESOURCE_OPTIONS)
@Produces(MediaType.TEXT_XML)
@@ -175,13 +212,13 @@ public class VolumesResource {
for (int i = 0; i < disks.size(); i++) {
String disk = disks.get(i);
- String[] diskParts = disk.split(":");
+ String[] diskParts = disk.split(":");
String serverName = diskParts[0];
String diskName = diskParts[1];
-
+
status = prepareBrick(serverName, diskName, volumeName);
if (status.isSuccess()) {
- String brickDir = status.getMessage().trim().replace(CoreConstants.NEWLINE, "");
+ String brickDir = status.getMessage().trim().replace(CoreConstants.NEWLINE, "");
bricks.add(serverName + ":" + brickDir);
} else {
// Brick preparation failed. Cleanup directories already created and return failure status
@@ -204,7 +241,7 @@ public class VolumesResource {
}
return bricksStr.trim();
}
-
+
private Status cleanupDirectories(List<String> disks, String volumeName, int maxIndex) {
String serverName, diskName, diskInfo[];
Status result;
@@ -271,13 +308,13 @@ public class VolumesResource {
return new LogMessageListResponse(Status.STATUS_SUCCESS, logMessages);
}
- public static void main(String[] args) {
+ public static void main(String[] args) throws ClassNotFoundException {
VolumesResource vr = new VolumesResource();
-// VolumeListResponse response = vr.getAllVolumes();
-// for (Volume volume : response.getVolumes()) {
-// System.out.println("\nName:" + volume.getName() + "\nType: " + volume.getVolumeTypeStr() + "\nStatus: "
-// + volume.getStatusStr());
-// }
+ // VolumeListResponse response = vr.getAllVolumes();
+ // for (Volume volume : response.getVolumes()) {
+ // System.out.println("\nName:" + volume.getName() + "\nType: " + volume.getVolumeTypeStr() + "\nStatus: "
+ // + volume.getStatusStr());
+ // }
Volume volume = new Volume();
volume.setName("vol3");
volume.setTransportType(TRANSPORT_TYPE.ETHERNET);
@@ -285,7 +322,13 @@ public class VolumesResource {
disks.add("192.168.1.210:sdb");
volume.addDisks(disks);
volume.setAccessControlList("192.168.*");
- Status status = vr.createVolume(volume);
- System.out.println(status.getMessage());
+ // Status status = vr.createVolume(volume);
+ // System.out.println(status.getMessage());
+ Form form = new Form();
+ form.add(RESTConstants.FORM_PARAM_VOLUME_NAME, volume.getName());
+ form.add(RESTConstants.FORM_PARAM_DELETE_OPTION, 1);
+ Status status = vr.deleteVolume("Vol2", 1);
+ System.out.println("Code : " + status.getCode());
+ System.out.println("Message " + status.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 dd72ab86..6a60962f 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
@@ -232,6 +232,10 @@ public class GlusterUtil {
return new Status(processUtil.executeCommand(command));
}
+ public Status deleteVolume(String volumeName) {
+ return new Status(processUtil.executeCommand("gluster", "--mode=script", "volume", "delete", volumeName));
+ }
+
private String getVolumeInfo(String volumeName) {
ProcessResult result = new ProcessUtil().executeCommand("gluster", "volume", "info", volumeName);
if (!result.isSuccess()) {