Shubhendu Tripathi has uploaded a new change for review.

Change subject: gluster: Update task status while querying rebalance status
......................................................................

gluster: Update task status while querying rebalance status

Modified to update the task status in engine DB everytime a rebalance
status query is fired. This makes sure the details in the DB are
up-to-date with query status.

Change-Id: I375c0156fe60bd9473889abce51ad93366bc9d40
Signed-off-by: Shubhendu Tripathi <shtri...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQuery.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQueryTest.java
2 files changed, 40 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/69/21069/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQuery.java
index 9452285..cc82a36 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQuery.java
@@ -2,6 +2,9 @@
 
 import java.util.List;
 
+import org.ovirt.engine.core.bll.gluster.tasks.GlusterTaskUtils;
+import org.ovirt.engine.core.bll.job.JobRepository;
+import org.ovirt.engine.core.bll.job.JobRepositoryFactory;
 import org.ovirt.engine.core.common.asynctasks.gluster.GlusterAsyncTask;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.gluster.GlusterServer;
@@ -15,8 +18,11 @@
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
 import 
org.ovirt.engine.core.common.vdscommands.gluster.GlusterVolumeVDSParameters;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dao.StepDao;
+import org.ovirt.engine.core.dao.VdsGroupDAO;
 import org.ovirt.engine.core.dao.gluster.GlusterServerDao;
+import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
 
 public class GetGlusterVolumeRebalanceStatusQuery<P extends 
GlusterVolumeQueriesParameters> extends GlusterQueriesCommandBase<P> {
 
@@ -60,6 +66,16 @@
                 if (stepsList != null && !stepsList.isEmpty()) {
                     entity.setStartTime(stepsList.get(0).getStartTime());
                 }
+
+                // Update the latest status details for task steps.
+                // This is required to make sure the engine details are 
up-to-date
+                asyncTask.setStatus(entity.getStatusSummary().getStatus());
+                
getGlusterTaskUtils().updateSteps(getClusterDao().get(clusterId), asyncTask, 
stepsList);
+
+                // release the volume lock if the task is completed
+                if (getGlusterTaskUtils().hasTaskCompleted(asyncTask)) {
+                    getGlusterTaskUtils().releaseLock(volume.getId());
+                }
             }
         }
 
@@ -89,4 +105,20 @@
     public GlusterServerDao getGlusterServerDao() {
         return getDbFacade().getGlusterServerDao();
     }
+
+    public JobRepository getJobRepository() {
+        return JobRepositoryFactory.getJobRepository();
+    }
+
+    public GlusterVolumeDao getVolumeDao() {
+        return getDbFacade().getGlusterVolumeDao();
+    }
+
+    public GlusterTaskUtils getGlusterTaskUtils() {
+        return GlusterTaskUtils.getInstance();
+    }
+
+    public VdsGroupDAO getClusterDao() {
+        return DbFacade.getInstance().getVdsGroupDao();
+    }
 }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQueryTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQueryTest.java
index f65b87d..21b6879 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQueryTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/gluster/GetGlusterVolumeRebalanceStatusQueryTest.java
@@ -17,6 +17,7 @@
 import org.junit.Before;
 import org.junit.Test;
 import org.ovirt.engine.core.bll.AbstractQueryTest;
+import org.ovirt.engine.core.bll.gluster.tasks.GlusterTaskUtils;
 import org.ovirt.engine.core.bll.utils.ClusterUtils;
 import org.ovirt.engine.core.common.asynctasks.gluster.GlusterAsyncTask;
 import org.ovirt.engine.core.common.asynctasks.gluster.GlusterTaskType;
@@ -38,6 +39,7 @@
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dao.StepDao;
 import org.ovirt.engine.core.dao.VdsDAO;
+import org.ovirt.engine.core.dao.VdsGroupDAO;
 import org.ovirt.engine.core.dao.gluster.GlusterServerDao;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
 
@@ -53,10 +55,12 @@
     private static final Guid SERVER_UUID_1 = Guid.newGuid();
     private GlusterVolumeTaskStatusEntity expectedVolumeStatusDetails;
     private VdsDAO vdsDao;
+    private VdsGroupDAO clusterDao;
     private GlusterVolumeDao volumeDao;
     private GlusterServerDao glusterServerDao;
     private StepDao stepDao;
     private ClusterUtils clusterUtils;
+    private GlusterTaskUtils taskUtils;
 
     @Before
     @Override
@@ -167,16 +171,20 @@
     private void setupMock() {
         clusterUtils = mock(ClusterUtils.class);
         vdsDao = mock(VdsDAO.class);
+        clusterDao = mock(VdsGroupDAO.class);
         volumeDao = mock(GlusterVolumeDao.class);
         glusterServerDao = mock(GlusterServerDao.class);
         stepDao = mock(StepDao.class);
+        taskUtils = mock(GlusterTaskUtils.class);
 
         doReturn(vdsDao).when(getQuery()).getVdsDao();
+        doReturn(clusterDao).when(getQuery()).getClusterDao();
         doReturn(volumeDao).when(getQuery()).getGlusterVolumeDao();
         doReturn(stepDao).when(getQuery()).getStepDao();
         doReturn(glusterServerDao).when(getQuery()).getGlusterServerDao();
         doReturn(CLUSTER_ID).when(getQueryParameters()).getClusterId();
         doReturn(VOLUME_ID).when(getQueryParameters()).getVolumeId();
+        doReturn(taskUtils).when(getQuery()).getGlusterTaskUtils();
         when(volumeDao.getById(VOLUME_ID)).thenReturn(getVolume());
         
when(stepDao.getStepsByExternalId(any(Guid.class))).thenReturn(getStepsList());
         when(vdsDao.get(any(Guid.class))).thenReturn(getVds(VDSStatus.Up));


-- 
To view, visit http://gerrit.ovirt.org/21069
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I375c0156fe60bd9473889abce51ad93366bc9d40
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shubhendu Tripathi <shtri...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to