Alissa Bonas has uploaded a new change for review.

Change subject: core: removed limitation of get topSizeVms query
......................................................................

core: removed limitation of get topSizeVms query

Use a new query to display vms(with disks and snapshots) in Storage main
tab-VMs sub tab. Removed the previously used query
GetTopSizeVmsFromStorageDomain.
Also, clean unused usages of the old query in REST and UI and added test
for the new query.

Change-Id: Ia44f746a9321282fa99c7a11de92e720e3e0c610
Signed-off-by: Alissa Bonas <[email protected]>
---
M backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetTopSizeVmsFromStorageDomainQuery.java
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsByStorageDomainQuery.java
A 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/GetVmsByStorageDomainQueryTest.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/VdcQueryType.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStorageDomainContentsResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainTemplatesResource.java
M 
backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResource.java
M 
backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResourceTest.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageVmListModel.java
10 files changed, 156 insertions(+), 81 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/58/14558/1

diff --git a/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql 
b/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql
index 61a8b46..a8ac641 100644
--- a/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql
+++ b/backend/manager/dbscripts/upgrade/pre_upgrade/0000_config.sql
@@ -324,7 +324,6 @@
 select fn_db_add_config_value('NonVmNetworkSupported','true','3.3');
 select fn_db_add_config_value('NumberOfFailedRunsOnVds','3','general');
 select fn_db_add_config_value('NumberOfUSBSlots','4','general');
-select fn_db_add_config_value('NumberOfVmsForTopSizeVms','10','general');
 select fn_db_add_config_value('NumberVmRefreshesBeforeSave','5','general');
 select fn_db_add_config_value('SupportBridgesReportByVDSM','false','3.0');
 select fn_db_add_config_value('SupportBridgesReportByVDSM','false','3.1');
@@ -744,6 +743,7 @@
 select fn_db_delete_config_value('LiveStorageMigrationEnabled','3.1');
 select fn_db_delete_config_value('LiveStorageMigrationEnabled','3.2');
 select fn_db_delete_config_value('DiskConfigurationList','general');
+select fn_db_delete_config_value('NumberOfVmsForTopSizeVms','general');
 
