diff options
| author | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-07-20 07:01:00 -0700 |
|---|---|---|
| committer | Shireesh Anjal <anjalshireesh@gmail.com> | 2011-07-20 07:01:00 -0700 |
| commit | 467d023dfbccc7ff10c5fe29fe7992e6c798875a (patch) | |
| tree | 1ce07d062988e69b67a951cbefda354d4c658312 /src | |
| parent | c41e8eced1df90d1c7dd47f1035d151a6429136c (diff) | |
| parent | c751399f60942f916753e429b97aa9ae600f40c9 (diff) | |
Merge pull request #126 from Dhandapani/master
Initialize disk task issue fix
Diffstat (limited to 'src')
9 files changed, 346 insertions, 8 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java index 0ee933f0..8be5beac 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterServersClient.java @@ -69,9 +69,9 @@ public class GlusterServersClient extends AbstractClient { return server; } - public void addServer(Server discoveredServer) { + public void addServer(String serverName) { Form form = new Form(); - form.add(RESTConstants.FORM_PARAM_SERVER_NAME, discoveredServer.getName()); + form.add(RESTConstants.FORM_PARAM_SERVER_NAME, serverName); postRequest(form); } diff --git a/src/com.gluster.storage.management.gui/plugin.xml b/src/com.gluster.storage.management.gui/plugin.xml index 1850c93e..3c87ffe1 100644 --- a/src/com.gluster.storage.management.gui/plugin.xml +++ b/src/com.gluster.storage.management.gui/plugin.xml @@ -462,6 +462,20 @@ toolbarPath="Normal" tooltip="Create a new Volume"> </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.ServerAdditionAction" + definitionId="com.gluster.storage.management.gui.commands.ServerAddition" + id="com.gluster.storage.management.gui.actions.ServerAdditionAction" + label="Add Server" + menubarPath="com.gluster.storage.management.gui.actionsets.volumes/volumes" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + tooltip="Manual Server Addition"> + </action> <menu id="com.gluster.storage.management.gui.actionsets.volumes" label="&Gluster" @@ -631,6 +645,20 @@ toolbarPath="Normal" tooltip="Create a new Volume"> </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.ServerAdditionAction" + definitionId="com.gluster.storage.management.gui.commands.ServerAddition" + id="com.gluster.storage.management.gui.actions.ServerAdditionAction" + label="Add Server" + menubarPath="com.gluster.storage.management.gui.menu.volume/volume" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + tooltip="Manual Server Addition"> + </action> <menu id="com.gluster.storage.management.gui.menu.volume" label="&Gluster" @@ -675,6 +703,20 @@ toolbarPath="Normal" tooltip="Create a new Volume"> </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.ServerAdditionAction" + definitionId="com.gluster.storage.management.gui.commands.ServerAddition" + id="com.gluster.storage.management.gui.actions.ServerAdditionAction" + label="Add Server" + menubarPath="com.gluster.storage.management.gui.menu.servers/servers" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + tooltip="Manual Server Addition"> + </action> <menu id="com.gluster.storage.management.gui.menu.servers" label="&Gluster" @@ -719,6 +761,20 @@ toolbarPath="Normal" tooltip="Create a new Volume"> </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.ServerAdditionAction" + definitionId="com.gluster.storage.management.gui.commands.ServerAddition" + id="com.gluster.storage.management.gui.actions.ServerAdditionAction" + label="Add Server" + menubarPath="com.gluster.storage.management.gui.menu.glusterserver/glusterserver" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + tooltip="Manual Server Addition"> + </action> <menu id="com.gluster.storage.management.gui.menu.glusterserver" label="&Gluster" @@ -763,6 +819,20 @@ toolbarPath="Normal" tooltip="Create a new Volume"> </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.ServerAdditionAction" + definitionId="com.gluster.storage.management.gui.commands.ServerAddition" + id="com.gluster.storage.management.gui.actions.ServerAdditionAction" + label="Add Server" + menubarPath="com.gluster.storage.management.gui.menu.discoveredservers/discoveredservers" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + tooltip="Manual Server Addition"> + </action> <menu id="com.gluster.storage.management.gui.menu.discoveredservers" label="&Gluster" @@ -807,6 +877,20 @@ toolbarPath="Normal" tooltip="Create a new Volume"> </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.ServerAdditionAction" + definitionId="com.gluster.storage.management.gui.commands.ServerAddition" + id="com.gluster.storage.management.gui.actions.ServerAdditionAction" + label="Add Server" + menubarPath="com.gluster.storage.management.gui.menu.discoveredserver/discoveredserver" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + tooltip="Manual Server Addition"> + </action> <menu id="com.gluster.storage.management.gui.menu.discoveredserver" label="&Gluster" @@ -939,6 +1023,20 @@ toolbarPath="Normal" tooltip="Create a new Volume"> </action> + <action + allowLabelUpdate="false" + class="com.gluster.storage.management.gui.actions.ServerAdditionAction" + definitionId="com.gluster.storage.management.gui.commands.ServerAddition" + id="com.gluster.storage.management.gui.actions.ServerAdditionAction" + label="Add Server" + menubarPath="com.gluster.storage.management.gui.menu.gluster/gluster" + mode="FORCE_TEXT" + pulldown="false" + retarget="false" + state="false" + style="push" + tooltip="Manual Server Addition"> + </action> <menu id="com.gluster.storage.management.gui.menu.gluster" label="&Gluster" diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java index 81661942..6d21e537 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddServerAction.java @@ -52,7 +52,7 @@ public class AddServerAction extends AbstractActionDelegate { guiHelper.setStatusMessage("Adding server [" + server.getName() + "]..."); try { - glusterServersClient.addServer(server); + glusterServersClient.addServer(server.getName()); modelManager.addGlusterServer(glusterServersClient.getGlusterServer(server.getName())); successServers.add(server); } catch (Exception e) { diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ServerAdditionAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ServerAdditionAction.java new file mode 100644 index 00000000..d94d7277 --- /dev/null +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/ServerAdditionAction.java @@ -0,0 +1,34 @@ +package com.gluster.storage.management.gui.actions; + +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.IWorkbenchWindowActionDelegate; + +import com.gluster.storage.management.gui.dialogs.ChangePasswordDialog; +import com.gluster.storage.management.gui.dialogs.ServerAdditionDialog; + +public class ServerAdditionAction extends AbstractActionDelegate { + + @Override + public void dispose() { + // TODO Auto-generated method stub + + } + + @Override + protected void performAction(IAction action) { + + try { + // To open a dialog for server addition + ServerAdditionDialog dialog = new ServerAdditionDialog(getShell()); + dialog.open(); + } catch (Exception e) { + e.printStackTrace(); + } + + } + + + +} diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/InitializeDiskTypeSelection.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/InitializeDiskTypeSelection.java index bb700de5..5fce27e4 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/InitializeDiskTypeSelection.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/InitializeDiskTypeSelection.java @@ -56,7 +56,7 @@ public class InitializeDiskTypeSelection extends Dialog { protected void configureShell(Shell newShell) { super.configureShell(newShell); - newShell.setText("Gluster Management Console - Select Cluster"); + newShell.setText("Gluster Management Console - Select FS Type"); addEscapeListener(newShell); } diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ServerAdditionDialog.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ServerAdditionDialog.java new file mode 100644 index 00000000..ca9a0058 --- /dev/null +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/ServerAdditionDialog.java @@ -0,0 +1,199 @@ +/** + * ServerAdditionDialog.java + * + * Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com> + * This file is part of Gluster Management Console. + * + * Gluster Management Console is free software; you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License as published + * by the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * Gluster Management Console is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License + * for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see + * <http://www.gnu.org/licenses/>. + */ +package com.gluster.storage.management.gui.dialogs; + +import org.eclipse.core.databinding.DataBindingContext; +import org.eclipse.core.databinding.UpdateValueStrategy; +import org.eclipse.core.databinding.beans.PojoProperties; +import org.eclipse.core.databinding.validation.ValidationStatus; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.jface.databinding.swt.SWTObservables; +import org.eclipse.jface.databinding.swt.WidgetProperties; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogConstants; +import org.eclipse.jface.dialogs.MessageDialog; +import org.eclipse.jface.fieldassist.ControlDecoration; +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.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Button; +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 com.gluster.storage.management.client.GlusterServersClient; +import com.gluster.storage.management.client.UsersClient; +import com.gluster.storage.management.core.constants.CoreConstants; +import com.gluster.storage.management.core.model.ConnectionDetails; +import com.gluster.storage.management.core.model.Server; +import com.gluster.storage.management.gui.IImageKeys; +import com.gluster.storage.management.gui.utils.GUIHelper; +import com.gluster.storage.management.gui.validators.StringRequiredValidator; + +public class ServerAdditionDialog extends Dialog { + public static final int RETURN_CODE_ERROR = 2; + private Text serverName; + private Button addButton; + + private final GUIHelper guiHelper = GUIHelper.getInstance(); + private Composite composite; + + public ServerAdditionDialog(Shell shell) { + super(shell); + } + + @Override + protected void configureShell(Shell newShell) { + super.configureShell(newShell); + + newShell.setText("Gluster Management Console - Add Server"); + addEscapeListener(newShell); + } + + private void addEscapeListener(Shell shell) { + shell.addTraverseListener(new TraverseListener() { + + @Override + public void keyTraversed(TraverseEvent e) { + if (e.keyCode == SWT.ESC) { + cancelPressed(); + } + } + }); + } + + /** + * Overriding to make sure that the dialog is centered in screen + */ + @Override + protected void initializeBounds() { + super.initializeBounds(); + + guiHelper.centerShellInScreen(getShell()); + } + + private void configureDialogLayout(Composite composite) { + GridLayout layout = (GridLayout) composite.getLayout(); + layout.numColumns = 2; + layout.marginLeft = 20; + layout.marginRight = 20; + layout.marginTop = 20; + layout.horizontalSpacing = 20; + layout.verticalSpacing = 20; + } + + // ------------------------------------------ + + private void createLabel(Composite composite, String label) { + Label passwordLabel = new Label(composite, SWT.NONE); + passwordLabel.setText(label); + passwordLabel.setLayoutData(new GridData(GridData.END, GridData.CENTER, false, false)); + } + + private Text createServerNameText(Composite composite) { + Text field = new Text(composite, SWT.BORDER ); + GridData layoutData = new GridData(SWT.FILL, GridData.FILL, true, false); + layoutData.widthHint = convertWidthInCharsToPixels(32); + field.setLayoutData(layoutData); + return field; + } + + @Override + protected Control createDialogArea(Composite parent) { +// parent.setBackgroundImage(guiHelper.getImage(IImageKeys.DIALOG_SPLASH_IMAGE)); + parent.setBackgroundMode(SWT.INHERIT_FORCE); + + composite = (Composite) super.createDialogArea(parent); + configureDialogLayout(composite); + + createLabel(composite, "Server Name:"); + serverName = createServerNameText(composite); + + createListeners(); + + return composite; + } + + private void createListeners() { + ModifyListener listener = new ModifyListener() { + + @Override + public void modifyText(ModifyEvent e) { + updateButtonStatus(); + } + }; + + serverName.addModifyListener(listener); + } + + private void updateButtonStatus() { + if(serverName.getText().isEmpty()) { + addButton.setEnabled(false); + return; + } + + addButton.setEnabled(true); + } + + @Override + protected void createButtonsForButtonBar(Composite parent) { + addButton = createButton(parent, IDialogConstants.OK_ID, "&Add Server", true); + addButton.setEnabled(false); + createButton(parent, IDialogConstants.CANCEL_ID, IDialogConstants.CANCEL_LABEL, false); + + setupDataBinding(); + } + + private void setupDataBinding() { + DataBindingContext dataBindingContext = new DataBindingContext(SWTObservables.getRealm(Display.getCurrent())); + UpdateValueStrategy serverNameBindingStrategy = new UpdateValueStrategy(UpdateValueStrategy.POLICY_UPDATE); + + // The Validator shows error decoration and disables OK button on + // validation failure + serverNameBindingStrategy.setBeforeSetValidator(new StringRequiredValidator("Please enter server name!", + guiHelper.createErrorDecoration(serverName), null)); + + dataBindingContext.bindValue(WidgetProperties.text(SWT.Modify).observe(serverName), + PojoProperties.value("serverName").observe(serverName.getText()), serverNameBindingStrategy, + serverNameBindingStrategy); + + } + + protected void okPressed() { + GlusterServersClient serversClient = new GlusterServersClient(); + try { + serversClient.addServer(serverName.getText()); + + MessageDialog.openInformation(getShell(), "Add Server", "Server added successfully!"); + } catch (Exception e) { + MessageDialog.openError(getShell(), "Server addition Failed", e.getMessage()); + setReturnCode(RETURN_CODE_ERROR); + } + this.close(); + } +} diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java index a59a027d..1c63e1c3 100644 --- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java +++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/views/pages/AbstractDisksPage.java @@ -42,6 +42,8 @@ import org.eclipse.ui.forms.widgets.ImageHyperlink; import com.gluster.storage.management.client.GlusterDataModelManager; import com.gluster.storage.management.client.GlusterServersClient; import com.gluster.storage.management.client.TasksClient; +import com.gluster.storage.management.core.model.ClusterListener; +import com.gluster.storage.management.core.model.DefaultClusterListener; import com.gluster.storage.management.core.model.Device; import com.gluster.storage.management.core.model.Device.DEVICE_STATUS; import com.gluster.storage.management.core.model.Disk; @@ -71,6 +73,10 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk Application.getApplication().addEntityListener(this); } + protected ClusterListener createClusterListener() { + return new DefaultClusterListener(); + } + private void createInitializeLink(final TreeItem item, final int rowNum, final Device uninitializedDevice) { final Tree tree = treeViewer.getTree(); final TreeEditor editor = new TreeEditor(tree); @@ -232,9 +238,9 @@ public abstract class AbstractDisksPage extends AbstractTableTreeViewerPage<Disk GlusterDataModelManager.getInstance().getModel().getCluster().addTaskInfo(taskInfo); } - if (taskInfo.getStatus().getCode() != Status.STATUS_CODE_RUNNING) { + if (taskInfo.getStatus().getCode() == Status.STATUS_CODE_RUNNING) { updateStatus(DEVICE_STATUS.INITIALIZING, true); - } else if(taskInfo.getStatus().getCode() != Status.STATUS_CODE_SUCCESS) { + } else if(taskInfo.getStatus().getCode() == Status.STATUS_CODE_SUCCESS) { updateStatus(DEVICE_STATUS.INITIALIZED, true); } diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java index b455a255..0fa49dc3 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/TasksResource.java @@ -122,8 +122,8 @@ public class TasksResource extends AbstractResource { private Task checkTaskStatus(String taskId) { Task task = getTask(taskId); // No status check required if the task already complete or failure - if (task.getTaskInfo().getStatus() == Status.STATUS_FAILURE - || task.getTaskInfo().getStatus() == Status.STATUS_SUCCESS) { + if (task.getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_FAILURE + || task.getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_SUCCESS) { return task; } task.getTaskInfo().setStatus(task.checkStatus()); diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java index 6aa63e9e..4f168d66 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/InitializeDiskTask.java @@ -53,6 +53,7 @@ public class InitializeDiskTask extends Task { setServerName(serverName); setDiskName(diskName); setFsType(fsType); + taskInfo.setName(getId()); init(); } |
