Michael Kublin has uploaded a new change for review.

Change subject: engine: Replacing search for vms by query
......................................................................

engine: Replacing search for vms by query

The following patch is replace a search for vms which are belongs to some 
cluster, by
query from DB.
The query is much more efficient than search , and easily for understanding.
The patch contains:
1. Introducing new query
2. Replace all searches by new query
3. Removed class HighAvailableVmsDirector (The following class also uses a 
search query, but
   the class is not used anywhere, that's why I remove it instead of replacing 
search query)

Change-Id: I12cee2c66aed35ed357f2ee739232d95fe9fa0c1
Signed-off-by: Michael Kublin <[email protected]>
---
M backend/manager/dbscripts/vms_sp.sql
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HighAvailableVmsDirector.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/FenceVdsBaseCommandTest.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommandTest.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.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 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBaseTest.java
M 
backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
12 files changed, 74 insertions(+), 157 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/11426/1

diff --git a/backend/manager/dbscripts/vms_sp.sql 
b/backend/manager/dbscripts/vms_sp.sql
index feb12b1..aad2594 100644
--- a/backend/manager/dbscripts/vms_sp.sql
+++ b/backend/manager/dbscripts/vms_sp.sql
@@ -1081,5 +1081,15 @@
 LANGUAGE plpgsql;
 
 
+Create or replace FUNCTION GetVmsByVdsGroupId(v_vdsGroupId UUID) RETURNS SETOF 
vms
+   AS $procedure$
+BEGIN
+      RETURN QUERY SELECT vms.*
+      FROM vms
+      WHERE vds_group_id = v_vdsGroupId;
+END; $procedure$
+LANGUAGE plpgsql;
+
+
 
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HighAvailableVmsDirector.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HighAvailableVmsDirector.java
deleted file mode 100644
index afa0453..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/HighAvailableVmsDirector.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.ovirt.engine.core.bll;
-
-import java.util.ArrayList;
-import java.util.Collections;
-
-import org.ovirt.engine.core.common.action.RunVmParams;
-import org.ovirt.engine.core.common.action.VdcActionType;
-import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
-import org.ovirt.engine.core.common.businessentities.VDS;
-import org.ovirt.engine.core.common.businessentities.VM;
-import org.ovirt.engine.core.common.businessentities.VmsComparer;
-import org.ovirt.engine.core.common.interfaces.SearchType;
-import org.ovirt.engine.core.common.queries.SearchParameters;
-import org.ovirt.engine.core.common.queries.VdcQueryType;
-import org.ovirt.engine.core.compat.Guid;
-import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-
-public final class HighAvailableVmsDirector {
-    public static void TryRunHighAvailableVmsOnVmDown(Guid vmId) {
-        VM vm = DbFacade.getInstance().getVmDao().get(vmId);
-        TryRunHighAvailableVm(vm.getVdsGroupName());
-    }
-
-    public static void TryRunHighAvailableVdsUp(Guid vdsId) {
-        VDS vds = DbFacade.getInstance().getVdsDao().get(vdsId);
-        TryRunHighAvailableVm(vds.getvds_group_name());
-    }
-
-    private static void TryRunHighAvailableVm(String vdsGroupName) {
-        String searchStatement = String.format("Vms: status=down and cluster 
=%1$s", vdsGroupName);
-        SearchParameters p = new SearchParameters(searchStatement, 
SearchType.VM);
-        p.setMaxCount(Integer.MAX_VALUE);
-        ArrayList<IVdcQueryable> vmsFromDb = (ArrayList<IVdcQueryable>) 
Backend.getInstance()
-                .runInternalQuery(VdcQueryType.Search, p).getReturnValue();
-        if (vmsFromDb != null && vmsFromDb.size() != 0) {
-            ArrayList<VM> highlyAvailableVms = new ArrayList<VM>();
-            for (IVdcQueryable vm : vmsFromDb) {
-                VM currVm = (VM) ((vm instanceof VM) ? vm : null);
-                if (currVm != null && currVm.isAutoStartup() && 
currVm.getExitStatus().getValue() != 0) {
-                    highlyAvailableVms.add(currVm);
-                }
-            }
-            Collections.sort(highlyAvailableVms, Collections.reverseOrder(new 
VmsComparer()));
-            for (VM vm : highlyAvailableVms) {
-                if 
(!Backend.getInstance().runInternalAction(VdcActionType.RunVm, new 
RunVmParams(vm.getVmtGuid()))
-                        .getSucceeded()) {
-                    break;
-                }
-
-            }
-        }
-    }
-}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
index bba3ac5..ecc1d95 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommand.java
@@ -24,9 +24,6 @@
 import org.ovirt.engine.core.common.businessentities.network.NetworkStatus;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
-import org.ovirt.engine.core.common.interfaces.SearchType;
-import org.ovirt.engine.core.common.queries.SearchParameters;
-import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.common.validation.group.UpdateEntity;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
@@ -204,14 +201,7 @@
                 }
             }
             if (result) {
-                SearchParameters searchParams = new SearchParameters("vms: 
cluster = "
-                        + oldGroup.getname(), SearchType.VM);
-                searchParams.setMaxCount(Integer.MAX_VALUE);
-
-                @SuppressWarnings("unchecked")
-                List<VM> vmList =
-                        (List<VM>) 
getBackend().runInternalQuery(VdcQueryType.Search, searchParams)
-                                .getReturnValue();
+                List<VM> vmList = 
getVmDAO().getAllForVdsGroup(oldGroup.getId());
                 boolean notDownVms = false;
                 boolean suspendedVms = false;
                 for (VM vm : vmList) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
index fbaf137..0a7e4cf 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/cluster/DetachNetworkToVdsGroupCommand.java
@@ -4,24 +4,17 @@
 import java.util.List;
 
 import org.apache.commons.lang.StringUtils;
-import org.ovirt.engine.core.bll.Backend;
 import org.ovirt.engine.core.bll.VdsGroupCommandBase;
 import org.ovirt.engine.core.bll.utils.PermissionSubject;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.VdcObjectType;
 import org.ovirt.engine.core.common.action.AttachNetworkToVdsGroupParameter;
-import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VmStatic;
 import org.ovirt.engine.core.common.businessentities.VmTemplate;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
-import org.ovirt.engine.core.common.interfaces.SearchType;
-import org.ovirt.engine.core.common.queries.SearchParameters;
-import org.ovirt.engine.core.common.queries.SearchReturnValue;
-import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
-import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogField;
@@ -74,23 +67,12 @@
         }
 
         // check if network in use by vm