------------------------------------------------------------------------------------
 --                  Split config section
 -- The purpose of this section is to treat config option that was once
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetTopSizeVmsFromStorageDomainQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetTopSizeVmsFromStorageDomainQuery.java
deleted file mode 100644
index a662f79..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetTopSizeVmsFromStorageDomainQuery.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package org.ovirt.engine.core.bll;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.ovirt.engine.core.common.businessentities.VM;
-import 
org.ovirt.engine.core.common.businessentities.comparators.DiskImageByDiskAliasComparator;
-import 
org.ovirt.engine.core.common.businessentities.comparators.VmsComparerByDiskSize;
-import org.ovirt.engine.core.common.config.Config;
-import org.ovirt.engine.core.common.config.ConfigValues;
-import 
org.ovirt.engine.core.common.queries.StorageDomainQueryTopSizeVmsParameters;
-import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-
-public class GetTopSizeVmsFromStorageDomainQuery<P extends 
StorageDomainQueryTopSizeVmsParameters>
-extends QueriesCommandBase<P> {
-    public GetTopSizeVmsFromStorageDomainQuery(P parameters) {
-        super(parameters);
-    }
-
-    @Override
-    protected void executeQueryCommand() {
-        List<VM> vms = 
DbFacade.getInstance().getVmDao().getAllForStorageDomain(
-                getParameters().getStorageDomainId());
-        for (VM vm : vms) {
-            VmHandler.updateDisksFromDb(vm);
-            Collections.sort(vm.getDiskList(), new 
DiskImageByDiskAliasComparator());
-            ImagesHandler.fillImagesBySnapshots(vm);
-        }
-        Collections.sort(vms, Collections.reverseOrder(new 
VmsComparerByDiskSize()));
-
-        /*
-         * BZ#700327 requires that we return a maximum entries according to 
the following logic:
-         * According to given parameter we are asked to
-         * (-1): means return all available entries.
-         * 0: means use whatever we have defined in the DB (vdc_options)
-         * otherwise: use the limitation we got in the parameter.
-         */
-
-        int maxEntriesToReturn = getParameters().getMaxVmsToReturn();
-        switch (maxEntriesToReturn) {
-        case -1:
-            maxEntriesToReturn = vms.size();
-            break;
-        case 0:
-            maxEntriesToReturn = Math.min(vms.size(), Config.<Integer> 
GetValue(ConfigValues.NumberOfVmsForTopSizeVms));
-            break;
-        default:
-            maxEntriesToReturn = Math.min(vms.size(), maxEntriesToReturn);
-            break;
-        }
-
-        getQueryReturnValue().setReturnValue(vms.subList(0, 
maxEntriesToReturn));
-    }
-}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsByStorageDomainQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsByStorageDomainQuery.java
new file mode 100644
index 0000000..b759d64
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/GetVmsByStorageDomainQuery.java
@@ -0,0 +1,73 @@
+package org.ovirt.engine.core.bll.storage;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.ovirt.engine.core.bll.Backend;
+import org.ovirt.engine.core.bll.QueriesCommandBase;
+import org.ovirt.engine.core.common.businessentities.DiskImage;
+import org.ovirt.engine.core.common.businessentities.VM;
+import 
org.ovirt.engine.core.common.businessentities.comparators.VmsComparerByDiskSize;
+import org.ovirt.engine.core.common.queries.StorageDomainQueryParametersBase;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.common.queries.VdcQueryType;
+import org.ovirt.engine.core.compat.Guid;
+
+public class GetVmsByStorageDomainQuery<P extends 
StorageDomainQueryParametersBase>
+        extends QueriesCommandBase<P> {
+    public GetVmsByStorageDomainQuery(P parameters) {
+        super(parameters);
+    }
+
+    @Override
+    protected void executeQueryCommand() {
+        Guid domainId = getParameters().getStorageDomainId();
+        List<DiskImage> disksOfDomain = new ArrayList();
+
+        List<VM> vms = getAllVMsForStorageDomain(domainId);
+
+        // get all disks and snapshots
+        VdcQueryReturnValue queryReturnValue = 
getAllDisksByStorageDomain(domainId);
+        if (queryReturnValue.getSucceeded()) {
+            disksOfDomain = (List<DiskImage>) 
queryReturnValue.getReturnValue();
+        }
+
+        Map<String, VM> vmNameToVMMap = new HashMap();
+
+        for (VM vm : vms) {
+            vmNameToVMMap.put(vm.getName(), vm);
+        }
+
+        for (DiskImage disk : disksOfDomain) {
+            List<String> vmNames = disk.getVmNames();
+            if (vmNames == null) {
+                continue;
+            }
+            for (String vmName : vmNames) {
+                VM vm = vmNameToVMMap.get(vmName);
+                if (vm != null) {
+                    vm.getDiskMap().put(disk.getId(), disk);
+                    vm.getDiskList().add(disk);
+                }
+            }
+
+        }
+
+        Collections.sort(vms, Collections.reverseOrder(new 
VmsComparerByDiskSize()));
+
+        getQueryReturnValue().setReturnValue(vms);
+    }
+
+    protected VdcQueryReturnValue getAllDisksByStorageDomain(Guid domainId) {
+        return 
Backend.getInstance().RunQuery(VdcQueryType.GetAllDisksByStorageDomainId,
+                new StorageDomainQueryParametersBase(domainId));
+    }
+
+    protected List<VM> getAllVMsForStorageDomain(Guid domainId) {
+        return getDbFacade().getVmDao().getAllForStorageDomain(domainId);
+    }
+
+}
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/GetVmsByStorageDomainQueryTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/GetVmsByStorageDomainQueryTest.java
new file mode 100644
index 0000000..64669b2
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/storage/GetVmsByStorageDomainQueryTest.java
@@ -0,0 +1,77 @@
+package org.ovirt.engine.core.bll.storage;
+
+import static junit.framework.Assert.assertEquals;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.ovirt.engine.core.bll.AbstractQueryTest;
+import org.ovirt.engine.core.common.businessentities.DiskImage;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.queries.StorageDomainQueryParametersBase;
+import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.dao.VmDAO;
+
+public class GetVmsByStorageDomainQueryTest extends 
AbstractQueryTest<StorageDomainQueryParametersBase, 
GetVmsByStorageDomainQuery<StorageDomainQueryParametersBase>> {
+    VmDAO vmDao = mock(VmDAO.class);
+    Guid domainId = Guid.NewGuid();
+    GetVmsByStorageDomainQuery<StorageDomainQueryParametersBase> query;
+
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        params = getQueryParameters();
+        when(getDbFacadeMockInstance().getVmDao()).thenReturn(vmDao);
+        when(params.getStorageDomainId()).thenReturn(domainId);
+        query = getQuery();
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testExecuteQueryCommandNoDisks() {
+        List<VM> vmsOfDomain = new ArrayList();
+        VM vm1 = mock(VM.class);
+        VM vm2 = mock(VM.class);
+        vmsOfDomain.add(vm1);
+        vmsOfDomain.add(vm2);
+
+        when(vmDao.getAllForStorageDomain(domainId)).thenReturn(vmsOfDomain);
+
+        VdcQueryReturnValue returnValue = new VdcQueryReturnValue();
+        returnValue.setSucceeded(true);
+        List<DiskImage> diskImages = new ArrayList<>();
+        returnValue.setReturnValue(diskImages);
+
+        doReturn(returnValue).when(query).getAllDisksByStorageDomain(domainId);
+        query.executeQueryCommand();
+
+        List<VM> vms = (List<VM>) query.getQueryReturnValue().getReturnValue();
+        assertEquals(2,vms.size());
+    }
+
+    @Test
+    @SuppressWarnings("unchecked")
+    public void testExecuteQueryCommandNoVms() {
+        List<VM> vmsOfDomain = new ArrayList();
+
+        when(vmDao.getAllForStorageDomain(domainId)).thenReturn(vmsOfDomain);
+
+        VdcQueryReturnValue returnValue = new VdcQueryReturnValue();
+        returnValue.setSucceeded(true);
+        List<DiskImage> diskImages = new ArrayList<>();
+        returnValue.setReturnValue(diskImages);
+
+        doReturn(returnValue).when(query).getAllDisksByStorageDomain(domainId);
+        query.executeQueryCommand();
+
+        List<VM> vms = (List<VM>) query.getQueryReturnValue().getReturnValue();
+        assertEquals(0,vms.size());
+    }
+
+}
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 609a89a..3a17076 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,7 +9,7 @@
     GetVmByVmNameForDataCenter(VdcQueryAuthType.User),
     GetAllVms(VdcQueryAuthType.User),
     GetVmsRunningOnOrMigratingToVds,
