Libor Spevak has uploaded a new change for review.

Change subject: webadmin: Show migrating VM on destination host
......................................................................

webadmin: Show migrating VM on destination host

Show a migrating VM both on the source host (status Migrating From)
as well as on the destination host (Migrating To).

Change-Id: Iae8228e4a6e9e7e91b8224f0ef2764c5e4e25cfa
Bug-Url: https://bugzilla.redhat.com/881593
Signed-off-by: Libor Spevak <[email protected]>
---
M backend/manager/dbscripts/vms_sp.sql
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsRunningOnOrMigratingToVdsQuery.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmsRunningOnOrMigratingToVdsQueryTest.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsRunningOnOrMigratingToVdsParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java
M 
frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java
10 files changed, 176 insertions(+), 6 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/12878/1

diff --git a/backend/manager/dbscripts/vms_sp.sql 
b/backend/manager/dbscripts/vms_sp.sql
index 0d7773c..6a22360 100644
--- a/backend/manager/dbscripts/vms_sp.sql
+++ b/backend/manager/dbscripts/vms_sp.sql
@@ -826,6 +826,22 @@
 
 
 
+Create or replace FUNCTION GetVmsRunningOnOrMigratingToVds(v_vds_id UUID) 
RETURNS SETOF vms
+   AS $procedure$
+BEGIN
+    -- use migrating_to_vds column when the VM in status Migrating From
+    RETURN QUERY SELECT DISTINCT * FROM VMS V
+    WHERE V.RUN_ON_VDS=V_VDS_ID OR (V.STATUS = 5 AND 
V.MIGRATING_TO_VDS=V_VDS_ID)
+    ORDER BY V.VM_NAME
+    LIMIT 100;
+END; $procedure$
+LANGUAGE plpgsql;
+
+
+
+
+
+
 Create or replace FUNCTION GetVmsDynamicRunningOnVds(v_vds_id UUID) RETURNS 