-        String query = "Vms: cluster = " + getVdsGroup().getname();
-        SearchParameters searchParams = new SearchParameters(query, 
SearchType.VM);
-        searchParams.setMaxCount(Integer.MAX_VALUE);
-        VdcQueryReturnValue tempVar = 
Backend.getInstance().runInternalQuery(VdcQueryType.Search,
-                searchParams);
-        SearchReturnValue ret = (SearchReturnValue) ((tempVar instanceof 
SearchReturnValue) ? tempVar
-                : null);
-        if (ret != null && ret.getSucceeded()) {
-            @SuppressWarnings("unchecked")
-            List<IVdcQueryable> vmList = (List<IVdcQueryable>) 
ret.getReturnValue();
-            for (IVdcQueryable vm_helper : vmList) {
-                VM vm = (VM) vm_helper;
-                List<VmNetworkInterface> interfaces = 
getVmNetworkInterfaceDao().getAllForVm(vm.getId());
-                if (networkUsedByAnInterface(interfaces)) {
-                    
addCanDoActionMessage(VdcBllMessages.NETWORK_INTERFACE_IN_USE_BY_VM);
-                    return false;
-                }
+        List<VM> vmList = getVmDAO().getAllForVdsGroup(getVdsGroup().getId());
+        for (VM vm : vmList) {
+            List<VmNetworkInterface> interfaces = 
getVmNetworkInterfaceDao().getAllForVm(vm.getId());
+            if (networkUsedByAnInterface(interfaces)) {
+                
addCanDoActionMessage(VdcBllMessages.NETWORK_INTERFACE_IN_USE_BY_VM);
+                return false;
             }
         }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java
index ee75efb..0a3aae2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/network/host/RemoveBondCommand.java
@@ -7,7 +7,6 @@
 import org.ovirt.engine.core.bll.Backend;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.action.RemoveBondParameters;
-import org.ovirt.engine.core.common.businessentities.IVdcQueryable;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -16,11 +15,6 @@
 import 
org.ovirt.engine.core.common.businessentities.network.NetworkBootProtocol;
 import 
org.ovirt.engine.core.common.businessentities.network.VdsNetworkInterface;
 import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
-import org.ovirt.engine.core.common.interfaces.SearchType;
-import org.ovirt.engine.core.common.queries.SearchParameters;
-import org.ovirt.engine.core.common.queries.SearchReturnValue;
-import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
-import org.ovirt.engine.core.common.queries.VdcQueryType;
 import 
org.ovirt.engine.core.common.vdscommands.NetworkVdsmVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
@@ -140,32 +134,22 @@
         }
 
         // check if network in use by vm
-        String query = "Vms: cluster = " + vds.getvds_group_name();
-        SearchParameters searchParams = new SearchParameters(query, 
SearchType.VM);
-
-        searchParams.setMaxCount(Integer.MAX_VALUE);
-        VdcQueryReturnValue tempVar = 
Backend.getInstance().runInternalQuery(VdcQueryType.Search, searchParams);
-        SearchReturnValue ret = (SearchReturnValue) ((tempVar instanceof 
SearchReturnValue) ? tempVar : null);
-        if (ret != null && ret.getSucceeded()) {
-            @SuppressWarnings("unchecked")
-            Iterable<IVdcQueryable> vmList = (Iterable<IVdcQueryable>) 
ret.getReturnValue();
-            for (IVdcQueryable vm_helper : vmList) {
-                VM vm = (VM) vm_helper;
-                if (vm.getStatus() != VMStatus.Down) {
-                    List<VmNetworkInterface> vmInterfaces = 
getVmNetworkInterfaceDao().getAllForVm(vm.getId());
-                    VmNetworkInterface iface = 
LinqUtils.firstOrNull(vmInterfaces, new Predicate<VmNetworkInterface>() {
-                        @Override
-                        public boolean eval(VmNetworkInterface i) {
-                            if (i.getNetworkName() != null) {
-                                return 
i.getNetworkName().equals(bond.getNetworkName());
-                            }
-                            return false;
+        List<VM> vmList = getVmDAO().getAllForVdsGroup(vds.getvds_group_id());
+        for (VM vm : vmList) {
+            if (vm.getStatus() != VMStatus.Down) {
+                List<VmNetworkInterface> vmInterfaces = 
getVmNetworkInterfaceDao().getAllForVm(vm.getId());
+                VmNetworkInterface iface = LinqUtils.firstOrNull(vmInterfaces, 
new Predicate<VmNetworkInterface>() {
+                    @Override
+                    public boolean eval(VmNetworkInterface i) {
+                        if (i.getNetworkName() != null) {
+                            return 
i.getNetworkName().equals(bond.getNetworkName());
                         }
-                    });
-                    if (iface != null) {
-                        
addCanDoActionMessage(VdcBllMessages.NETWORK_INTERFACE_IN_USE_BY_VM);
                         return false;
                     }
+                });
+                if (iface != null) {
+                    
addCanDoActionMessage(VdcBllMessages.NETWORK_INTERFACE_IN_USE_BY_VM);
+                    return false;
                 }
             }
         }
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/FenceVdsBaseCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/FenceVdsBaseCommandTest.java
index 98bead7..83c76fb 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/FenceVdsBaseCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/FenceVdsBaseCommandTest.java
@@ -44,7 +44,7 @@
         command = new 
StopVdsCommand<FenceVdsActionParameters>(createParameters()) {
             // These methods are protected in AuditLoggableBase, and thus not 
accessible for spying.
             @Override
-            protected VmDAO getVmDAO() {
+            public VmDAO getVmDAO() {
                 return vmDAO;
             }
 
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommandTest.java
index 403d2a5..057d8e9 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/UpdateVdsGroupCommandTest.java
@@ -4,14 +4,11 @@
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyString;
-import static org.mockito.Matchers.argThat;
 import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
@@ -19,10 +16,8 @@
 import org.junit.ClassRule;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.ArgumentMatcher;
 import org.mockito.Mock;
 import org.mockito.runners.MockitoJUnitRunner;
-import org.ovirt.engine.core.bll.interfaces.BackendInternal;
 import org.ovirt.engine.core.common.action.VdsGroupOperationParameters;
 import org.ovirt.engine.core.common.businessentities.StorageType;
 import org.ovirt.engine.core.common.businessentities.VDS;
@@ -33,17 +28,13 @@
 import org.ovirt.engine.core.common.businessentities.storage_pool;
 import 
org.ovirt.engine.core.common.businessentities.gluster.GlusterVolumeEntity;
 import org.ovirt.engine.core.common.config.ConfigValues;
-import org.ovirt.engine.core.common.interfaces.SearchType;
-import org.ovirt.engine.core.common.queries.SearchParameters;
-import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
-import org.ovirt.engine.core.common.queries.VdcQueryReturnValue;
-import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dao.StoragePoolDAO;
 import org.ovirt.engine.core.dao.VdsDAO;
 import org.ovirt.engine.core.dao.VdsGroupDAO;
+import org.ovirt.engine.core.dao.VmDAO;
 import org.ovirt.engine.core.dao.gluster.GlusterVolumeDao;
 import org.ovirt.engine.core.utils.MockConfigRule;
 
@@ -63,11 +54,11 @@
     @Mock
     private VdsDAO vdsDAO;
     @Mock
-    private BackendInternal backendInternal;
-    @Mock
     private StoragePoolDAO storagePoolDAO;
     @Mock
     private GlusterVolumeDao glusterVolumeDao;
+    @Mock
+    private VmDAO vmDao;
 
     private UpdateVdsGroupCommand<VdsGroupOperationParameters> cmd;
 
@@ -152,7 +143,7 @@
         storagePoolIsLocalFS();
         cpuExists();
         cpuManufacturersMatch();
-        allQueriesEmpty();
+        allQueriesForVms();
         storagePoolAlreadyHasCluster();
         
canDoActionFailedWithReason(VdcBllMessages.VDS_GROUP_CANNOT_ADD_MORE_THEN_ONE_HOST_TO_LOCAL_STORAGE);
     }
@@ -164,7 +155,7 @@
         storagePoolIsLocalFS();
         cpuExists();
         cpuManufacturersMatch();
-        allQueriesEmpty();
+        allQueriesForVms();
         
canDoActionFailedWithReason(VdcBllMessages.DEFAULT_CLUSTER_CANNOT_BE_ON_LOCALFS);
     }
 
@@ -175,7 +166,7 @@
         storagePoolIsLocalFS();
         cpuExists();
         cpuManufacturersMatch();
-        allQueriesEmpty();
+        allQueriesForVms();
         
canDoActionFailedWithReason(VdcBllMessages.VDS_GROUP_SELECTION_ALGORITHM_MUST_BE_SET_TO_NONE_ON_LOCAL_STORAGE);
     }
 
@@ -185,7 +176,7 @@
         
when(vdsGroupDAO.get(any(Guid.class))).thenReturn(createVdsGroupWithNoCpuName());
         
when(vdsGroupDAO.getByName(anyString())).thenReturn(createVdsGroupWithNoCpuName());
         when(glusterVolumeDao.getByClusterId(any(Guid.class))).thenReturn(new 
ArrayList<GlusterVolumeEntity>());
-        allQueriesEmpty();
+        allQueriesForVms();
         assertTrue(cmd.canDoAction());
     }
 
@@ -195,7 +186,7 @@
         
when(vdsGroupDAO.get(any(Guid.class))).thenReturn(createVdsGroupWithNoCpuName());
         
when(vdsGroupDAO.getByName(anyString())).thenReturn(createVdsGroupWithNoCpuName());
         cpuExists();
-        allQueriesEmpty();
+        allQueriesForVms();
         
canDoActionFailedWithReason(VdcBllMessages.VDS_GROUP_AT_LEAST_ONE_SERVICE_MUST_BE_ENABLED);
     }
 
@@ -206,7 +197,7 @@
         
when(vdsGroupDAO.getByName(anyString())).thenReturn(createVdsGroupWithNoCpuName());
         mcr.mockConfigValue(ConfigValues.AllowClusterWithVirtGlusterEnabled, 
Boolean.FALSE);
         cpuExists();
-        allQueriesEmpty();
+        allQueriesForVms();
         
canDoActionFailedWithReason(VdcBllMessages.VDS_GROUP_ENABLING_BOTH_VIRT_AND_GLUSTER_SERVICES_NOT_ALLOWED);
     }
 
@@ -230,7 +221,7 @@
         
when(vdsGroupDAO.getByName(anyString())).thenReturn(createVdsGroupWithNoCpuName());
         cpuExists();
         cpuFlagsNotMissing();
-        allQueriesEmpty();
+        allQueriesForVms();
         clusterHasGlusterVolumes();
 
         
canDoActionFailedWithReason(VdcBllMessages.VDS_GROUP_CANNOT_DISABLE_GLUSTER_WHEN_CLUSTER_CONTAINS_VOLUMES);
@@ -288,12 +279,11 @@
 
         doReturn(0).when(cmd).compareCpuLevels(any(VDSGroup.class));
 
-        doReturn(backendInternal).when(cmd).getBackend();
-
         doReturn(vdsGroupDAO).when(cmd).getVdsGroupDAO();
         doReturn(vdsDAO).when(cmd).getVdsDAO();
         doReturn(storagePoolDAO).when(cmd).getStoragePoolDAO();
         doReturn(glusterVolumeDao).when(cmd).getGlusterVolumeDao();
+        doReturn(vmDao).when(cmd).getVmDAO();
 
         
when(vdsGroupDAO.get(any(Guid.class))).thenReturn(createDefaultVdsGroup());
         
when(vdsGroupDAO.getByName(anyString())).thenReturn(createDefaultVdsGroup());
@@ -402,11 +392,8 @@
         when(vdsDAO.getAllForVdsGroup(any(Guid.class))).thenReturn(vdsList);
     }
 
-    private void allQueriesEmpty() {
-        VdcQueryReturnValue returnValue = mock(VdcQueryReturnValue.class);
-        when(backendInternal.runInternalQuery(any(VdcQueryType.class), 
any(SearchParameters.class)))
-                .thenReturn(returnValue);
-        when(returnValue.getReturnValue()).thenReturn(Collections.emptyList());
+    private void allQueriesForVms() {
+        when(vmDao.getAllForVdsGroup(any(Guid.class))).thenReturn(new 
ArrayList<VM>());
     }
 
     private void vdsGroupHasVds() {
@@ -436,17 +423,7 @@
         List<VM> vmList = new ArrayList<VM>();
         vmList.add(vm);
 
-        VdcQueryReturnValue returnValue = mock(VdcQueryReturnValue.class);
-        when(backendInternal.runInternalQuery(any(VdcQueryType.class), argThat(
-                new ArgumentMatcher<VdcQueryParametersBase>() {
-                    @Override
-                    public boolean matches(final Object o) {
-                        SearchParameters param = (SearchParameters) o;
-                        return 
param.getSearchTypeValue().equals(SearchType.VM);
-                    }
-                })))
-                .thenReturn(returnValue);
-        when(returnValue.getReturnValue()).thenReturn(vmList);
+        when(vmDao.getAllForVdsGroup(any(Guid.class))).thenReturn(vmList);
     }
 
     private void cpuFlagsMissing() {
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
index 8014b61..fc91289 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBase.java
@@ -534,7 +534,7 @@
         return getDbFacade().getVmTemplateDao();
     }
 
-    protected VmDAO getVmDAO() {
+    public VmDAO getVmDAO() {
         return getDbFacade().getVmDao();
     }
 
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 1674a61..7dfc508 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
@@ -211,4 +211,11 @@
      * @return the list of VMs
      */
     List<VM> getAllForNetwork(Guid networkId);
+
+    /**
+     * Retrieves all VMS that are belongs to provided vds group
+     * @param vdsGroupId
+     * @return
+     */
+    List<VM> getAllForVdsGroup(Guid vdsGroupId);
 }
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 49ffba1..0206452 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
@@ -249,6 +249,14 @@
                         .addValue("network_id", id));
     }
 