-    GetTopSizeVmsFromStorageDomain,
+    GetVmsByStorageDomain,
     GetVmCustomProperties(VdcQueryAuthType.User),
     GetVmConfigurationBySnapshot(VdcQueryAuthType.User),
     GetVmsByDiskGuid,
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStorageDomainContentsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStorageDomainContentsResource.java
index d733f7d..7ee022d 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStorageDomainContentsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/AbstractBackendStorageDomainContentsResource.java
@@ -103,6 +103,5 @@
         return collection;
     }
 
-    protected abstract Collection<Q> getEntitiesFromDataDomain();
     protected abstract Collection<Q> getEntitiesFromExportDomain();
 }
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainTemplatesResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainTemplatesResource.java
index 34e296a..ae59c67 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainTemplatesResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainTemplatesResource.java
@@ -15,7 +15,6 @@
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import org.ovirt.engine.core.common.queries.DiskImageList;
 import 
org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters;
-import org.ovirt.engine.core.common.queries.StorageDomainQueryParametersBase;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 
@@ -38,12 +37,6 @@
     protected Template addParents(Template template) {
         template.setStorageDomain(getStorageDomainModel());
         return template;
-    }
-
-    @Override
-    protected Collection<VmTemplate> getEntitiesFromDataDomain() {
-        return 
getBackendCollection(VdcQueryType.GetVmTemplatesFromStorageDomain,
-                                    new 
StorageDomainQueryParametersBase(storageDomainId));
     }
 
     @SuppressWarnings("unchecked")
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResource.java
 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResource.java
index 4cf1c60..bbce689 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResource.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResource.java
@@ -11,7 +11,6 @@
 import org.ovirt.engine.core.common.action.RemoveVmFromImportExportParamenters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import 
org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters;
-import 
org.ovirt.engine.core.common.queries.StorageDomainQueryTopSizeVmsParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 
@@ -34,12 +33,6 @@
     protected VM addParents(VM vm) {
         vm.setStorageDomain(getStorageDomainModel());
         return vm;
-    }
-
-    @Override
-    protected Collection<org.ovirt.engine.core.common.businessentities.VM> 
getEntitiesFromDataDomain() {
-        return 
getBackendCollection(VdcQueryType.GetTopSizeVmsFromStorageDomain,
-                                    new 
StorageDomainQueryTopSizeVmsParameters(storageDomainId, -1));
     }
 
     @Override
diff --git 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResourceTest.java
 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResourceTest.java
index d298fa4..bed1cbc 100644
--- 
a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResourceTest.java
+++ 
b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendStorageDomainVmsResourceTest.java
@@ -107,12 +107,6 @@
 
         switch (domainType) {
         case Data:
-            
setUpEntityQueryExpectations(VdcQueryType.GetTopSizeVmsFromStorageDomain,
-                                         
StorageDomainQueryTopSizeVmsParameters.class,
-                                         new String[] { "StorageDomainId", 
"MaxVmsToReturn" },
-                                         new Object[] { STORAGE_DOMAIN_ID, -1 
},
-                                         setUpVms(),
-                                         failure);
             break;
         case ImportExport:
             setUpEntityQueryExpectations(VdcQueryType.GetVmsFromExportDomain,
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageVmListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageVmListModel.java
index 03c8d30..2158ba3 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageVmListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/storage/StorageVmListModel.java
@@ -2,7 +2,7 @@
 
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
-import 
org.ovirt.engine.core.common.queries.StorageDomainQueryTopSizeVmsParameters;
+import org.ovirt.engine.core.common.queries.StorageDomainQueryParametersBase;
 import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
@@ -86,10 +86,10 @@
             }
         };
 
-        StorageDomainQueryTopSizeVmsParameters tempVar =
-                new 
StorageDomainQueryTopSizeVmsParameters(getEntity().getId(), 0);
+        StorageDomainQueryParametersBase tempVar =
+                new StorageDomainQueryParametersBase(getEntity().getId());
         tempVar.setRefresh(getIsQueryFirstTime());
-        Frontend.RunQuery(VdcQueryType.GetTopSizeVmsFromStorageDomain, 
tempVar, _asyncQuery);
+        Frontend.RunQuery(VdcQueryType.GetVmsByStorageDomain, tempVar, 
_asyncQuery);
     }
 
     @Override


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

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

Reply via email to