SETOF vm_dynamic
    AS $procedure$
 BEGIN
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsRunningOnOrMigratingToVdsQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsRunningOnOrMigratingToVdsQuery.java
new file mode 100644
index 0000000..6bf1b5e
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmsRunningOnOrMigratingToVdsQuery.java
@@ -0,0 +1,16 @@
+package org.ovirt.engine.core.bll;
+
+import 
org.ovirt.engine.core.common.queries.GetVmsRunningOnOrMigratingToVdsParameters;
+
+public class GetVmsRunningOnOrMigratingToVdsQuery <P extends 
GetVmsRunningOnOrMigratingToVdsParameters> extends QueriesCommandBase<P> {
+    public GetVmsRunningOnOrMigratingToVdsQuery(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        getQueryReturnValue().setReturnValue(
+                
getDbFacade().getVmDao().getAllRunningOnOrMigratingToVds(getParameters().getId()));
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmsRunningOnOrMigratingToVdsQueryTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmsRunningOnOrMigratingToVdsQueryTest.java
new file mode 100644
index 0000000..8c6f244
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/GetVmsRunningOnOrMigratingToVdsQueryTest.java
@@ -0,0 +1,44 @@
+package org.ovirt.engine.core.bll;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.Collections;
+import java.util.List;
+
+import org.junit.Test;
+import org.ovirt.engine.core.common.businessentities.VM;
+import 
org.ovirt.engine.core.common.queries.GetVmsRunningOnOrMigratingToVdsParameters;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.VmDAO;
+
+/**
+ * A test case for {@link GetVmsRunningOnOrMigratingToVdsQuery}. This test 
mocks away all the DAOs, and just tests the
+ * flow of the query itself.
+ */
+public class GetVmsRunningOnOrMigratingToVdsQueryTest
+        extends AbstractQueryTest<GetVmsRunningOnOrMigratingToVdsParameters,
+                
GetVmsRunningOnOrMigratingToVdsQuery<GetVmsRunningOnOrMigratingToVdsParameters>>
 {
+
+    @Test
+    public void testQueryExecution() {
+        Guid vmGuid = Guid.NewGuid();
+
+        VM vm = new VM();
+        vm.setId(vmGuid);
+
+        List<VM> expected = Collections.singletonList(vm);
+        VmDAO vmDAOMock = mock(VmDAO.class);
+        
when(vmDAOMock.getAllRunningOnOrMigratingToVds(vmGuid)).thenReturn(expected);
+        when(getDbFacadeMockInstance().getVmDao()).thenReturn(vmDAOMock);
+        // Set up the query parameters
+        when(getQueryParameters().getId()).thenReturn(vmGuid);
+
+        getQuery().executeQueryCommand();
+
+        @SuppressWarnings("unchecked")
+        List<VM> actual = (List<VM>) 
getQuery().getQueryReturnValue().getReturnValue();
+        assertEquals("Wrong number of VMs", 1, actual.size());
+    }
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsRunningOnOrMigratingToVdsParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsRunningOnOrMigratingToVdsParameters.java
new file mode 100644
index 0000000..ed2f117
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetVmsRunningOnOrMigratingToVdsParameters.java
@@ -0,0 +1,26 @@
+package org.ovirt.engine.core.common.queries;
+
+import org.ovirt.engine.core.compat.Guid;
+
+public class GetVmsRunningOnOrMigratingToVdsParameters extends 
VdcQueryParametersBase {
+
+    private static final long serialVersionUID = 5129010056629518621L;
+
+    private Guid id;
+
+    public GetVmsRunningOnOrMigratingToVdsParameters() {
+    }
+
+    public GetVmsRunningOnOrMigratingToVdsParameters(Guid id) {
+        this.id = id;
+    }
+
+    public Guid getId() {
+        return id;
+    }
+
+    public void setId(Guid id) {
+        this.id = id;
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
index 5b879fd..b399e4f 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
@@ -9,6 +9,7 @@
     GetAllVms(VdcQueryAuthType.User),
     GetVmsRunningOnVDS,
     GetVmsRunningOnVDSCount,
+    GetVmsRunningOnOrMigratingToVds,
     GetTopSizeVmsFromStorageDomain,
     GetVmCustomProperties(VdcQueryAuthType.User),
     GetVmConfigurationBySnapshot(VdcQueryAuthType.User),
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
index e7318e0..422fcb7 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAO.java
@@ -108,6 +108,15 @@
     List<VM> getAllRunningForVds(Guid vds);
 
     /**
+     * Gets the list of virtual machines running on or migrating to the 
specified VDS instance.
+     *
+     * @param vds
+     *            the VDS id
+     * @return the list of VMs
+     */
+    List<VM> getAllRunningOnOrMigratingToVds(Guid vds);
+
+    /**
      * Returns the list of virtual machines running on the specified VDS 
instance.
      *
      * @param vds
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
index ba29bcc..0bc799e 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/VmDAODbFacadeImpl.java
@@ -123,6 +123,14 @@
     }
 
     @Override
+    public List<VM> getAllRunningOnOrMigratingToVds(Guid id) {
+        return 
getCallsHandler().executeReadList("GetVmsRunningOnOrMigratingToVds",
+                VMRowMapper.instance,
+                getCustomMapSqlParameterSource()
+                        .addValue("vds_id", id));
+    }
+
+    @Override
     public Map<Guid, VM> getAllRunningByVds(Guid id) {
         HashMap<Guid, VM> map = new HashMap<Guid, VM>();
 
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index 0ad85c2..f503525 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -84,6 +84,7 @@
 import org.ovirt.engine.core.common.queries.GetVmTemplateParameters;
 import 
org.ovirt.engine.core.common.queries.GetVmTemplatesByStoragePoolIdParameters;
 import org.ovirt.engine.core.common.queries.GetVmTemplatesDisksParameters;
+import 
org.ovirt.engine.core.common.queries.GetVmsRunningOnOrMigratingToVdsParameters;
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.InterfaceAndIdQueryParameters;
 import 
org.ovirt.engine.core.common.queries.IsVmPoolWithSameNameExistsParameters;
@@ -1920,6 +1921,21 @@
         Frontend.RunQuery(VdcQueryType.GetAllVmSnapshotsByVmId, new 
GetAllVmSnapshotsByVmIdParameters(id), aQuery);
     }
 
+    public static void GetVmsRunningOnOrMigratingToVds(AsyncQuery aQuery, Guid 
id) {
+        aQuery.converterCallback = new IAsyncConverter() {
+            @Override
+            public Object Convert(Object source, AsyncQuery _asyncQuery)
+            {
+                ArrayList<VM> vms = (ArrayList<VM>) source;
+                return vms;
+            }
+        };
+
+        Frontend.RunQuery(VdcQueryType.GetVmsRunningOnOrMigratingToVds,
+                new GetVmsRunningOnOrMigratingToVdsParameters(id),
+                aQuery);
+    }
+
     public static void GetVmDiskList(AsyncQuery aQuery, Guid id) {
         aQuery.converterCallback = new IAsyncConverter() {
             @Override
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java
index 57038af..4dd5f43 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostVmListModel.java
@@ -1,13 +1,17 @@
 package org.ovirt.engine.ui.uicommonweb.models.hosts;
 
+import java.util.ArrayList;
+
 import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.ui.frontend.AsyncQuery;
+import org.ovirt.engine.ui.frontend.INewAsyncCallback;
+import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider;
 import org.ovirt.engine.ui.uicommonweb.models.vms.VmListModel;
 import org.ovirt.engine.ui.uicompat.PropertyChangedEventArgs;
 
-@SuppressWarnings("unused")
 public class HostVmListModel extends VmListModel
 {
-
     @Override
     public VDS getEntity()
     {
@@ -20,19 +24,43 @@
     }
 
     @Override
+    protected void AsyncSearch()
+    {
+        Search();
+    }
+
+    @Override
+    protected void SyncSearch()
+    {
+        Search();
+    }
+
+    @Override
     protected void OnEntityChanged()
     {
         super.OnEntityChanged();
-        getSearchCommand().Execute();
+        Search();
     }
 
     @Override
     public void Search()
     {
+        // Override standard search query mechanism.
+        // Dduring the migration, the host should be visible on source host 
(Migrating From), and also
+        // on destination host (Migrating To)
         if (getEntity() != null)
         {
-            setSearchString("Vms: host.name=" + getEntity().getName()); 
//$NON-NLS-1$
-            super.Search();
+            AsyncDataProvider.GetVmsRunningOnOrMigratingToVds(new 
AsyncQuery(this, new INewAsyncCallback() {
+                @Override
+                public void OnSuccess(Object target, Object returnValue) {
+                    @SuppressWarnings("unchecked")
+                    ArrayList<VM> list = (ArrayList<VM>) returnValue;
+                    HostVmListModel model = (HostVmListModel) target;
+                    model.setItems(list);
+                }
+            }), getEntity().getId());
+        } else {
+            setItems(new ArrayList<VM>());
         }
     }
 
@@ -43,7 +71,7 @@
 
         if (e.PropertyName.equals("vds_name")) //$NON-NLS-1$
         {
-            getSearchCommand().Execute();
+            Search();
         }
     }
 }
diff --git 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java
 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java
index a57d966..9b5e729 100644
--- 
a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java
+++ 
b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/section/main/view/tab/host/SubTabHostVmView.java
@@ -99,6 +99,12 @@
         TextColumnWithTooltip<VM> statusColumn = new EnumColumn<VM, 
VMStatus>() {
             @Override
             protected VMStatus getRawValue(VM object) {
+                // check, if the current host is a target for the migration, 
then override status
+                final VDS vds = getDetailModel().getEntity();
+                if (object.getStatus().equals(VMStatus.MigratingFrom) && 
vds.getId().equals(object.getmigrating_to_vds())) {
+                    return VMStatus.MigratingTo;
+                }
+
                 return object.getStatus();
             }
         };


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iae8228e4a6e9e7e91b8224f0ef2764c5e4e25cfa
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Libor Spevak <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to