summaryrefslogtreecommitdiffstats
path: root/src/com.gluster.storage.management.client
diff options
context:
space:
mode:
authorSelvasundaram <selvam@gluster.com>2011-07-07 15:56:22 +0530
committerSelvasundaram <selvam@gluster.com>2011-07-07 15:56:22 +0530
commit9862c8c2da1414b4e70fa788e2ab53db1775b525 (patch)
tree55185d7a536f9e273db81b15d187582f9df27dfa /src/com.gluster.storage.management.client
parentf82c3a6b43aca0c2502e0241dd6508b05d179b10 (diff)
parentbcef8a077f87b760fd04be847676e7ab9000f6f3 (diff)
Merge branch 'master' of github.com:gluster/console
Diffstat (limited to 'src/com.gluster.storage.management.client')
-rw-r--r--src/com.gluster.storage.management.client/src/com/gluster/storage/management/client/GlusterDataModelManager.java34
1 files changed, 32 insertions, 2 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) {