summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.console
diff options
context:
space:
mode:
authorShireesh Anjal <anjalshireesh@gmail.com>2011-11-25 05:56:36 -0800
committerShireesh Anjal <anjalshireesh@gmail.com>2011-11-25 05:56:36 -0800
commit92c52d8edf285945d31e446503fc742fde9dcc49 (patch)
tree5789d783a07bfaf883d7e589f42c27987dc0432f /src/com.gluster.storage.management.console
parent45e68b0cae66c4e67098bfab5877c172ed8c584e (diff)
parent229ef07aa2235d92e41c3880099b1257ce0f30fd (diff)
Merge pull request #7 from Selvasundaram/master
Disk Initialization enhanced with user selectable file system and mount point
Diffstat (limited to 'src/com.gluster.storage.management.console')
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitDiskDialog.java (renamed from src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java)98
-rw-r--r--src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java32
2 files changed, 104 insertions, 26 deletions
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitDiskDialog.java
index 4b64ea96..870de286 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitializeDiskTypeSelection.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/dialogs/InitDiskDialog.java
@@ -21,35 +21,48 @@
*******************************************************************************/
package com.gluster.storage.management.console.dialogs;
-import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.dialogs.Dialog;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.TraverseEvent;
import org.eclipse.swt.events.TraverseListener;
+import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Combo;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.forms.events.HyperlinkAdapter;
+import org.eclipse.ui.forms.events.HyperlinkEvent;
+import org.eclipse.ui.forms.widgets.Hyperlink;
import com.gluster.storage.management.console.utils.GUIHelper;
-import com.gluster.storage.management.core.constants.GlusterConstants;
-public class InitializeDiskTypeSelection extends Dialog {
+public class InitDiskDialog extends Dialog {
private Combo formatTypeCombo = null;
private final GUIHelper guiHelper = GUIHelper.getInstance();
private Composite initializeDiskTypeComposite;
private Composite composite;
private String fsType;
+ private String mountPoint;
+ private Text mountPointText;
+ private String deviceName;
+ private List<String> fsTypes;
+ private static final String DEFAULT_MOUNT_POINT = "/export/";
- public InitializeDiskTypeSelection(Shell parentShell) {
+ public InitDiskDialog(Shell parentShell, String deviceName, List<String> fsTypes) {
super(parentShell);
- // TODO Auto-generated constructor stub
+ this.fsTypes = fsTypes;
+ this.deviceName = deviceName;
}
@Override
@@ -98,32 +111,68 @@ public class InitializeDiskTypeSelection extends Dialog {
GridLayout layout = new GridLayout(3, false);
initializeDiskTypeComposite.setLayout(layout);
- createLabel(initializeDiskTypeComposite, "Format disk using ");
+ createLabel(initializeDiskTypeComposite, "File system ");
createFormatTypeCombo(initializeDiskTypeComposite);
- createLabel(initializeDiskTypeComposite, " file system");
+ createLabel(initializeDiskTypeComposite, "Mount point ");
+ createMountPointText(initializeDiskTypeComposite);
+ createChangeLink(initializeDiskTypeComposite);
}
private void createLabel(Composite composite, String labelText) {
Label formatTypeLabel = new Label(composite, SWT.NONE);
formatTypeLabel.setText(labelText);
- formatTypeLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false));
+ formatTypeLabel.setLayoutData(new GridData(GridData.BEGINNING, GridData.CENTER, false, false));
}
private void createFormatTypeCombo(Composite composite) {
- List<String> fsType = new ArrayList<String>();
- fsType.add(GlusterConstants.FSTYPE_DEFAULT);
- fsType.add(GlusterConstants.FSTYPE_EXT_3);
- fsType.add(GlusterConstants.FSTYPE_EXT_4);
- fsType.add(GlusterConstants.FSTYPE_XFS);
formatTypeCombo = new Combo(composite, SWT.READ_ONLY);
- formatTypeCombo.setItems(fsType.toArray(new String[0]));
+ formatTypeCombo.setItems(fsTypes.toArray(new String[0]));
formatTypeCombo.select(0);
+ new Label(composite, SWT.NONE);
}
+ private void createMountPointText(Composite container) {
+ mountPointText = new Text(container, SWT.BORDER);
+ GridData txtNameData = new GridData(SWT.LEFT, SWT.CENTER, true, false, 1, 1);
+ txtNameData.widthHint = 400;
+ mountPointText.setTextLimit(100);
+ mountPointText.setLayoutData(txtNameData);
+ mountPointText.setText(DEFAULT_MOUNT_POINT + deviceName);
+ mountPointText.setEnabled(false);
+ mountPointText.addModifyListener(new ModifyListener() {
+ @Override
+ public void modifyText(ModifyEvent e) {
+ validateMountPoint();
+ }
+ });
+ }
+
+ private void createChangeLink(Composite container) {
+ final Hyperlink changeLink = new Hyperlink(container, SWT.UNDERLINE_SINGLE);
+ changeLink.setText("change");
+ changeLink.setUnderlined(true);
+ changeLink.setForeground(new Color(Display.getDefault(), 0, 0, 255));
+
+ changeLink.addHyperlinkListener(new HyperlinkAdapter() {
+ @Override
+ public void linkActivated(HyperlinkEvent e) {
+ if (!mountPointText.isEnabled()) {
+ changeLink.setVisible(false);
+ mountPointText.setEnabled(true);
+ }
+ }
+ });
+ }
+
@Override
protected void okPressed() {
- fsType = formatTypeCombo.getText();
- super.okPressed();
+ fsType = formatTypeCombo.getText().trim();
+ mountPoint = mountPointText.getText().trim();
+ if (validateForm()) {
+ super.okPressed();
+ } else {
+ MessageDialog.openError(getShell(), "Initialize Disk - Error", "Please enter a valid mount point");
+ }
}
@Override
@@ -131,6 +180,18 @@ public class InitializeDiskTypeSelection extends Dialog {
super.cancelPressed();
}
+ private boolean validateMountPoint() {
+ String mountPoint = mountPointText.getText().trim();
+ if (mountPoint.isEmpty()) {
+ return false;
+ }
+ return mountPoint.matches("^/.+");
+ }
+
+ private boolean validateForm() {
+ return (!formatTypeCombo.getText().trim().isEmpty() && validateMountPoint());
+ }
+
/**
* Overriding to make sure that the dialog is centered in screen
*/
@@ -142,7 +203,10 @@ public class InitializeDiskTypeSelection extends Dialog {
}
public String getFSType() {
- return fsType.trim();
+ return fsType;
}
+ public String getMountPoint() {
+ return mountPoint;
+ }
}
diff --git a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java
index 417e67ea..43a7e61a 100644
--- a/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java
+++ b/src/com.gluster.storage.management.console/src/com/gluster/storage/management/console/views/pages/AbstractDisksPage.java
@@ -19,6 +19,7 @@
package com.gluster.storage.management.console.views.pages;
import java.net.URI;
+import java.util.ArrayList;
import java.util.List;
import org.eclipse.jface.dialogs.MessageDialog;
@@ -44,7 +45,9 @@ import com.gluster.storage.management.client.TasksClient;
import com.gluster.storage.management.console.Application;
import com.gluster.storage.management.console.GlusterDataModelManager;
import com.gluster.storage.management.console.IEntityListener;
-import com.gluster.storage.management.console.dialogs.InitializeDiskTypeSelection;
+import com.gluster.storage.management.console.dialogs.InitDiskDialog;
+import com.gluster.storage.management.console.utils.GlusterLogger;
+import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.ClusterListener;
import com.gluster.storage.management.core.model.DefaultClusterListener;
import com.gluster.storage.management.core.model.Device;
@@ -59,6 +62,7 @@ import com.gluster.storage.management.core.model.TaskInfo;
public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk> implements IEntityListener {
protected List<Disk> disks;
+ protected static final GlusterLogger logger = GlusterLogger.getInstance();
/**
* @return Index of the "status" column in the table. Return -1 if status column is not displayed
@@ -69,7 +73,7 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
super(site, parent, style, false, true, disks);
this.disks = disks;
- // creates hyperlinks for "unitialized" disks
+ // creates hyperlinks for "uninitialized" disks
setupStatusCellEditor();
// Listen for disk status change events
Application.getApplication().addEntityListener(this);
@@ -250,22 +254,31 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
TaskInfo existingTaskInfo = modelManager.getTaskByReference(reference);
if (existingTaskInfo != null && existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS
&& existingTaskInfo.getStatus().getCode() != Status.STATUS_CODE_FAILURE) {
- MessageDialog.openInformation(getShell(), "Error: Initialize disk", "Initializing disk [" + reference
+ MessageDialog.openInformation(getShell(), "Initialize disk - Error", "Initializing disk [" + reference
+ "] is already in progress! Try later.");
return;
}
- InitializeDiskTypeSelection formatDialog = new InitializeDiskTypeSelection(getShell());
+ // To collect the available fsType
+ GlusterServersClient serversClient = new GlusterServersClient();
+ List<String> fsTypes = new ArrayList<String>();
+ try {
+ fsTypes = serversClient.getFSTypes(device.getServerName());
+ } catch (GlusterRuntimeException e1) {
+ MessageDialog.openError(getShell(), "Initialize disk - Error", e1.getMessage());
+ return;
+ }
+
+ InitDiskDialog formatDialog = new InitDiskDialog(getShell(), device.getName(), fsTypes);
int userAction = formatDialog.open();
if (userAction == Window.CANCEL) {
- formatDialog.cancelPressed();
+ // formatDialog.cancelPressed();
return;
}
- GlusterServersClient serversClient = new GlusterServersClient();
try {
- URI uri = serversClient.initializeDisk(device.getServerName(), device.getName(), formatDialog.getFSType());
+ URI uri = serversClient.initializeDisk(device.getServerName(), device.getName(), formatDialog.getFSType(), formatDialog.getMountPoint());
TasksClient taskClient = new TasksClient();
TaskInfo taskInfo = taskClient.getTaskInfo(uri);
@@ -285,11 +298,12 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk
// GlusterDataModelManager.getInstance().updateDeviceStatus(device.getServerName(), device.getName(),
// DEVICE_STATUS.INITIALIZED);
} else {
- MessageDialog.openError(getShell(), "Error: Initialize disk", taskInfo.getStatus().getMessage());
+ MessageDialog.openError(getShell(), "Initialize disk - Error", taskInfo.getStatus().getMessage());
}
guiHelper.showTaskView();
} catch (Exception e1) {
- MessageDialog.openError(getShell(), "Error: Initialize disk", e1.getMessage());
+ logger.error("Exception while initialize disk", e1);
+ MessageDialog.openError(getShell(), "Initialize disk - Error", e1.getMessage());
}
}
}