summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java90
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java82
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java105
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java11
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java6
-rw-r--r--src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java3
6 files changed, 175 insertions, 122 deletions
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java
index bc3f4e04..c9ef9281 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/DeleteVolumeAction.java
@@ -25,6 +25,8 @@ import java.util.Set;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.console.GlusterDataModelManager;
@@ -39,11 +41,11 @@ public class DeleteVolumeAction extends AbstractActionDelegate {
private List<Volume> selectedVolumes = new ArrayList<Volume>();
private List<String> selectedVolumeNames = new ArrayList<String>();
private List<String> onlineVolumeNames = new ArrayList<String>();
-
+ private GUIHelper guiHelper = GUIHelper.getInstance();
+
@Override
protected void performAction(final IAction action) {
final String actionDesc = action.getDescription();
- VolumesClient vc = new VolumesClient();
collectVolumeNames();
String warningMessage;
@@ -54,54 +56,62 @@ public class DeleteVolumeAction extends AbstractActionDelegate {
warningMessage = "Are you sure to delete the volumes " + selectedVolumeNames + " ?";
}
- Integer deleteOption = new MessageDialog(getShell(), "Delete Volume", GUIHelper.getInstance().getImage(
+ final Integer directoryDeleteOption = new MessageDialog(getShell(), "Delete Volume", GUIHelper.getInstance().getImage(
IImageKeys.VOLUME_16x16), warningMessage, MessageDialog.QUESTION, new String[] { "Cancel",
"Delete volume and data", "Delete volume, keep data" }, -1).open();
- if (deleteOption <= 0) { // By Cancel button(0) or Escape key(-1)
+ if (directoryDeleteOption <= 0) { // By Cancel button(0) or Escape key(-1)
return;
}
- boolean confirmDelete = (deleteOption == 1) ? true : false;
- List<String> deletedVolumeNames = new ArrayList<String>();
- List<String> failedVolumes = new ArrayList<String>();
- String errorMessage = "";
+
+ BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
+ @Override
+ public void run() {
+ VolumesClient vc = new VolumesClient();
+ boolean confirmDeleteDir = (directoryDeleteOption == 1) ? true : false;
+ List<String> deletedVolumeNames = new ArrayList<String>();
+ List<String> failedVolumes = new ArrayList<String>();
+ String errorMessage = "";
- for (Volume volume : selectedVolumes.toArray(new Volume[0])) {
- try {
- if (volume.getStatus() == VOLUME_STATUS.ONLINE) { // stop if online volume
- vc.stopVolume(volume.getName());
+ for (Volume volume : selectedVolumes.toArray(new Volume[0])) {
+ try {
+ guiHelper.setStatusMessage("Deleting volume [" + volume.getName() + "]");
+ if (volume.getStatus() == VOLUME_STATUS.ONLINE) { // stop if online volume
+ vc.stopVolume(volume.getName());
+ }
+ vc.deleteVolume(volume.getName(), confirmDeleteDir);
+ modelManager.deleteVolume(volume);
+ deletedVolumeNames.add(volume.getName());
+ } catch (Exception e) {
+ // Volume delete succeeded and post delete operation (directory cleanup, CIFS etc) may fail
+ if (vc.volumeExists(volume.getName())) {
+ errorMessage += CoreConstants.NEWLINE + "[" + volume.getName() + "] : [" + e.getMessage()
+ + "]";
+ failedVolumes.add(volume.getName());
+ } else {
+ errorMessage += CoreConstants.NEWLINE + "Volume deleted, but following error occured: ["
+ + e.getMessage() + "]";
+ modelManager.deleteVolume(volume);
+ deletedVolumeNames.add(volume.getName());
+ }
+ }
}
- vc.deleteVolume(volume.getName(), confirmDelete);
- modelManager.deleteVolume(volume);
- deletedVolumeNames.add(volume.getName());
- } catch (Exception e) {
- // there is a possibility that the error was in post-delete operation, which means
- // volume was deleted, but some other error happened. check if this is the case.
- if (vc.volumeExists(volume.getName())) {
- errorMessage += CoreConstants.NEWLINE + "[" + volume.getName() + "] : [" + e.getMessage() + "]";
- failedVolumes.add(volume.getName());
+
+ // Display the success or failure info
+ if (deletedVolumeNames.size() == 0) { // No volume(s) deleted successfully
+ showErrorDialog(actionDesc, "volumes " + failedVolumes + " could not be delete! "
+ + CoreConstants.NEWLINE + "Error: [" + errorMessage + "]");
} else {
- errorMessage += CoreConstants.NEWLINE + "Volume deleted, but following error occured: ["
- + e.getMessage() + "]";
- modelManager.deleteVolume(volume);
- deletedVolumeNames.add(volume.getName());
+ String info = "Volumes " + deletedVolumeNames + " deleted successfully!";
+ if (errorMessage != "") {
+ info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes
+ + " could not be deleted! [" + errorMessage + "]";
+ }
+ showInfoDialog(actionDesc, info);
}
}
- }
-
- // Display the success or failure info
- if (deletedVolumeNames.size() == 0) { // No volume(s) deleted successfully
- showErrorDialog(actionDesc, "volumes " + failedVolumes + " could not be delete! " + CoreConstants.NEWLINE
- + "Error: [" + errorMessage + "]");
- } else {
- String info = "Volumes " + deletedVolumeNames + " deleted successfully!";
- if (errorMessage != "") {
- info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes "
- + failedVolumes + " could not be deleted! ["
- + errorMessage + "]";
- }
- showInfoDialog(actionDesc, info);
- }
+ });
+ guiHelper.clearStatusMessage();
}
private void collectVolumeNames() {
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java
index c86b66cf..e3324a12 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StartVolumeAction.java
@@ -24,6 +24,8 @@ import java.util.Set;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.console.GlusterDataModelManager;
@@ -38,11 +40,11 @@ public class StartVolumeAction extends AbstractActionDelegate {
private List<Volume> selectedVolumes = new ArrayList<Volume>();
private List<String> selectedVolumeNames = new ArrayList<String>();
private List<String> offlineVolumeNames = new ArrayList<String>();
+ private GUIHelper guiHelper = GUIHelper.getInstance();
@Override
protected void performAction(IAction action) {
final String actionDesc = action.getDescription();
- VolumesClient vc = new VolumesClient();
collectVolumeNames();
@@ -50,41 +52,55 @@ public class StartVolumeAction extends AbstractActionDelegate {
showWarningDialog(actionDesc, "Volumes " + selectedVolumeNames + " already started!");
return; // Volume already started. Don't do anything.
}
-
- List<String> startedVolumes = new ArrayList<String>();
- List<String> failedVolumes = new ArrayList<String>();
- String errorMessage = "";
-
- for (Volume volume : selectedVolumes.toArray(new Volume[0])) {
- if (volume.getStatus() == VOLUME_STATUS.ONLINE) {
- continue; // skip if already started
- }
- try {
- vc.startVolume(volume.getName());
- modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE);
- startedVolumes.add(volume.getName());
- }catch (Exception e) {
- failedVolumes.add(volume.getName());
- // If any post volume start activity failed, update the volume status
- if (vc.getVolume(volume.getName()).getStatus() == VOLUME_STATUS.ONLINE) {
- modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE);
+ BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
+ @Override
+ public void run() {
+ VolumesClient vc = new VolumesClient();
+ Volume newVolume = new Volume();
+ List<String> startedVolumes = new ArrayList<String>();
+ List<String> failedVolumes = new ArrayList<String>();
+ String errorMessage = "";
+
+ for (Volume volume : selectedVolumes.toArray(new Volume[0])) {
+ if (volume.getStatus() == VOLUME_STATUS.ONLINE) {
+ continue; // skip if already started
+ }
+ try {
+ guiHelper.setStatusMessage("Starting volume [" + volume.getName() + "]");
+ vc.startVolume(volume.getName());
+ startedVolumes.add(volume.getName());
+ } catch (Exception e) {
+ failedVolumes.add(volume.getName());
+ // If any post volume start activity failed, update the volume status
+ if (vc.getVolume(volume.getName()).getStatus() == VOLUME_STATUS.ONLINE) {
+ modelManager.updateVolumeStatus(volume, VOLUME_STATUS.ONLINE);
+ }
+ errorMessage += e.getMessage();
+ }
+ // Update the model by fetching latest volume info (NOT JUST STATUS)
+ try {
+ newVolume = vc.getVolume(volume.getName());
+ modelManager.volumeChanged(volume, newVolume);
+ } catch (Exception e) {
+ errorMessage += "Updating volume info failed on UI. [" + e.getMessage() + "]";
+ }
}
- errorMessage += e.getMessage();
- }
- }
- // Display the success or failure info
- if (startedVolumes.size() == 0) { // No volume(s) started successfully
- showErrorDialog(actionDesc, "Following volumes " + failedVolumes + " could not be start!"
- + CoreConstants.NEWLINE + "Error: [" + errorMessage + "]");
- } else {
- String info = "Volumes " + startedVolumes + " started successfully!";
- if (errorMessage != "") {
- info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes
- + " failed to start! [" + errorMessage + "]";
+ // Display the success or failure info
+ if (startedVolumes.size() == 0) { // No volume(s) started successfully
+ showErrorDialog(actionDesc, "Following volumes " + failedVolumes + " could not be start!"
+ + CoreConstants.NEWLINE + "Error: [" + errorMessage + "]");
+ } else {
+ String info = "Volumes " + startedVolumes + " started successfully!";
+ if (errorMessage != "") {
+ info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes
+ + " failed to start! [" + errorMessage + "]";
+ }
+ showInfoDialog(actionDesc, info);
+ }
}
- showInfoDialog(actionDesc, info);
- }
+ });
+ guiHelper.clearStatusMessage();
}
private void collectVolumeNames() {
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java
index 6e5b4d30..974534c5 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/actions/StopVolumeAction.java
@@ -25,6 +25,8 @@ import java.util.Set;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.custom.BusyIndicator;
+import org.eclipse.swt.widgets.Display;
import com.gluster.storage.management.client.VolumesClient;
import com.gluster.storage.management.console.GlusterDataModelManager;
@@ -36,14 +38,14 @@ import com.gluster.storage.management.core.model.Volume.VOLUME_STATUS;
public class StopVolumeAction extends AbstractActionDelegate {
private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
- private List<Volume> volumes = new ArrayList<Volume>();
+ private List<Volume> selectedVolumes = new ArrayList<Volume>();
private List<String> selectedVolumeNames = new ArrayList<String>();
private List<String> onlineVolumeNames = new ArrayList<String>();
-
+ private GUIHelper guiHelper = GUIHelper.getInstance();
+
@Override
protected void performAction(final IAction action) {
final String actionDesc = action.getDescription();
- VolumesClient vc = new VolumesClient();
collectVolumeNames();
@@ -61,46 +63,64 @@ public class StopVolumeAction extends AbstractActionDelegate {
return;
}
- List<String> stoppedVolumes = new ArrayList<String>();
- List<String> failedVolumes = new ArrayList<String>();
- String errorMessage = "";
-
- for (Volume volume : volumes.toArray(new Volume[0])) {
- if (volume.getStatus() == VOLUME_STATUS.OFFLINE) {
- continue; // skip if already stopped
- }
- try {
- vc.stopVolume(volume.getName());
- modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE);
- stoppedVolumes.add(volume.getName());
- } catch (Exception e) {
- failedVolumes.add(volume.getName());
- // If any post volume stop activity failed, update the volume status
- if (vc.getVolume(volume.getName()).getStatus() == VOLUME_STATUS.OFFLINE) {
- modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE);
+
+ BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
+ @Override
+ public void run() {
+ VolumesClient vc = new VolumesClient();
+ List<String> stoppedVolumes = new ArrayList<String>();
+ List<String> failedVolumes = new ArrayList<String>();
+ String errorMessage = "";
+
+ Volume newVolume = new Volume();
+
+ for (Volume volume : selectedVolumes.toArray(new Volume[0])) {
+ if (volume.getStatus() == VOLUME_STATUS.OFFLINE) {
+ continue; // skip if already stopped
+ }
+ try {
+ guiHelper.setStatusMessage("Stopping volume [" + volume.getName() + "]");
+ vc.stopVolume(volume.getName());
+ // modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE);
+ stoppedVolumes.add(volume.getName());
+ } catch (Exception e) {
+ failedVolumes.add(volume.getName());
+ // If any post volume stop activity failed, update the volume status
+ if (vc.getVolume(volume.getName()).getStatus() == VOLUME_STATUS.OFFLINE) {
+ modelManager.updateVolumeStatus(volume, VOLUME_STATUS.OFFLINE);
+ }
+ errorMessage += e.getMessage();
+ }
+
+ // Update the model by fetching latest volume info (NOT JUST STATUS)
+ try {
+ newVolume = vc.getVolume(volume.getName());
+ modelManager.volumeChanged(volume, newVolume);
+ } catch (Exception e) {
+ errorMessage += "Failed to update volume info on UI. [" + e.getMessage() + "]";
+ }
+ }
+ // Display the success or failure info
+ if (stoppedVolumes.size() == 0) { // No volume(s) stopped successfully
+ showErrorDialog(actionDesc, "Volumes " + failedVolumes + " could not be stopped! "
+ + CoreConstants.NEWLINE + "Error: [" + errorMessage + "]");
+ } else {
+ String info = "Volumes " + stoppedVolumes + " stopped successfully!";
+ if (errorMessage != "") {
+ info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes
+ + " failed to stop! [" + errorMessage + "]";
+ }
+ showInfoDialog(actionDesc, info);
}
- errorMessage += e.getMessage();
- }
- }
-
- // Display the success or failure info
- if (stoppedVolumes.size() == 0) { // No volume(s) stopped successfully
- showErrorDialog(actionDesc, "Volumes " + failedVolumes + " could not be stopped! " + CoreConstants.NEWLINE
- + "Error: [" + errorMessage + "]");
- } else {
- String info = "Volumes " + stoppedVolumes + " stopped successfully!";
- if (errorMessage != "") {
- info += CoreConstants.NEWLINE + CoreConstants.NEWLINE + "Volumes " + failedVolumes
- + " failed to stop! [" + errorMessage + "]";
}
- showInfoDialog(actionDesc, info);
- }
+ });
+ guiHelper.clearStatusMessage();
}
private void collectVolumeNames() {
selectedVolumeNames.clear();
onlineVolumeNames.clear();
- for (Volume volume : volumes) {
+ for (Volume volume : selectedVolumes) {
selectedVolumeNames.add(volume.getName());
if (volume.getStatus() == VOLUME_STATUS.ONLINE) {
onlineVolumeNames.add(volume.getName());
@@ -121,21 +141,20 @@ public class StopVolumeAction extends AbstractActionDelegate {
*/
@Override
public void selectionChanged(IAction action, ISelection selection) {
-
- Set<Volume> selectedVolumes = GUIHelper.getInstance().getSelectedEntities(getWindow(), Volume.class);
- volumes.clear();
- if (selectedVolumes == null || selectedVolumes.isEmpty()) {
+ Set<Volume> selectedVolumeNames = GUIHelper.getInstance().getSelectedEntities(getWindow(), Volume.class);
+ selectedVolumes.clear();
+ if (selectedVolumeNames == null || selectedVolumeNames.isEmpty()) {
super.selectionChanged(action, selection);
if (selectedEntity instanceof Volume) {
- volumes.add((Volume) selectedEntity);
+ selectedVolumes.add((Volume) selectedEntity);
}
} else {
- volumes.addAll(selectedVolumes); //TODO reverse the collection to maintain the selected order
+ selectedVolumes.addAll(selectedVolumeNames); //TODO reverse the collection to maintain the selected order
}
action.setEnabled(false);
// To enable the action
- for (Volume volume : volumes) {
+ for (Volume volume : selectedVolumes) {
if (volume.getStatus() == VOLUME_STATUS.ONLINE) {
action.setEnabled(true);
break; // If find an online volume, enable the action
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java
index c538e431..5de35000 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/VolumeSummaryView.java
@@ -3,12 +3,10 @@ package com.gluster.storage.management.console.views;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
-import java.util.Arrays;
import java.util.List;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.fieldassist.ControlDecoration;
-import org.eclipse.osgi.service.resolver.DisabledInfo;
import org.eclipse.swt.SWT;
import org.eclipse.swt.custom.BusyIndicator;
import org.eclipse.swt.custom.CLabel;
@@ -111,7 +109,6 @@ public class VolumeSummaryView extends ViewPart {
toolbarManager.updateToolbar(volume);
cifsCheckbox.setSelection(volume.isCifsEnable());
populateCifsUsersText();
-
}
@Override
@@ -420,11 +417,13 @@ public class VolumeSummaryView extends ViewPart {
BusyIndicator.showWhile(Display.getDefault(), new Runnable() {
@Override
public void run() {
+ VolumesClient vc = new VolumesClient();
+ Volume newVolume = new Volume();
try {
- new VolumesClient().setCifsConfig(volume.getName(), cifsCheckbox.getSelection(), cifsUsers);
+ vc.setCifsConfig(volume.getName(), cifsCheckbox.getSelection(), cifsUsers);
enableCifsUsersControls(false);
- modelManager.setCifsConfig(volume, cifsCheckbox.getSelection(),
- Arrays.asList(cifsUsers.split(",")));
+ newVolume = vc.getVolume(volume.getName());
+ modelManager.volumeChanged(volume, newVolume);
} catch (Exception e) {
MessageDialog.openError(Display.getDefault().getActiveShell(), "Cifs Configuration",
e.getMessage());
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java
index 985c05dd..01d3e7b0 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/VolumesPage.java
@@ -32,6 +32,7 @@ import org.eclipse.ui.IWorkbenchSite;
import com.gluster.storage.management.console.EntityGroupContentProvider;
import com.gluster.storage.management.console.VolumeTableLabelProvider;
+import com.gluster.storage.management.console.toolbar.GlusterToolbarManager;
import com.gluster.storage.management.core.constants.CoreConstants;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.DefaultClusterListener;
@@ -42,6 +43,8 @@ import com.gluster.storage.management.core.model.Volume;
public class VolumesPage extends AbstractTableViewerPage<Volume> {
private List<Volume> volumes;
+ final GlusterToolbarManager toolbarManager = new GlusterToolbarManager( site.getWorkbenchWindow());
+
public enum VOLUME_TABLE_COLUMN_INDICES {
NAME, VOLUME_TYPE, NUM_OF_BRICKS, TRANSPORT_TYPE, VOLUME_STATUS
};
@@ -83,18 +86,21 @@ public class VolumesPage extends AbstractTableViewerPage<Volume> {
public void volumeCreated(Volume volume) {
tableViewer.add(volume);
parent.update();
+ toolbarManager.updateToolbar(volume);
}
@Override
public void volumeDeleted(Volume volume) {
tableViewer.remove(volume);
parent.update();
+ toolbarManager.updateToolbar(volume);
}
@Override
public void volumeChanged(Volume volume, Event event) {
tableViewer.update(volume, null);
parent.update();
+ toolbarManager.updateToolbar(volume);
}
};
}
diff --git a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java
index 1a7fa38f..69fe01c1 100644
--- a/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java
+++ b/src/com.gluster.storage.management.gateway/src/com/gluster/storage/management/gateway/services/VolumeService.java
@@ -750,6 +750,9 @@ public class VolumeService {
try {
postDelete(volumeName, bricks, deleteFlag);
if (volume.isCifsEnable()) {
+ if (volume.getStatus() == VOLUME_STATUS.ONLINE) {
+ stopCifsReExport(clusterName, volumeName);
+ }
deleteCifsUsers(clusterName, volumeName);
}
} catch(Exception e) {