diff options
| author | Selvasundaram <selvam@gluster.com> | 2011-07-07 15:56:22 +0530 |
|---|---|---|
| committer | Selvasundaram <selvam@gluster.com> | 2011-07-07 15:56:22 +0530 |
| commit | 9862c8c2da1414b4e70fa788e2ab53db1775b525 (patch) | |
| tree | 55185d7a536f9e273db81b15d187582f9df27dfa | |
| parent | f82c3a6b43aca0c2502e0241dd6508b05d179b10 (diff) | |
| parent | bcef8a077f87b760fd04be847676e7ab9000f6f3 (diff) | |
Merge branch 'master' of github.com:gluster/console
7 files changed, 87 insertions, 22 deletions
diff --git a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java index d4242089..9ee4513c 100644 --- a/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java +++ b/src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java @@ -19,6 +19,7 @@ package com.gluster.storage.management.client; import java.util.ArrayList; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -119,14 +120,43 @@ public class GlusterDataModelManager { } logger.info("Starting data sync"); - updateModel(fetchData(clusterName)); - syncInProgress = false; + try { + updateModel(fetchData(clusterName)); + } catch(Exception e) { + logger.error("Error in data sync!", e); + } finally { + syncInProgress = false; + } } + private void updateModel(GlusterDataModel model) { updateVolumes(model); updateGlusterServers(model); updateDiscoveredServers(model); + updateTasks(model); + } + + private void updateTasks(GlusterDataModel newModel) { + List<TaskInfo> oldTasks = model.getCluster().getTaskInfoList(); + List<TaskInfo> newTasks = newModel.getCluster().getTaskInfoList(); + + Set<TaskInfo> addedTasks = GlusterCoreUtil.getAddedEntities(oldTasks, newTasks, true); + for(TaskInfo task : addedTasks) { + addTask(task); + } + + Set<TaskInfo> removedTasks = GlusterCoreUtil.getAddedEntities(newTasks, oldTasks, true); + for(TaskInfo task : removedTasks) { + removeTask(task); + } + + Map<TaskInfo, TaskInfo> modifiedTasks = GlusterCoreUtil.getModifiedEntities(oldTasks, newTasks); + for(Entry<TaskInfo, TaskInfo> entry : modifiedTasks.entrySet()) { + TaskInfo modifiedTask = entry.getKey(); + modifiedTask.copyFrom(entry.getValue()); + updateTask(modifiedTask); + } } private void updateDiscoveredServers(GlusterDataModel newModel) { diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/GlusterConstants.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/GlusterConstants.java index f48f33cf..567eda61 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/GlusterConstants.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/constants/GlusterConstants.java @@ -31,4 +31,7 @@ public class GlusterConstants { }; public static final List<String> VOLUME_LOG_LEVELS_ARR = StringUtil.enumToArray(VOLUME_LOG_LEVELS.values()); + public static final String FSTYPE_EXT_3 = "ext3"; + public static final String FSTYPE_EXT_4 = "ext4"; + public static final String FSTYPE_XFS = "xfs"; } diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/InitDiskStatusResponse.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/InitDiskStatusResponse.java index 1a448606..6d1e83e3 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/InitDiskStatusResponse.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/InitDiskStatusResponse.java @@ -20,19 +20,21 @@ *******************************************************************************/ package com.gluster.storage.management.core.model; +import javax.xml.bind.annotation.XmlRootElement; -public class InitDiskStatusResponse extends Status { +@XmlRootElement +public class InitDiskStatusResponse { public enum FORMAT_STATUS { IN_PROGRESS, COMPLETED, NOT_RUNNING }; - private String[] FORMAT_STATUS_STR = { "Inprogress", "Completed", "Notrunning" }; + private String[] FORMAT_STATUS_STR = { "In Progress", "Completed", "Not Running" }; private String device; private String message; - private float total; - private float completed; + private float totalBlocks; + private float completedBlocks; private FORMAT_STATUS status; public InitDiskStatusResponse() { @@ -55,20 +57,21 @@ public class InitDiskStatusResponse extends Status { this.message = message; } - public void setTotal(float total) { - this.total = total; + + public void setTotalBlocks(float totalBlocks) { + this.totalBlocks = totalBlocks; } - public float getTotal() { - return total; + public float getTotalBlocks() { + return totalBlocks; } - public void setCompleted(float completed) { - this.completed = completed; + public void setCompletedBlocks(float completedBlocks) { + this.completedBlocks = completedBlocks; } - public float getCompleted() { - return completed; + public float getCompletedBlocks() { + return completedBlocks; } public String getStatusStr() { diff --git a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java index d3267ec4..43299863 100644 --- a/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java +++ b/src/com.gluster.storage.management.core/src/com/gluster/storage/management/core/model/TaskInfo.java @@ -110,4 +110,31 @@ public class TaskInfo extends Entity { public boolean filter(String filterString, boolean caseSensitive) { return StringUtil.filterString(getDescription() + getStatus().getMessage(), filterString, caseSensitive); } + + public void copyFrom(TaskInfo newTask) { + setName(newTask.getName()); + setDescription(newTask.getDescription()); + setReference(newTask.getReference()); + setStatus(newTask.getStatus()); + setType(newTask.getType()); + setPauseSupported(newTask.getPauseSupported()); + setStopSupported(newTask.getStopSupported()); + } + + @Override + public boolean equals(Object obj) { + if(!(obj instanceof TaskInfo)) { + return false; + } + + TaskInfo newTask = (TaskInfo)obj; + if (newTask.getName().equals(getName()) && newTask.getDescription().equals(getDescription()) + && newTask.getReference().equals(getReference()) && newTask.getStatus().equals(getStatus()) + && newTask.getType() == getType() && newTask.getPauseSupported() == getPauseSupported() + && newTask.getStopSupported() == getStopSupported()) { + return true; + } + + return false; + } } 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 e6145997..63cf65ed 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 @@ -40,6 +40,7 @@ import org.eclipse.ui.forms.events.HyperlinkEvent; import org.eclipse.ui.forms.widgets.ImageHyperlink; import com.gluster.storage.management.client.GlusterServersClient; +import com.gluster.storage.management.core.constants.GlusterConstants; import com.gluster.storage.management.core.model.ClusterListener; import com.gluster.storage.management.core.model.DefaultClusterListener; import com.gluster.storage.management.core.model.Disk; @@ -204,7 +205,7 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im public void linkActivated(HyperlinkEvent e) { Integer formatOption = new MessageDialog(getShell(), "Initialize Disk", GUIHelper.getInstance().getImage( IImageKeys.DISK), "Please choose the file system to Initialize the disk?", MessageDialog.QUESTION, new String[] { - "Cancel", "Ext3", "Ext4", "Xfs" }, -1).open(); + "Cancel", GlusterConstants.FSTYPE_EXT_3, GlusterConstants.FSTYPE_EXT_4, GlusterConstants.FSTYPE_XFS }, -1).open(); if (formatOption <= 0) { // By Cancel button(0) or Escape key(-1) return; @@ -212,18 +213,18 @@ public abstract class AbstractDisksPage extends AbstractTableViewerPage<Disk> im String fsType = null; if (formatOption == 1) { - fsType = "ext3"; + fsType = GlusterConstants.FSTYPE_EXT_3; } else if (formatOption == 2) { - fsType = "ext4"; + fsType = GlusterConstants.FSTYPE_EXT_4; } else if (formatOption == 3) { - fsType = "xfs"; + fsType = GlusterConstants.FSTYPE_XFS; } - updateStatus(DISK_STATUS.INITIALIZING, true); - GlusterServersClient serversClient = new GlusterServersClient(); serversClient.initializeDisk(disk.getServerName(), disk.getName(), fsType); + updateStatus(DISK_STATUS.INITIALIZING, true); + guiHelper.showProgressView(); new InitializeDiskJob(disk).schedule(); } diff --git a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java index 1430d24f..b97d47f8 100644 --- a/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java +++ b/src/com.gluster.storage.management.server/src/com/gluster/storage/management/server/resources/v1_0/GlusterServersResource.java @@ -417,7 +417,7 @@ public class GlusterServersResource extends AbstractServersResource { } if (fsType == null || fsType.isEmpty()) { - return badRequestResponse("FSType must not be empty!"); + return badRequestResponse("Parameter [" + FORM_PARAM_FSTYPE + "] is missing in request!"); } InitializeDiskTask initializeTask = new InitializeDiskTask(clusterService, clusterName, serverName, diskName, fsType); 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 31e02cd4..e052685c 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 @@ -595,7 +595,8 @@ public class GlusterUtil { taskStatus.setCode(Status.STATUS_CODE_SUCCESS); } else if (initDiskStatusResponse.getStatus() == FORMAT_STATUS.IN_PROGRESS) { taskStatus.setCode(Status.STATUS_CODE_RUNNING); - taskStatus.setPercentCompleted(initDiskStatusResponse.getCompleted() / initDiskStatusResponse.getTotal() * 100); + taskStatus.setPercentCompleted(Math.round(initDiskStatusResponse.getCompletedBlocks() + / initDiskStatusResponse.getTotalBlocks() * 100)); } taskStatus.setMessage(initDiskStatusResponse.getMessage()); |