+    @Override
+    public List<VM> getAllForVdsGroup(Guid vdsGroupId) {
+        return getCallsHandler().executeReadList("GetVmsByVdsGroupId",
+                VMRowMapper.instance,
+                getCustomMapSqlParameterSource()
+                        .addValue("vdsGroupId", vdsGroupId));
+    }
+
     static final class VMRowMapper implements ParameterizedRowMapper<VM> {
         public static final VMRowMapper instance = new VMRowMapper();
 
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBaseTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBaseTest.java
index c5a73ee..b0b9d59 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBaseTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dal/dbbroker/auditloghandling/AuditLogableBaseTest.java
@@ -1067,7 +1067,7 @@
         }
 
         @Override
-        protected VmDAO getVmDAO() {
+        public VmDAO getVmDAO() {
             final VmDAO v = mock(VmDAO.class);
             when(v.get(GUID)).thenReturn(new VM());
             when(v.get(GUID3)).thenThrow(new RuntimeException());
diff --git 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
index 02803ad..6febb1a 100644
--- 
a/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
+++ 
b/backend/manager/modules/dal/src/test/java/org/ovirt/engine/core/dao/VmDAOTest.java
@@ -314,6 +314,18 @@
     }
 
     /**
+     * Ensure that all VMS which are belongs to VdsGroup return correct
+     */
+    @Test
+    public void testGetAllForVdsGroup() {
+        List<VM> result = dao.getAllForVdsGroup(VDS_GROUP_ID);
+
+        assertNotNull(result);
+        assertFalse(result.isEmpty());
+    }
+
+
+    /**
      * Ensures the VMs related to the specified template are returned.
      */
     @Test


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

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

Reply via email to