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 /src/com.gluster.storage.management.client | |
| parent | f82c3a6b43aca0c2502e0241dd6508b05d179b10 (diff) | |
| parent | bcef8a077f87b760fd04be847676e7ab9000f6f3 (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.java | 34 |
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) { |
