summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/Cluster.java19
-rw-r--r--src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java3
-rw-r--r--src/com.gluster.storage.management.gui/plugin.xml10
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddBrickAction.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java)8
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java17
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateBrickAction.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java)6
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveBrickAction.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/RemoveDiskAction.java)2
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskPage.java)4
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskWizard.java)8
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java)19
-rw-r--r--src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java (renamed from src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskWizard.java)8
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/VolumesResource.java4
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java (renamed from src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java)123
-rw-r--r--src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/utils/GlusterUtil.java32
14 files changed, 113 insertions, 150 deletions
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 56b52659..4f6c317c 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
@@ -95,12 +95,8 @@ public class Cluster extends Entity {
}
public void updateVolume(String volumeName, List<Brick> bricks) {
- for (Volume volume : volumes) {
- if (volume.getName().equals(volumeName)) {
- volume.setBricks(bricks);
- return;
- }
- }
+ Volume volume = getVolume(volumeName);
+ volume.setBricks(bricks);
}
public Cluster(String name, Entity parent) {
@@ -165,4 +161,13 @@ public class Cluster extends Entity {
}
return null;
}
-} \ No newline at end of file
+
+ public Volume getVolume(String volumeName) {
+ for (Volume volume : getVolumes() ) {
+ if (volume.getName().equals(volumeName)) {
+ return volume;
+ }
+ }
+ return null;
+ }
+}
diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java
index 0ab27c35..ba1c4f9f 100644
--- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java
+++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/response/TaskInfoListResponse.java
@@ -20,6 +20,7 @@
*/
package com.gluster.storage.management.core.response;
+import java.util.ArrayList;
import java.util.List;
import javax.xml.bind.annotation.XmlElement;
@@ -29,7 +30,7 @@ import com.gluster.storage.management.core.model.TaskInfo;
@XmlRootElement(name = "tasks")
public class TaskInfoListResponse {
- private List<TaskInfo> taskInfoList;
+ private List<TaskInfo> taskInfoList = new ArrayList<TaskInfo>();
public TaskInfoListResponse() {
diff --git a/src/com.gluster.storage.management.gui/plugin.xml b/src/com.gluster.storage.management.gui/plugin.xml
index 5b18421f..b0dfa9a9 100644
--- a/src/com.gluster.storage.management.gui/plugin.xml
+++ b/src/com.gluster.storage.management.gui/plugin.xml
@@ -476,7 +476,7 @@
visible="false">
<action
allowLabelUpdate="false"
- class="com.gluster.storage.management.gui.actions.MigrateDiskAction"
+ class="com.gluster.storage.management.gui.actions.MigrateBrickAction"
definitionId="com.gluster.storage.management.gui.commands.MigrateDisk"
icon="icons/disk-migrate.png"
id="com.gluster.storage.management.gui.actions.MigrateDiskAction"
@@ -593,7 +593,7 @@
</action>
<action
allowLabelUpdate="false"
- class="com.gluster.storage.management.gui.actions.RemoveDiskAction"
+ class="com.gluster.storage.management.gui.actions.RemoveBrickAction"
definitionId="com.gluster.storage.management.gui.commands.RemoveDisk"
icon="icons/disk.png"
id="com.gluster.storage.management.gui.actions.RemoveDiskAction"
@@ -609,7 +609,7 @@
</action>
<action
allowLabelUpdate="false"
- class="com.gluster.storage.management.gui.actions.AddDiskAction"
+ class="com.gluster.storage.management.gui.actions.AddBrickAction"
definitionId="com.gluster.storage.management.gui.commands.AddDisk"
icon="icons/disk.png"
id="com.gluster.storage.management.gui.actions.AddDiskAction"
@@ -659,7 +659,7 @@
definitionId="com.gluster.storage.management.gui.commands.Commit"
icon="icons/stop.png"
id="com.gluster.storage.management.gui.actions.Commit"
- label="&amp;Commit TaskTask"
+ label="&amp;Commit Task"
menubarPath="com.gluster.storage.management.gui.menu.cluster/cluster"
mode="FORCE_TEXT"
pulldown="false"
@@ -1206,7 +1206,7 @@
objectClass="com.gluster.storage.management.core.model.Volume">
<action
allowLabelUpdate="false"
- class="com.gluster.storage.management.gui.actions.MigrateDiskAction"
+ class="com.gluster.storage.management.gui.actions.MigrateBrickAction"
definitionId="com.gluster.storage.management.gui.commands.MigrateDisk"
enablesFor="1"
icon="icons/disk-migrate.png"
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddBrickAction.java
index be2cacee..e86164ec 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddDiskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/AddBrickAction.java
@@ -1,5 +1,5 @@
/**
- * AddDiskAction.java
+ * AddBrickAction.java
*
* Copyright (c) 2011 Gluster, Inc. <http://www.gluster.com>
* This file is part of Gluster Management Console.
@@ -27,9 +27,9 @@ import org.eclipse.jface.wizard.WizardDialog;
import com.gluster.storage.management.client.GlusterDataModelManager;
import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.gui.dialogs.AddDiskWizard;
+import com.gluster.storage.management.gui.dialogs.AddBrickWizard;
-public class AddDiskAction extends AbstractActionDelegate {
+public class AddBrickAction extends AbstractActionDelegate {
private Volume volume;
private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
@@ -43,7 +43,7 @@ public class AddDiskAction extends AbstractActionDelegate {
// TODO: open a dialog box
// MessageDialog.openInformation(getShell(), "Action captured", action.getDescription() + "\n" +
// volume.getName());
- AddDiskWizard wizard = new AddDiskWizard(volume); // Also add single page
+ AddBrickWizard wizard = new AddBrickWizard(volume); // Also add single page
WizardDialog dialog = new WizardDialog(getShell(), wizard);
dialog.create();
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
index d353898c..86e3032e 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/CommitTaskAction.java
@@ -22,9 +22,10 @@ public class CommitTaskAction extends AbstractActionDelegate {
new TasksClient().commitTask(taskInfo.getName());
taskInfo.setStatus(new TaskStatus(new Status(Status.STATUS_CODE_SUCCESS, "Committed")));
modelManager.removeTask(taskInfo);
- Volume volume = (new VolumesClient()).getVolume( taskInfo.getReference());
- modelManager.updateVolumeBricks(getVolume(taskInfo.getReference()), volume.getBricks());
-
+ Volume volume = (new VolumesClient()).getVolume(taskInfo.getReference());
+ modelManager.updateVolumeBricks(modelManager.getModel().getCluster().getVolume(taskInfo.getReference()),
+ volume.getBricks());
+
showInfoDialog(actionDesc, "Commit successful");
} catch (Exception e) {
showErrorDialog(actionDesc,
@@ -47,14 +48,4 @@ public class CommitTaskAction extends AbstractActionDelegate {
public void dispose() {
}
-
- private Volume getVolume(String volumeName) {
- for (Volume volume : modelManager.getModel().getCluster().getVolumes() ) {
- if (volume.getName().equals(volumeName)) {
- return volume;
- }
- }
- return null;
- }
-
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateBrickAction.java
index 2512a188..41770d98 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateDiskAction.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/actions/MigrateBrickAction.java
@@ -26,16 +26,16 @@ import org.eclipse.jface.wizard.WizardDialog;
import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.Volume;
-import com.gluster.storage.management.gui.dialogs.MigrateDiskWizard;
+import com.gluster.storage.management.gui.dialogs.MigrateBrickWizard;
import com.gluster.storage.management.gui.utils.GUIHelper;
-public class MigrateDiskAction extends AbstractActionDelegate {
+public class MigrateBrickAction extends AbstractActionDelegate {
private Volume volume;
private Brick brick;
@Override
protected void performAction(IAction action) {
- MigrateDiskWizard wizard = new MigrateDiskWizard(volume, brick);
+ MigrateBrickWizard wizard = new MigrateBrickWizard(volume, brick);
WizardDialog dialog = new WizardDialog(window.getShell(), wizard);
dialog.create();
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/RemoveBrickAction.java
index d4c5a54a..0f411a59 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/RemoveBrickAction.java
@@ -20,7 +20,7 @@ import com.gluster.storage.management.gui.IImageKeys;
import com.gluster.storage.management.gui.utils.GUIHelper;
import com.gluster.storage.management.gui.views.VolumeBricksView;
-public class RemoveDiskAction extends AbstractActionDelegate {
+public class RemoveBrickAction extends AbstractActionDelegate {
private GlusterDataModelManager modelManager = GlusterDataModelManager.getInstance();
private GUIHelper guiHelper = GUIHelper.getInstance();
private Set<Brick> bricks;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskPage.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
index 48a46c84..961dca88 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskPage.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickPage.java
@@ -39,7 +39,7 @@ import com.richclientgui.toolbox.duallists.IRemovableContentProvider;
* @author root
*
*/
-public class AddDiskPage extends WizardPage {
+public class AddBrickPage extends WizardPage {
private List<Disk> availableDisks = new ArrayList<Disk>();
private List<Disk> selectedDisks = new ArrayList<Disk>();
private Volume volume = null;
@@ -51,7 +51,7 @@ public class AddDiskPage extends WizardPage {
/**
* @param pageName
*/
- protected AddDiskPage(Volume volume) {
+ protected AddBrickPage(Volume volume) {
super(PAGE_NAME);
this.volume = volume;
setTitle("Add Brick");
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskWizard.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java
index bb55ece1..bcb3ce3d 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddDiskWizard.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/AddBrickWizard.java
@@ -38,18 +38,18 @@ import com.gluster.storage.management.core.utils.StringUtil;
/**
*
*/
-public class AddDiskWizard extends Wizard {
- private AddDiskPage page;
+public class AddBrickWizard extends Wizard {
+ private AddBrickPage page;
private Volume volume;
- public AddDiskWizard(Volume volume) {
+ public AddBrickWizard(Volume volume) {
setWindowTitle("Gluster Management Console - Add Brick");
setHelpAvailable(false); // TODO: Introduce wizard help
this.volume = volume;
}
public void addPages() {
- page = new AddDiskPage(volume);
+ page = new AddBrickPage(volume);
addPage(page);
}
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
index 4533ca23..f7ce744f 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskPage1.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickPage1.java
@@ -1,21 +1,24 @@
-/*******************************************************************************
+/**
+ * MigrateBrickPage1.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
+ * 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,
+ *
+ * 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 java.util.List;
@@ -48,7 +51,7 @@ import com.gluster.storage.management.core.utils.NumberUtil;
import com.gluster.storage.management.gui.TableLabelProviderAdapter;
import com.gluster.storage.management.gui.utils.GUIHelper;
-public class MigrateDiskPage1 extends WizardPage {
+public class MigrateBrickPage1 extends WizardPage {
private static final String PAGE_NAME = "migrate.disk.page.1";
private enum DISK_TABLE_COLUMN_INDICES {
@@ -118,7 +121,7 @@ public class MigrateDiskPage1 extends WizardPage {
/**
* Create the wizard.
*/
- public MigrateDiskPage1(Volume volume, Brick brick) {
+ public MigrateBrickPage1(Volume volume, Brick brick) {
super(PAGE_NAME);
this.volume = volume;
this.fromBrick = brick;
diff --git a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskWizard.java b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java
index 2d65a869..4693726b 100644
--- a/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateDiskWizard.java
+++ b/src/com.gluster.storage.management.gui/src/com/gluster/storage/management/gui/dialogs/MigrateBrickWizard.java
@@ -30,12 +30,12 @@ import com.gluster.storage.management.core.model.Brick;
import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.Volume;
-public class MigrateDiskWizard extends Wizard {
+public class MigrateBrickWizard extends Wizard {
private Volume volume;
private Brick brick;
- private MigrateDiskPage1 page;
+ private MigrateBrickPage1 page;
- public MigrateDiskWizard(Volume volume, Brick brick) {
+ public MigrateBrickWizard(Volume volume, Brick brick) {
setWindowTitle("Gluster Management Console - Migrate Brick [" + volume.getName() + "]");
this.volume = volume;
this.brick = brick;
@@ -44,7 +44,7 @@ public class MigrateDiskWizard extends Wizard {
@Override
public void addPages() {
- page = new MigrateDiskPage1(volume, brick);
+ page = new MigrateBrickPage1(volume, brick);
addPage(page);
}
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 4318945c..6260142a 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
@@ -102,7 +102,7 @@ import com.gluster.storage.management.core.utils.ProcessUtil;
import com.gluster.storage.management.server.constants.VolumeOptionsDefaults;
import com.gluster.storage.management.server.data.ClusterInfo;
import com.gluster.storage.management.server.services.ClusterService;
-import com.gluster.storage.management.server.tasks.MigrateDiskTask;
+import com.gluster.storage.management.server.tasks.MigrateBrickTask;
import com.gluster.storage.management.server.tasks.RebalanceVolumeTask;
import com.gluster.storage.management.server.utils.GlusterUtil;
import com.gluster.storage.management.server.utils.ServerUtil;
@@ -956,7 +956,7 @@ public class VolumesResource extends AbstractResource {
private String migrateBrickStart(String clusterName, String volumeName, String fromBrick, String toBrick,
Boolean autoCommit) {
- MigrateDiskTask migrateDiskTask = new MigrateDiskTask(clusterService, clusterName, volumeName, fromBrick,
+ MigrateBrickTask migrateDiskTask = new MigrateBrickTask(clusterService, clusterName, volumeName, fromBrick,
toBrick);
migrateDiskTask.setAutoCommit(autoCommit);
migrateDiskTask.start();
diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java
index 88de96da..3961c427 100644
--- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateDiskTask.java
+++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/tasks/MigrateBrickTask.java
@@ -20,6 +20,10 @@
*/
package com.gluster.storage.management.server.tasks;
+import java.util.concurrent.ExecutionException;
+
+import org.apache.derby.iapi.sql.execute.ExecPreparedStatement;
+
import com.gluster.storage.management.core.exceptions.ConnectionException;
import com.gluster.storage.management.core.exceptions.GlusterRuntimeException;
import com.gluster.storage.management.core.model.Status;
@@ -28,14 +32,16 @@ import com.gluster.storage.management.core.model.TaskInfo.TASK_TYPE;
import com.gluster.storage.management.core.model.TaskStatus;
import com.gluster.storage.management.core.utils.ProcessResult;
import com.gluster.storage.management.server.services.ClusterService;
+import com.gluster.storage.management.server.utils.GlusterUtil;
import com.gluster.storage.management.server.utils.SshUtil;
import com.sun.jersey.core.util.Base64;
-public class MigrateDiskTask extends Task {
+public class MigrateBrickTask extends Task {
private String fromBrick;
private String toBrick;
private Boolean autoCommit;
+ private GlusterUtil glusterUtil = new GlusterUtil();
private SshUtil sshUtil = new SshUtil();
@@ -63,7 +69,8 @@ public class MigrateDiskTask extends Task {
this.autoCommit = autoCommit;
}
- public MigrateDiskTask(ClusterService clusterService, String clusterName, String volumeName, String fromBrick, String toBrick) {
+ public MigrateBrickTask(ClusterService clusterService, String clusterName, String volumeName, String fromBrick,
+ String toBrick) {
super(clusterService, clusterName, TASK_TYPE.BRICK_MIGRATE, volumeName, "Brick Migration on volume ["
+ volumeName + "] from [" + fromBrick + "] to [" + toBrick + "]", true, true, true);
setFromBrick(fromBrick);
@@ -71,80 +78,68 @@ public class MigrateDiskTask extends Task {
taskInfo.setName(getId());
}
- public MigrateDiskTask(ClusterService clusterService, String clusterName, TaskInfo info) {
+ public MigrateBrickTask(ClusterService clusterService, String clusterName, TaskInfo info) {
super(clusterService, clusterName, info);
}
@Override
public String getId() {
- return new String( Base64.encode( taskInfo.getType() + "-" + taskInfo.getReference() + "-" + fromBrick + "-" + toBrick ));
+ return new String(Base64.encode(clusterName + "-" + taskInfo.getType() + "-" + taskInfo.getReference() + "-" + fromBrick + "-"
+ + toBrick));
}
@Override
public void start() {
try {
startMigration(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
startMigration(getNewOnlineServer().getName());
}
}
private void startMigration(String onlineServerName) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " "
- + getToBrick() + " start";
- ProcessResult processResult = sshUtil.executeRemote(onlineServerName, command);
- if (processResult.isSuccess()) {
- if (processResult.getOutput().trim().matches(".*started successfully$")) {
- getTaskInfo().setStatus(new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, processResult.getOutput().trim())));
- return;
- }
+ ProcessResult processResult = glusterUtil.executeBrickMigration(onlineServerName, getTaskInfo().getReference(),
+ getFromBrick(), getToBrick(), "start");
+ if (processResult.getOutput().trim().matches(".*started successfully$")) {
+ getTaskInfo().setStatus(
+ new TaskStatus(new Status(Status.STATUS_CODE_RUNNING, processResult.getOutput().trim())));
+ return;
}
-
- // if we come here, it means task couldn't be started successfully.
- throw new GlusterRuntimeException(processResult.toString());
}
@Override
public void pause() {
try {
pauseMigration(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
pauseMigration(getNewOnlineServer().getName());
}
}
private void pauseMigration(String onlineServer) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " " + getToBrick()
- + " pause";
-
- ProcessResult processResult = sshUtil.executeRemote(onlineServer, command);
+ ProcessResult processResult = glusterUtil.executeBrickMigration(onlineServer, taskInfo.getReference(),
+ getFromBrick(), getToBrick(), "pause");
TaskStatus taskStatus = new TaskStatus();
- if (processResult.isSuccess()) {
- if (processResult.getOutput().trim().matches(".*paused successfully$")) { //TODO replace correct pattern to identify the pause status
- taskStatus.setCode(Status.STATUS_CODE_PAUSE);
- taskStatus.setMessage(processResult.getOutput());
- getTaskInfo().setStatus(taskStatus);
- return;
- }
- }
-
- // if we reach here, it means rebalance start failed.
- throw new GlusterRuntimeException(processResult.toString());
+ if (processResult.getOutput().trim().matches(".*paused successfully$")) {
+ taskStatus.setCode(Status.STATUS_CODE_PAUSE);
+ taskStatus.setMessage(processResult.getOutput());
+ getTaskInfo().setStatus(taskStatus);
+ return;
+ }
}
-
-
+
@Override
public void resume() {
start();
}
-
+
@Override
public void commit() {
try {
commitMigration(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
commitMigration(getNewOnlineServer().getName());
}
@@ -154,75 +149,55 @@ public class MigrateDiskTask extends Task {
public void stop() {
try {
stopMigration(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
stopMigration(getNewOnlineServer().getName());
}
}
private void stopMigration(String serverName) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " " + getToBrick()
- + " abort";
-
- ProcessResult processResult = sshUtil.executeRemote(serverName, command);
+ ProcessResult processResult = glusterUtil.executeBrickMigration(serverName, taskInfo.getReference(), getFromBrick(),
+ getToBrick(), "abort");
TaskStatus taskStatus = new TaskStatus();
- if (processResult.isSuccess()) {
- if (processResult.getOutput().trim().matches(".*aborted successfully$")) {
- taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
- taskStatus.setMessage(processResult.getOutput());
- getTaskInfo().setStatus(taskStatus);
- return;
- }
+ if (processResult.getOutput().trim().matches(".*aborted successfully$")) {
+ taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
+ taskStatus.setMessage(processResult.getOutput());
+ getTaskInfo().setStatus(taskStatus);
}
-
- // if we reach here, it means rebalance start failed.
- throw new GlusterRuntimeException(processResult.toString());
}
-
@Override
public TaskStatus checkStatus() {
try {
return checkMigrationStatus(getOnlineServer().getName());
- } catch(ConnectionException e) {
+ } catch (ConnectionException e) {
// online server might have gone offline. try with a new one.
return checkMigrationStatus(getNewOnlineServer().getName());
}
}
-
-
+
public void commitMigration(String serverName) {
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " "
- + getToBrick() + " commit";
-
- ProcessResult processResult = sshUtil.executeRemote(serverName, command);
+ ProcessResult processResult = glusterUtil.executeBrickMigration(serverName, getTaskInfo().getReference(),
+ getFromBrick(), getToBrick(), "commit");
TaskStatus taskStatus = new TaskStatus();
if (processResult.isSuccess()) {
if (processResult.getOutput().trim().matches(".*commit successful$")) {
taskStatus.setCode(Status.STATUS_CODE_SUCCESS);
taskStatus.setMessage(processResult.getOutput()); // Common
getTaskInfo().setStatus(taskStatus);
- return;
}
}
-
- // if we reach here, it means rebalance start failed.
- throw new GlusterRuntimeException(processResult.toString());
}
-
private TaskStatus checkMigrationStatus(String serverName) {
- // TODO: If the task is already paused return the same status till FS gives correct status
- if (getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_PAUSE ) {
+ if (getTaskInfo().getStatus().getCode() == Status.STATUS_CODE_PAUSE) {
return getTaskInfo().getStatus();
}
-
- String command = "gluster volume replace-brick " + getTaskInfo().getReference() + " " + getFromBrick() + " "
- + getToBrick() + " status";
- ProcessResult processResult = sshUtil.executeRemote(serverName, command);
TaskStatus taskStatus = new TaskStatus();
- if (processResult.isSuccess()) {
+ try {
+ ProcessResult processResult = glusterUtil.executeBrickMigration(serverName, getTaskInfo().getReference(),
+ getFromBrick(), getToBrick(), "status");
if (processResult.getOutput().trim().matches("^Number of files migrated.*Migration complete$")) {
taskStatus.setCode(Status.STATUS_CODE_COMMIT_PENDING);
if (autoCommit) {
@@ -232,16 +207,16 @@ public class MigrateDiskTask extends Task {
taskStatus.setMessage(processResult.getOutput().trim()
.replaceAll("Migration complete", "Commit pending"));
}
- return taskStatus;
} else if (processResult.getOutput().trim().matches("^Number of files migrated.*Current file=.*")) {
taskStatus.setCode(Status.STATUS_CODE_RUNNING);
} else {
taskStatus.setCode(Status.STATUS_CODE_FAILURE);
}
- } else {
+ taskStatus.setMessage(processResult.getOutput());
+ } catch (Exception e) {
taskStatus.setCode(Status.STATUS_CODE_FAILURE);
+ taskStatus.setMessage(e.getMessage());
}
- taskStatus.setMessage(processResult.getOutput()); // common
taskInfo.setStatus(taskStatus); // Update the task status
return taskStatus;
}
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 1dc5eb1a..f4eac91d 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
@@ -36,7 +36,6 @@ import com.gluster.storage.management.core.model.Brick.BRICK_STATUS;
import com.gluster.storage.management.core.model.GlusterServer;
import com.gluster.storage.management.core.model.GlusterServer.SERVER_STATUS;
import com.gluster.storage.management.core.model.Status;
-import com.gluster.storage.management.core.model.TaskInfo;
import com.gluster.storage.management.core.model.TaskStatus;
import com.gluster.storage.management.core.model.Volume;
import com.gluster.storage.management.core.model.Volume.TRANSPORT_TYPE;
@@ -46,8 +45,6 @@ import com.gluster.storage.management.core.utils.GlusterCoreUtil;
import com.gluster.storage.management.core.utils.ProcessResult;
import com.gluster.storage.management.core.utils.StringUtil;
import com.gluster.storage.management.server.resources.TasksResource;
-import com.gluster.storage.management.server.tasks.MigrateDiskTask;
-import com.gluster.storage.management.server.tasks.RebalanceVolumeTask;
import com.sun.jersey.api.core.InjectParam;
@Component
@@ -391,26 +388,7 @@ public class GlusterUtil {
}
private void addBrickToVolume(Volume volume, String serverName, String brickDir) {
- // TODO: Brick status should be same as the server status (online/offline)
- System.out.println(brickDir);
volume.addBrick(new Brick(serverName, BRICK_STATUS.ONLINE, brickDir.split("/")[2].trim(), brickDir));
-
- // volume.getBricks().get(0).getName();
- //
- // try {
- // volume.addDisk(serverName + ":" + brickDir.split("/")[2].trim());
- // } catch (ArrayIndexOutOfBoundsException e) {
- // // brick directory of a different form, most probably created manually
- // // connect to the server and get disk for the brick directory
- // Status status = new ServerUtil().getDiskForDir(serverName, brickDir);
- // if (status.isSuccess()) {
- // volume.addDisk(serverName + ":" + status.getMessage());
- // } else {
- // // Couldn't fetch disk for the brick directory. Log error and add "unknown" as disk name.
- // System.out.println("Couldn't fetch disk name for brick [" + serverName + ":" + brickDir + "]");
- // volume.addDisk(serverName + ":unknown");
- // }
- // }
}
private boolean readBrickGroup(String line) {
@@ -601,6 +579,16 @@ public class GlusterUtil {
taskStatus.setMessage(processResult.getOutput());
return taskStatus;
}
+
+ public ProcessResult executeBrickMigration(String onlineServerName, String volumeName, String fromBrick,
+ String toBrick, String operation) {
+ String command = "gluster volume replace-brick " + volumeName + " " + fromBrick + " " + toBrick + " " + operation;
+ ProcessResult processResult = sshUtil.executeRemote(onlineServerName, command);
+ if (!processResult.isSuccess()) {
+ throw new GlusterRuntimeException(processResult.toString());
+ }
+ return processResult;
+ }
public static void main(String args[]) {
// List<String> names = new GlusterUtil().getGlusterServerNames();