From 5152d0873bfdc9d2a3ba37da4ceab26bea5864b8 Mon Sep 17 00:00:00 2001 From: Dhandapani Date: Fri, 29 Apr 2011 16:36:54 +0530 Subject: Story #13: Remove Disk(s) Client and Resource Changes --- .../storage/management/client/AbstractClient.java | 9 ++++++ .../storage/management/client/VolumesClient.java | 6 ++++ .../management/gui/actions/RemoveDiskAction.java | 34 +++++++++++++++++++--- .../server/resources/VolumesResource.java | 24 +++++++++++++++ .../management/server/utils/GlusterUtil.java | 13 ++++++++- 5 files changed, 81 insertions(+), 5 deletions(-) (limited to 'src') 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 f8005044..97b3e1a0 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 @@ -215,6 +215,15 @@ public abstract class AbstractClient { .delete(responseClass); } + @SuppressWarnings({ "rawtypes", "unchecked" }) + protected Object deleteSubResource(String subResourceName, Class responseClass, String volumeName, String disks, + String deleteOption) { + return resource.path(subResourceName).queryParam(RESTConstants.QUERY_PARAM_VOLUME_NAME, volumeName) + .queryParam(RESTConstants.QUERY_PARAM_DISKS, disks) + .queryParam(RESTConstants.QUERY_PARAM_DELETE_OPTION, deleteOption).header("Authorization", authHeader) + .delete(responseClass); + } + public abstract String getResourceName(); /** 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 4af70c5a..767b4eb7 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 @@ -23,6 +23,7 @@ package com.gluster.storage.management.client; import java.util.ArrayList; import java.util.Date; import java.util.List; + import javax.ws.rs.core.MultivaluedMap; import com.gluster.storage.management.core.constants.CoreConstants; @@ -142,6 +143,11 @@ public class VolumesClient extends AbstractClient { public void downloadLogs(String volumeName) { downloadSubResource((volumeName) + "/" + RESTConstants.SUBRESOURCE_LOGS + "/" + RESTConstants.SUBRESOURCE_DOWNLOAD); } + + public Status removeBricks(String volumeName, List diskList, String deleteOption) { + String disks = StringUtil.ListToString( GlusterCoreUtil.getQualifiedDiskNames(diskList), ","); + return (Status) deleteSubResource(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, volumeName, disks, deleteOption); + } private MultivaluedMap prepareGetLogQueryParams(String diskName, String severity, Date fromTimestamp, Date toTimestamp, int messageCount) { diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java index 19cf84f7..1524f334 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java @@ -5,6 +5,7 @@ import java.util.Iterator; import java.util.List; import org.eclipse.jface.action.IAction; +import org.eclipse.jface.dialogs.MessageDialog; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkbenchPart; @@ -12,8 +13,9 @@ import org.eclipse.ui.IWorkbenchPart; import com.gluster.storage.management.client.GlusterDataModelManager; import com.gluster.storage.management.client.VolumesClient; import com.gluster.storage.management.core.model.Disk; -import com.gluster.storage.management.core.model.Entity; +import com.gluster.storage.management.core.model.Status; import com.gluster.storage.management.core.model.Volume; +import com.gluster.storage.management.gui.IImageKeys; import com.gluster.storage.management.gui.utils.GUIHelper; import com.gluster.storage.management.gui.views.VolumeDisksView; @@ -21,11 +23,34 @@ public class RemoveDiskAction extends AbstractActionDelegate { private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance(); private GUIHelper guiHelper = GUIHelper.getInstance(); private List disks; + private Volume volume; @Override protected void performAction(IAction action) { + final String actionDesc = action.getDescription(); + Integer deleteOption = new MessageDialog(getShell(), "Remove Disk(s)", GUIHelper.getInstance().getImage( + IImageKeys.VOLUME), "Are you sure you want to remove disks from volume [" + volume.getName() + + "] ?", MessageDialog.QUESTION, new String[] { "Cancel", "Remove disks, delete volume data from them", + "Remove disks, back-up volume data from them" }, 2).open(); + if (deleteOption == 0) { + return; + } + + String confirmDelete = ""; + if (deleteOption == 1) { + confirmDelete = "-d"; + } + VolumesClient client = new VolumesClient(modelManager.getSecurityToken()); - // final Status status = client.removeDisk(); + Status status = client.removeBricks(volume.getName(), disks, confirmDelete); + + if (status.isSuccess()) { + showInfoDialog(actionDesc, "Volume [" + volume.getName() + "] disk(s) removed successfully!"); + modelManager.deleteVolume(volume); + } else { + showErrorDialog(actionDesc, "Volume [" + volume.getName() + "] disk(s) could not be removed! Error: [" + + status + "]"); + } } @Override @@ -37,8 +62,8 @@ public class RemoveDiskAction extends AbstractActionDelegate { super.selectionChanged(action, selection); action.setEnabled(false); - Volume selectedVolume = (Volume)guiHelper.getSelectedEntity(window, Volume.class); - if (selectedVolume != null) { + volume = (Volume)guiHelper.getSelectedEntity(window, Volume.class); + if (volume != null) { // a volume is selected on navigation tree. Let's check if the currently open view is volume disks view IWorkbenchPart view = guiHelper.getActiveView(); if(view instanceof VolumeDisksView) { @@ -51,6 +76,7 @@ public class RemoveDiskAction extends AbstractActionDelegate { private List getSelectedDisks(ISelection selection) { List selectedDisks = new ArrayList(); + if (selection instanceof IStructuredSelection) { Iterator iter = ((IStructuredSelection) selection).iterator(); while (iter.hasNext()) { 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 e635510a..4fc70202 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 @@ -189,6 +189,30 @@ public class VolumesResource { return status; } + @DELETE + @Path("{" + QUERY_PARAM_VOLUME_NAME + "}/" + SUBRESOURCE_DISKS) + @Produces(MediaType.TEXT_XML) + public Status removeBricks(@PathParam(QUERY_PARAM_VOLUME_NAME) String volumeName, + @QueryParam(QUERY_PARAM_DISKS) String disks, @QueryParam(QUERY_PARAM_DELETE_OPTION) String deleteOption) { + List bricks = Arrays.asList(disks.split(",")); // Convert from comma separated string (query parameter) + List volumeBrick = new ArrayList(); + for (String brickInfo : bricks) { + String diskInfo[] = brickInfo.split(":"); + volumeBrick.add(getBrickForDisk(getVolume(volumeName), diskInfo[1])); + } + + Status status = glusterUtil.removeBricks(volumeName, volumeBrick); + + if (status.isSuccess()) { + Status cleanupStatus = cleanupDirectories(bricks, volumeName, bricks.size(), deleteOption); + if (!cleanupStatus.isSuccess()) { + // append cleanup error to prepare brick error + status.setMessage(status.getMessage() + CoreConstants.NEWLINE + cleanupStatus.getMessage()); + } + } + return status; + } + private Status postDelete(String volumeName, List disks, String deleteFlag) { String serverName, diskName, diskInfo[]; Status result; 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 3ca11069..fa49a529 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 @@ -184,7 +184,7 @@ public class GlusterUtil { List command = prepareVolumeCreateCommand(volume, bricks, count, volumeType, transportTypeStr); ProcessResult result = processUtil.executeCommand(command); if (!result.isSuccess()) { - // TODO: Perform cleanup on all nodes before returning + // Perform cleanup on all nodes before returning return new Status(result); } @@ -474,6 +474,17 @@ public class GlusterUtil { return new Status(processUtil.executeCommand("gluster", "volume", "replace-brick", volumeName, diskFrom, diskTo, operation)); } + public Status removeBricks(String volumeName, List bricks) { + List command = new ArrayList(); + command.add("gluster"); + command.add("volume"); + command.add("remove-brick"); + command.add(volumeName); + command.addAll(bricks); + return new Status(processUtil.executeCommand(command)); + } + + public static void main(String args[]) { // List names = new GlusterUtil().getGlusterServerNames(); // System.out.println(names); -- cgit From 5d1d885c0366e1e4f4ec33ee2a25927dc1999c69 Mon Sep 17 00:00:00 2001 From: Dhandapani Date: Thu, 5 May 2011 11:16:51 +0530 Subject: Bug 2875 - Volume deletion happens even after pressing escape key --- .../com/gluster/storage/management/gui/actions/DeleteVolumeAction.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') 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 d5501082..9d479f0c 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 @@ -48,7 +48,7 @@ public class DeleteVolumeAction extends AbstractActionDelegate { Integer deleteOption = new MessageDialog(getShell(), "Delete Volume", GUIHelper.getInstance().getImage( IImageKeys.VOLUME), warningMessage, MessageDialog.QUESTION, new String[] { "Cancel", "Delete volume and it's data", "Delete volume, keep back-up of data" }, 2).open(); - if (deleteOption == 0) { + if (deleteOption <= 0) { // By Cancel button(0) or Escape key(-1) return; } -- cgit From e71e3c02b86b9b7b7e7ef1ea45a8adce90893edc Mon Sep 17 00:00:00 2001 From: Dhandapani Date: Thu, 5 May 2011 12:30:00 +0530 Subject: Remove disk comment fixes --- .../storage/management/client/AbstractClient.java | 26 ++++++++-------------- .../storage/management/client/VolumesClient.java | 25 +++++++++++++++++---- .../management/gui/actions/DeleteVolumeAction.java | 5 +++-- .../management/gui/actions/RemoveDiskAction.java | 6 ++--- .../management/gui/dialogs/CreateVolumePage1.java | 9 ++++++++ .../server/resources/VolumesResource.java | 24 ++++++++++++++------ .../management/server/utils/GlusterUtil.java | 1 - 7 files changed, 62 insertions(+), 34 deletions(-) (limited to 'src') 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 97b3e1a0..b9a0ef56 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 @@ -48,14 +48,15 @@ public abstract class AbstractClient { return res.queryParams(queryParams).header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML) .get(responseClass); } - + private Object downloadResource(WebResource res, MultivaluedMap queryParams, Class responseClass) { return res.queryParams(queryParams).header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.TEXT_XML) .get(responseClass); } - + protected Object downloadResource(WebResource res) { - ClientResponse response = res.header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_OCTET_STREAM).get(ClientResponse.class); + ClientResponse response = res.header(HTTP_HEADER_AUTH, authHeader).accept(MediaType.APPLICATION_OCTET_STREAM) + .get(ClientResponse.class); return response; } @@ -124,7 +125,7 @@ public abstract class AbstractClient { Class responseClass) { return fetchResource(resource.path(subResourceName), queryParams, responseClass); } - + /** * Submits given Form using POST method to the resource and returns the object received as response * @@ -207,21 +208,12 @@ public abstract class AbstractClient { 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(RESTConstants.QUERY_PARAM_VOLUME_NAME, volumeName) - .queryParam(RESTConstants.QUERY_PARAM_DELETE_OPTION, deleteOption).header(HTTP_HEADER_AUTH, authHeader) + @SuppressWarnings("unchecked") + protected Object deleteSubResource(String subResourceName, Class responseClass, + MultivaluedMap queryParams) { + return resource.path(subResourceName).queryParams(queryParams).header(HTTP_HEADER_AUTH, authHeader) .delete(responseClass); - } - @SuppressWarnings({ "rawtypes", "unchecked" }) - protected Object deleteSubResource(String subResourceName, Class responseClass, String volumeName, String disks, - String deleteOption) { - return resource.path(subResourceName).queryParam(RESTConstants.QUERY_PARAM_VOLUME_NAME, volumeName) - .queryParam(RESTConstants.QUERY_PARAM_DISKS, disks) - .queryParam(RESTConstants.QUERY_PARAM_DELETE_OPTION, deleteOption).header("Authorization", authHeader) - .delete(responseClass); } public abstract String getResourceName(); 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 767b4eb7..f1464211 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 @@ -91,8 +91,9 @@ public class VolumesClient extends AbstractClient { return (Volume) fetchSubResource(volumeName, Volume.class); } - public Status deleteVolume(Volume volume, String deleteOption) { - return (Status) deleteSubResource(volume.getName(), Status.class, volume.getName(), deleteOption); + public Status deleteVolume(Volume volume, boolean deleteOption) { + MultivaluedMap queryParams = prepareGetDeleteVolumeQueryParams(volume.getName(), deleteOption); + return (Status) deleteSubResource(volume.getName(), Status.class, queryParams); } public VolumeOptionInfoListResponse getVolumeOptionsDefaults() { @@ -144,11 +145,27 @@ public class VolumesClient extends AbstractClient { downloadSubResource((volumeName) + "/" + RESTConstants.SUBRESOURCE_LOGS + "/" + RESTConstants.SUBRESOURCE_DOWNLOAD); } - public Status removeBricks(String volumeName, List diskList, String deleteOption) { + public Status removeBricks(String volumeName, List diskList, boolean deleteOption) { String disks = StringUtil.ListToString( GlusterCoreUtil.getQualifiedDiskNames(diskList), ","); - return (Status) deleteSubResource(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, volumeName, disks, deleteOption); + MultivaluedMap queryParams = prepareGetRemoveBrickQueryParams(volumeName, disks, deleteOption); + return (Status) deleteSubResource(volumeName + "/" + RESTConstants.SUBRESOURCE_DISKS, Status.class, queryParams); + } + + private MultivaluedMap prepareGetRemoveBrickQueryParams(String volumeName, String disks, boolean deleteOption) { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add(RESTConstants.QUERY_PARAM_VOLUME_NAME, volumeName); + queryParams.add(RESTConstants.QUERY_PARAM_DISKS, disks); + queryParams.add(RESTConstants.QUERY_PARAM_DELETE_OPTION, "" + deleteOption); + return queryParams; } + private MultivaluedMap prepareGetDeleteVolumeQueryParams(String volumeName, boolean deleteOption) { + MultivaluedMap queryParams = new MultivaluedMapImpl(); + queryParams.add(RESTConstants.QUERY_PARAM_VOLUME_NAME, volumeName); + queryParams.add(RESTConstants.QUERY_PARAM_DELETE_OPTION, "" + deleteOption); + return queryParams; + } + private MultivaluedMap prepareGetLogQueryParams(String diskName, String severity, Date fromTimestamp, Date toTimestamp, int messageCount) { MultivaluedMap queryParams = new MultivaluedMapImpl(); 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 9d479f0c..cfcf8656 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 @@ -63,9 +63,10 @@ public class DeleteVolumeAction extends AbstractActionDelegate { return; } } - String confirmDelete = ""; + + boolean confirmDelete = false; if (deleteOption == 1) { - confirmDelete = "-d"; + confirmDelete = true; } status = client.deleteVolume(volume, confirmDelete); diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java index 1524f334..0735b63f 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java @@ -32,13 +32,13 @@ public class RemoveDiskAction extends AbstractActionDelegate { IImageKeys.VOLUME), "Are you sure you want to remove disks from volume [" + volume.getName() + "] ?", MessageDialog.QUESTION, new String[] { "Cancel", "Remove disks, delete volume data from them", "Remove disks, back-up volume data from them" }, 2).open(); - if (deleteOption == 0) { + if (deleteOption <= 0) { // By Cancel button(0) or Escape key(-1) return; } - String confirmDelete = ""; + boolean confirmDelete = false; if (deleteOption == 1) { - confirmDelete = "-d"; + confirmDelete = true; } VolumesClient client = new VolumesClient(modelManager.getSecurityToken()); diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java index e319dcca..c105fa5a 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/CreateVolumePage1.java @@ -25,8 +25,10 @@ import java.util.Set; import org.eclipse.jface.viewers.ArrayContentProvider; import org.eclipse.jface.viewers.ComboViewer; +import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.LabelProvider; +import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.window.Window; import org.eclipse.jface.wizard.WizardPage; import org.eclipse.swt.SWT; @@ -195,6 +197,7 @@ public class CreateVolumePage1 extends WizardPage { // user has customized disks. get them from the dialog box. volume.setDisks(dialog.getSelectedBricks()); linkCustomize.setText("" + volume.getDisks().size() + " Disk(s) (customize)"); + validateForm(); } } }); @@ -233,6 +236,12 @@ public class CreateVolumePage1 extends WizardPage { return Volume.getVolumeTypeStr(volumeType); } }); + typeComboViewer.addSelectionChangedListener(new ISelectionChangedListener() { + @Override + public void selectionChanged(SelectionChangedEvent event) { + validateForm(); + } + }); } private void createTypeLabel(Composite container) { 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 4fc70202..fe03fffd 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 @@ -173,10 +173,15 @@ public class VolumesResource { @Path("{" + PATH_PARAM_VOLUME_NAME + "}") @Produces(MediaType.TEXT_XML) public Status deleteVolume(@QueryParam(QUERY_PARAM_VOLUME_NAME) String volumeName, - @QueryParam(QUERY_PARAM_DELETE_OPTION) String deleteOption) { + @QueryParam(QUERY_PARAM_DELETE_OPTION) boolean deleteFlag) { Volume volume = glusterUtil.getVolume(volumeName); Status status = glusterUtil.deleteVolume(volumeName); - + + String deleteOption = ""; + if(deleteFlag) { + deleteOption = "-d"; + } + if (status.isSuccess()) { List disks = volume.getDisks(); Status postDeleteStatus = postDelete(volumeName, disks, deleteOption); @@ -193,16 +198,21 @@ public class VolumesResource { @Path("{" + QUERY_PARAM_VOLUME_NAME + "}/" + SUBRESOURCE_DISKS) @Produces(MediaType.TEXT_XML) public Status removeBricks(@PathParam(QUERY_PARAM_VOLUME_NAME) String volumeName, - @QueryParam(QUERY_PARAM_DISKS) String disks, @QueryParam(QUERY_PARAM_DELETE_OPTION) String deleteOption) { + @QueryParam(QUERY_PARAM_DISKS) String disks, @QueryParam(QUERY_PARAM_DELETE_OPTION) boolean deleteFlag) { List bricks = Arrays.asList(disks.split(",")); // Convert from comma separated string (query parameter) - List volumeBrick = new ArrayList(); + List volumeBricks = new ArrayList(); for (String brickInfo : bricks) { String diskInfo[] = brickInfo.split(":"); - volumeBrick.add(getBrickForDisk(getVolume(volumeName), diskInfo[1])); + volumeBricks.add(getBrickForDisk(getVolume(volumeName), diskInfo[1])); } - Status status = glusterUtil.removeBricks(volumeName, volumeBrick); + Status status = glusterUtil.removeBricks(volumeName, volumeBricks); + String deleteOption = ""; + if(deleteFlag) { + deleteOption = "-d"; + } + if (status.isSuccess()) { Status cleanupStatus = cleanupDirectories(bricks, volumeName, bricks.size(), deleteOption); if (!cleanupStatus.isSuccess()) { @@ -569,7 +579,7 @@ public class VolumesResource { Form form = new Form(); form.add("volumeName", volume.getName()); form.add(RESTConstants.FORM_PARAM_DELETE_OPTION, 1); - Status status = vr.deleteVolume("Vol2", "1"); + Status status = vr.deleteVolume("Vol2", true); 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 fa49a529..476b5a14 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 @@ -184,7 +184,6 @@ public class GlusterUtil { List command = prepareVolumeCreateCommand(volume, bricks, count, volumeType, transportTypeStr); ProcessResult result = processUtil.executeCommand(command); if (!result.isSuccess()) { - // Perform cleanup on all nodes before returning return new Status(result); } -- cgit