Gilad Chaplik has uploaded a new change for review.

Change subject: core: moving sla logic to sla package (6/X)
......................................................................

core: moving sla logic to sla package (6/X)

+ doing whats needed in oreder it to compile

Change-Id: I6fdc1c0809dbd027e76646722c5e5366646e8acd
Signed-off-by: Gilad Chaplik <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EvenlyDistributeVDComparer.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MemoryVdsComparer.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/NonWaitingDelayer.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java
D 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsComparer.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsLoadBalancer.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCountVdsLoadBalancingAlgorithm.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
M backend/manager/modules/sla/pom.xml
R 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/EvenlyDistributeComparer.java
R 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/NoneComparer.java
R 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/PowerSaveComparer.java
A 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/SlaStaticValidation.java
A 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsComparer.java
R 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsCpuVdsLoadBalancingAlgorithm.java
R 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsFreeMemoryChecker.java
R 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsLoadBalancingAlgorithm.java
R 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsSelector.java
R 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/RunVmDelayer.java
22 files changed, 209 insertions(+), 192 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/16/13116/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EvenlyDistributeVDComparer.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EvenlyDistributeVDComparer.java
index 8897e77..12cf95e 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EvenlyDistributeVDComparer.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EvenlyDistributeVDComparer.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.core.bll;
 
 import org.ovirt.engine.core.common.businessentities.*;
+import org.ovirt.engine.core.sla.VdsComparer;
 
 /**
  * This comparer chose Vds with less vms running regarding if vds will be
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MemoryVdsComparer.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MemoryVdsComparer.java
index 2d60f75..4a8d184 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MemoryVdsComparer.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MemoryVdsComparer.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.core.bll;
 
 import org.ovirt.engine.core.common.businessentities.*;
+import org.ovirt.engine.core.sla.VdsComparer;
 
 /**
  * This comparer chose Vds with more memory available as best
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
index 45ea7c4..e6007a9 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MigrateVmCommand.java
@@ -23,6 +23,8 @@
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogField;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogFields;
+import org.ovirt.engine.core.sla.VdsFreeMemoryChecker;
+import org.ovirt.engine.core.sla.VdsSelector;
 
 @CustomLogFields({ @CustomLogField("VdsDestination"), 
@CustomLogField("DueToMigrationError") })
 public class MigrateVmCommand<T extends MigrateVmParameters> extends 
RunVmCommandBase<T> {
@@ -82,6 +84,7 @@
     protected void initVdss() {
         setVdsIdRef(new Guid(getVm().getRunOnVds().toString()));
         setVdsDestinationId(getVdsSelector().getVdsToRunOn(true));
+        VmHandler.UpdateVmGuestAgentVersion(getVm());
         // make _destinationVds null in order to refresh it from db in case it
         // changed.
         _destinationVds = null;
@@ -213,8 +216,13 @@
                 
reasons.add(VdcBllMessages.ACTION_TYPE_FAILED_VDS_STATUS_ILLEGAL.name());
             }
 
-            retValue = retValue && validate(new 
SnapshotsValidator().vmNotDuringSnapshot(vm.getId()))
-                    && getVdsSelector().canFindVdsToRunOn(reasons, true);
+            retValue = retValue && validate(new 
SnapshotsValidator().vmNotDuringSnapshot(vm.getId()));
+
+            boolean canFindVdsToRunOn = 
getVdsSelector().canFindVdsToRunOn(reasons, true);
+            if (!canFindVdsToRunOn && 
reasons.contains(VdcBllMessages.ACTION_TYPE_FAILED_VDS_VM_VERSION)) {
+                VmHandler.UpdateVmGuestAgentVersion(getVm());
+            }
+            retValue &= canFindVdsToRunOn;
         }
 
         if (!retValue) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/NonWaitingDelayer.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/NonWaitingDelayer.java
index 8e600fc..66f43b4 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/NonWaitingDelayer.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/NonWaitingDelayer.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.core.bll;
 
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.utils.RunVmDelayer;
 
 /**
  * This delayer should be used in cases when no throttling is desired e.g in 
the validation phase of commands.
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
index 1dc214d..4b6f21b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java
@@ -77,6 +77,8 @@
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.AuditLogDirector;
 import org.ovirt.engine.core.dal.job.ExecutionMessageDirector;
+import org.ovirt.engine.core.sla.VdsFreeMemoryChecker;
+import org.ovirt.engine.core.sla.VdsSelector;
 import org.ovirt.engine.core.utils.NetworkUtils;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
 import org.ovirt.engine.core.utils.linq.Predicate;
@@ -565,6 +567,7 @@
     protected boolean getVdsToRunOn() {
         // use destination vds or default vds or none
         setVdsId(getVdsSelector().getVdsToRunOn(false));
+        VmHandler.UpdateVmGuestAgentVersion(getVm());
         setVds(null);
         setVdsName(null);
         if (getVdsId().equals(Guid.Empty)) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java
index bdfb32a..211fa19 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommandBase.java
@@ -24,7 +24,6 @@
 import org.ovirt.engine.core.common.businessentities.LunDisk;
 import org.ovirt.engine.core.common.businessentities.StorageServerConnections;
 import org.ovirt.engine.core.common.businessentities.VDS;
-import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.VMStatus;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
@@ -37,6 +36,8 @@
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.sla.VdsSelector;
+import org.ovirt.engine.core.utils.RunVmDelayer;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
 import org.ovirt.engine.core.utils.threadpool.ThreadPoolUtil;
@@ -49,7 +50,7 @@
 public abstract class RunVmCommandBase<T extends VmOperationParameterBase> 
extends VmCommand<T> implements
         IVdsAsyncCommand, RunVmDelayer {
 
-    private static Log log = LogFactory.getLog(RunVmCommandBase.class);
+    public static Log log = LogFactory.getLog(RunVmCommandBase.class);
     protected static final HashMap<Guid, Integer> _vds_pending_vm_count = new 
HashMap<Guid, Integer>();
     private VdsSelector privateVdsSelector;
     protected boolean _isRerun = false;
@@ -87,61 +88,6 @@
      */
     private List<Guid> getRunVdssList() {
         return getVdsSelector().getRunVdssList();
-    }
-
-    /**
-     * Check if the given host has enough CPU to run the VM, without exceeding 
the high utilization threshold.
-     *
-     * @param vds
-     *            The host to check.
-     * @param vm
-     *            The VM to check.
-     * @return Does this host has enough CPU (without exceeding the threshold) 
to run the VM.
-     */
-    public static boolean hasCpuToRunVM(VDS vds, VM vm) {
-        if (vds.getUsageCpuPercent() == null || vm.getUsageCpuPercent() == 
null) {
-            return false;
-        }
-
-        // The predicted CPU is actually the CPU that the VM will take 
considering how many cores it has and now many
-        // cores the host has. This is why we take both parameters into 
consideration.
-        int predictedVmCpu = (vm.getUsageCpuPercent() * vm.getNumOfCpus()) / 
VdsSelector.getEffectiveCpuCores(vds);
-        boolean result = vds.getUsageCpuPercent() + predictedVmCpu <= 
vds.getHighUtilization();
-        if (log.isDebugEnabled()) {
-            log.debugFormat("Host {0} has {1}% CPU load; VM {2} is predicted 
to have {3}% CPU load; " +
-                    "High threshold is {4}%. Host is {5}suitable in terms of 
CPU.",
-                    vds.getName(),
-                    vds.getUsageCpuPercent(),
-                    vm.getName(),
-                    predictedVmCpu,
-                    vds.getHighUtilization(),
-                    (result ? "" : "not "));
-        }
-
-        return result;
-    }
-
-    public static boolean hasMemoryToRunVM(VDS curVds, VM vm) {
-        boolean retVal = false;
-        if (curVds.getMemCommited() != null && curVds.getPhysicalMemMb() != 
null && curVds.getReservedMem() != null) {
-            double vdsCurrentMem =
-                    curVds.getMemCommited() + curVds.getPendingVmemSize() + 
curVds.getGuestOverhead() + curVds
-                            .getReservedMem() + vm.getMinAllocatedMem();
-            double vdsMemLimit = curVds.getMaxVdsMemoryOverCommit() * 
curVds.getPhysicalMemMb() / 100.0;
-            if (log.isDebugEnabled()) {
-                log.debugFormat("hasMemoryToRunVM: host {0} pending vmem size 
is : {1} MB",
-                        curVds.getName(),
-                        curVds.getPendingVmemSize());
-                log.debugFormat("Host Mem Conmmitted: {0}, Host Reserved Mem: 
{1}, Host Guest Overhead {2}, VM Min Allocated Mem {3}",
-                        curVds.getMemCommited(),
-                        curVds.getReservedMem(),
-                        curVds.getGuestOverhead(),
-                        vm.getMinAllocatedMem());
-                log.debugFormat("{0} <= ???  {1}", vdsCurrentMem, vdsMemLimit);
-            }
-            retVal = (vdsCurrentMem <= vdsMemLimit);
-        }
-        return retVal;
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsComparer.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsComparer.java
deleted file mode 100644
index 7cae7e5..0000000
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsComparer.java
+++ /dev/null
@@ -1,69 +0,0 @@
-package org.ovirt.engine.core.bll;
-
-import org.ovirt.engine.core.compat.*;
-import org.ovirt.engine.core.common.businessentities.*;
-
-/**
- * Base class for comparing between vdss
- */
-public abstract class VdsComparer {
-    /**
-     * Factory method, creates necessary comparer
-     *
-     * @return
-     */
-    public static VdsComparer CreateComparer(VdsSelectionAlgorithm 
selectionAlgorithm) {
-        switch (selectionAlgorithm) {
-        case EvenlyDistribute:
-            return new EvenlyDistributeComparer();
-        case PowerSave:
-            return new PowerSaveComparer();
-        case None:
-            return new NoneComparer();
-        default:
-            throw new NotImplementedException("Uknown type of selection 
algorithm: " + selectionAlgorithm);
-        }
-        // try
-        // {
-        // //return AppDomain.CurrentDomain.CreateInstanceAndUnwrap("VdcBLL",
-        // GetComparerTypeName(selectionAlgorithm)) as VdsComparer;
-        // java.lang.Class type =
-        // java.lang.Class.forName(GetComparerTypeName(selectionAlgorithm));
-        // //type.GetConstructor(BindingFlags.Instance | 
BindingFlags.NonPublic,
-        // null,
-        // // CallingConventions.HasThis, null, null);
-        // java.lang.reflect.Constructor info = type.getConstructors()[0];
-        // Object TempAsCast = info.newInstance(null);
-        // return (VdsComparer)((TempAsCast instanceof VdsComparer) ? 
TempAsCast
-        // : null);
-        // //return new BestDistributionComparer();
-        // }
-        // catch (Exception ex)
-        // {
-        // throw new ApplicationException("JTODO unhandled exception", ex);
-        // }
-    }
-
-    // private static String GetComparerTypeName(VdsSelectionAlgorithm
-    // selectionAlgorithm)
-    // {
-    // return String.format("%1$s.%2$s%3$s",
-    // "VdcBLL",selectionAlgorithm.toString(), "Comparer");
-    // }
-    /**
-     * Base abstract function for finish best Vds treatment
-     *
-     * @param x
-     */
-    public abstract void BestVdsProcedure(VDS x);
-
-    /**
-     * Base abstract function to compare between two VDSs
-     *
-     * @param x
-     * @param y
-     * @param vm
-     * @return
-     */
-    public abstract boolean IsBetter(VDS x, VDS y, VM vm);
-}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsLoadBalancer.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsLoadBalancer.java
index b503908..f9078f2 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsLoadBalancer.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsLoadBalancer.java
@@ -3,13 +3,17 @@
 import java.util.List;
 import java.util.concurrent.TimeUnit;
 
+import org.ovirt.engine.core.bll.job.ExecutionHandler;
+import org.ovirt.engine.core.common.action.MigrateVmToServerParameters;
+import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
 import org.ovirt.engine.core.common.businessentities.VdsSelectionAlgorithm;
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
+import org.ovirt.engine.core.dal.dbbroker.DbFacade;
+import org.ovirt.engine.core.sla.VdsLoadBalancingAlgorithm;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
-import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.utils.timer.OnTimerMethodAnnotation;
 import org.ovirt.engine.core.utils.timer.SchedulerUtilQuartzImpl;
 
@@ -40,7 +44,14 @@
                         group.gethigh_utilization(), 
group.getlow_utilization(),
                         group.getcpu_over_commit_duration_minutes(),
                         Config.<Integer> 
GetValue(ConfigValues.UtilizationThresholdInPercent));
-                loadBalancingAlgorithm.LoadBalance();
+                List<MigrateVmToServerParameters> parameterList = 
loadBalancingAlgorithm.LoadBalance();
+                if (parameterList != null) {
+                    for (MigrateVmToServerParameters parameters : 
parameterList) {
+                        
Backend.getInstance().runInternalAction(VdcActionType.MigrateVmToServer,
+                                parameters,
+                                ExecutionHandler.createInternalJobContext());
+                    }
+                }
             } else {
                 log.debugFormat("VdsLoadBalancer: Cluster {0} skipped because 
no selection algorithm selected.",
                         group.getname());
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCountVdsLoadBalancingAlgorithm.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCountVdsLoadBalancingAlgorithm.java
index adeb99c..7039b90 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCountVdsLoadBalancingAlgorithm.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmCountVdsLoadBalancingAlgorithm.java
@@ -11,6 +11,8 @@
 import org.ovirt.engine.core.common.config.Config;
 import org.ovirt.engine.core.common.config.ConfigValues;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.sla.VdsLoadBalancingAlgorithm;
+import org.ovirt.engine.core.sla.VdsSelector;
 import org.ovirt.engine.core.utils.linq.DefaultMapper;
 import org.ovirt.engine.core.utils.linq.LinqUtils;
 import org.ovirt.engine.core.utils.linq.Predicate;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
index 38effeb..0f80520 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmPoolCommandBase.java
@@ -28,6 +28,8 @@
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogField;
 import org.ovirt.engine.core.dal.dbbroker.auditloghandling.CustomLogFields;
 import org.ovirt.engine.core.dao.VmPoolDAO;
+import org.ovirt.engine.core.sla.VdsFreeMemoryChecker;
+import org.ovirt.engine.core.sla.VdsSelector;
 import org.ovirt.engine.core.utils.vmproperties.VmPropertiesUtils;
 
 @CustomLogFields({ @CustomLogField("VmPoolName") })
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
index e60ac94..cf1bc60 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RunVmCommandTest.java
@@ -60,6 +60,8 @@
 import org.ovirt.engine.core.dao.StoragePoolDAO;
 import org.ovirt.engine.core.dao.VmDAO;
 import org.ovirt.engine.core.dao.VmDeviceDAO;
+import org.ovirt.engine.core.sla.VdsFreeMemoryChecker;
+import org.ovirt.engine.core.sla.VdsSelector;
 import org.ovirt.engine.core.utils.MockConfigRule;
 import org.ovirt.engine.core.utils.vmproperties.VmPropertiesUtils;
 
diff --git a/backend/manager/modules/sla/pom.xml 
b/backend/manager/modules/sla/pom.xml
index a596945..6946b69 100644
--- a/backend/manager/modules/sla/pom.xml
+++ b/backend/manager/modules/sla/pom.xml
@@ -25,6 +25,19 @@
                        <artifactId>common</artifactId>
                        <version>${engine.version}</version>
                </dependency>
+
+               <dependency>
+                       <groupId>${engine.groupId}</groupId>
+                       <artifactId>utils</artifactId>
+                       <version>${engine.version}</version>
+               </dependency>
+
+               <dependency>
+                       <groupId>${engine.groupId}</groupId>
+                       <artifactId>dal</artifactId>
+                       <version>${engine.version}</version>
+               </dependency>
+
        </dependencies>
 
        <build>
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EvenlyDistributeComparer.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/EvenlyDistributeComparer.java
similarity index 97%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EvenlyDistributeComparer.java
rename to 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/EvenlyDistributeComparer.java
index 48c9ed5..a64db2c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/EvenlyDistributeComparer.java
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/EvenlyDistributeComparer.java
@@ -1,4 +1,4 @@
-package org.ovirt.engine.core.bll;
+package org.ovirt.engine.core.sla;
 
 import org.ovirt.engine.core.common.businessentities.*;
 import org.ovirt.engine.core.common.config.Config;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/NoneComparer.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/NoneComparer.java
similarity index 63%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/NoneComparer.java
rename to 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/NoneComparer.java
index aeb94a6..97dcae1 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/NoneComparer.java
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/NoneComparer.java
@@ -1,4 +1,5 @@
-package org.ovirt.engine.core.bll;
+package org.ovirt.engine.core.sla;
+
 
 public class NoneComparer extends EvenlyDistributeComparer {
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PowerSaveComparer.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/PowerSaveComparer.java
similarity index 95%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PowerSaveComparer.java
rename to 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/PowerSaveComparer.java
index 643cf49..5416b30 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/PowerSaveComparer.java
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/PowerSaveComparer.java
@@ -1,4 +1,4 @@
-package org.ovirt.engine.core.bll;
+package org.ovirt.engine.core.sla;
 
 import org.ovirt.engine.core.common.businessentities.*;
 
diff --git 
a/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/SlaStaticValidation.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/SlaStaticValidation.java
new file mode 100644
index 0000000..22fb841
--- /dev/null
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/SlaStaticValidation.java
@@ -0,0 +1,65 @@
+package org.ovirt.engine.core.sla;
+
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.utils.log.Log;
+import org.ovirt.engine.core.utils.log.LogFactory;
+
+public class SlaStaticValidation {
+    public static Log log = LogFactory.getLog(SlaStaticValidation.class);
+
+    /**
+     * Check if the given host has enough CPU to run the VM, without exceeding 
the high utilization threshold.
+     *
+     * @param vds
+     *            The host to check.
+     * @param vm
+     *            The VM to check.
+     * @return Does this host has enough CPU (without exceeding the threshold) 
to run the VM.
+     */
+    public static boolean hasCpuToRunVM(VDS vds, VM vm) {
+        if (vds.getUsageCpuPercent() == null || vm.getUsageCpuPercent() == 
null) {
+            return false;
+        }
+        // The predicted CPU is actually the CPU that the VM will take 
considering how many cores it has and now many
+        // cores the host has. This is why we take both parameters into 
consideration.
+        int predictedVmCpu = (vm.getUsageCpuPercent() * vm.getNumOfCpus()) / 
VdsSelector.getEffectiveCpuCores(vds);
+        boolean result = vds.getUsageCpuPercent() + predictedVmCpu <= 
vds.getHighUtilization();
+        if (log.isDebugEnabled()) {
+            log.debugFormat("Host {0} has {1}% CPU load; VM {2} is predicted 
to have {3}% CPU load; " +
+                    "High threshold is {4}%. Host is {5}suitable in terms of 
CPU.",
+                    vds.getName(),
+                    vds.getUsageCpuPercent(),
+                    vm.getName(),
+                    predictedVmCpu,
+                    vds.getHighUtilization(),
+                    (result ? "" : "not "));
+        }
+
+        return result;
+    }
+
+    public static boolean hasMemoryToRunVM(VDS curVds, VM vm) {
+        boolean retVal = false;
+        if (curVds.getMemCommited() != null && curVds.getPhysicalMemMb() != 
null && curVds.getReservedMem() != null) {
+            double vdsCurrentMem =
+                    curVds.getMemCommited() + curVds.getPendingVmemSize() + 
curVds.getGuestOverhead() + curVds
+                            .getReservedMem() + vm.getMinAllocatedMem();
+            double vdsMemLimit = curVds.getMaxVdsMemoryOverCommit() * 
curVds.getPhysicalMemMb() / 100.0;
+            if (log.isDebugEnabled()) {
+                log.debugFormat("hasMemoryToRunVM: host {0} pending vmem size 
is : {1} MB",
+                        curVds.getName(),
+                        curVds.getPendingVmemSize());
+                log.debugFormat("Host Mem Conmmitted: {0}, Host Reserved Mem: 
{1}, Host Guest Overhead {2}, VM Min Allocated Mem {3}",
+                        curVds.getMemCommited(),
+                        curVds.getReservedMem(),
+                        curVds.getGuestOverhead(),
+                        vm.getMinAllocatedMem());
+                log.debugFormat("{0} <= ???  {1}", vdsCurrentMem, vdsMemLimit);
+            }
+            retVal = (vdsCurrentMem <= vdsMemLimit);
+        }
+        return retVal;
+    }
+
+}
diff --git 
a/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsComparer.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsComparer.java
new file mode 100644
index 0000000..c6bd8f3
--- /dev/null
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsComparer.java
@@ -0,0 +1,46 @@
+package org.ovirt.engine.core.sla;
+
+import org.ovirt.engine.core.common.businessentities.VDS;
+import org.ovirt.engine.core.common.businessentities.VM;
+import org.ovirt.engine.core.common.businessentities.VdsSelectionAlgorithm;
+import org.ovirt.engine.core.compat.NotImplementedException;
+
+/**
+ * Base class for comparing between vdss
+ */
+public abstract class VdsComparer {
+    /**
+     * Factory method, creates necessary comparer
+     *
+     * @return
+     */
+    public static VdsComparer CreateComparer(VdsSelectionAlgorithm 
selectionAlgorithm) {
+        switch (selectionAlgorithm) {
+        case EvenlyDistribute:
+            return new EvenlyDistributeComparer();
+        case PowerSave:
+            return new PowerSaveComparer();
+        case None:
+            return new NoneComparer();
+        default:
+            throw new NotImplementedException("Uknown type of selection 
algorithm: " + selectionAlgorithm);
+        }
+    }
+
+    /**
+     * Base abstract function for finish best Vds treatment
+     *
+     * @param x
+     */
+    public abstract void BestVdsProcedure(VDS x);
+
+    /**
+     * Base abstract function to compare between two VDSs
+     *
+     * @param x
+     * @param y
+     * @param vm
+     * @return
+     */
+    public abstract boolean IsBetter(VDS x, VDS y, VM vm);
+}
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsCpuVdsLoadBalancingAlgorithm.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsCpuVdsLoadBalancingAlgorithm.java
similarity index 99%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsCpuVdsLoadBalancingAlgorithm.java
rename to 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsCpuVdsLoadBalancingAlgorithm.java
index c7db4bf..5f6cb73 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsCpuVdsLoadBalancingAlgorithm.java
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsCpuVdsLoadBalancingAlgorithm.java
@@ -1,4 +1,4 @@
-package org.ovirt.engine.core.bll;
+package org.ovirt.engine.core.sla;
 
 import java.util.Collections;
 import java.util.Comparator;
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsFreeMemoryChecker.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsFreeMemoryChecker.java
similarity index 82%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsFreeMemoryChecker.java
rename to 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsFreeMemoryChecker.java
index 57ceca6..d848626 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsFreeMemoryChecker.java
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsFreeMemoryChecker.java
@@ -1,10 +1,11 @@
-package org.ovirt.engine.core.bll;
+package org.ovirt.engine.core.sla;
 
 import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.utils.log.LogFactory;
+import org.ovirt.engine.core.utils.RunVmDelayer;
 
 public class VdsFreeMemoryChecker {
 
@@ -18,7 +19,7 @@
 
     public boolean evaluate(VDS vds, VM vm) {
         // first check if this host has enough memory run the VM.
-        if (!RunVmCommandBase.hasMemoryToRunVM(vds, vm)) {
+        if (!SlaStaticValidation.hasMemoryToRunVM(vds, vm)) {
 
             if (vds.getPendingVmemSize() == 0) {
                 // there are no pending VMs to run - we hit the hard limit of 
memory, no special treatment
@@ -35,7 +36,7 @@
             vds = DbFacade.getInstance().getVdsDao().get(vds.getId());
 
             // check free memory on the updated host
-            return RunVmCommandBase.hasMemoryToRunVM(vds, vm);
+            return SlaStaticValidation.hasMemoryToRunVM(vds, vm);
         }
         return true;
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsLoadBalancingAlgorithm.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsLoadBalancingAlgorithm.java
similarity index 90%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsLoadBalancingAlgorithm.java
rename to 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsLoadBalancingAlgorithm.java
index e149da8..65951f8 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsLoadBalancingAlgorithm.java
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsLoadBalancingAlgorithm.java
@@ -1,5 +1,6 @@
-package org.ovirt.engine.core.bll;
+package org.ovirt.engine.core.sla;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.HashSet;
@@ -7,9 +8,7 @@
 import java.util.Map;
 import java.util.Set;
 
-import org.ovirt.engine.core.bll.job.ExecutionHandler;
 import org.ovirt.engine.core.common.action.MigrateVmToServerParameters;
-import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.MigrationSupport;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSGroup;
@@ -107,7 +106,9 @@
         return new VdsCpuVdsLoadBalancingAlgorithm(group);
     }
 
-    public void LoadBalance() {
+    public List<MigrateVmToServerParameters> LoadBalance() {
+        List<MigrateVmToServerParameters> parameterList = new 
ArrayList<MigrateVmToServerParameters>();
+
         
setAllRelevantVdss(DbFacade.getInstance().getVdsDao().getAllForVdsGroupWithoutMigrating(getVdsGroup().getId()));
         log.infoFormat("VdsLoadBalancer: number of relevant vdss (no 
migration, no pending): {0}.",
                 getAllRelevantVdss().size());
@@ -116,12 +117,13 @@
         InitUnderUtilizedList();
         if (getOverUtilizedServers().size() != 0
                 && (getReadyToMigrationServers().size() != 0 || 
getUnderUtilizedServers().size() != 0)) {
-            ProceedOverUtilizedServers();
+            parameterList.addAll(ProceedOverUtilizedServers());
         }
         if (getUnderUtilizedServers().size() > 0
                 && (getReadyToMigrationServers().size() > 0 || 
getUnderUtilizedServers().size() > 1)) {
-            ProceedUnderUtilizedServers();
+            parameterList.addAll(ProceedUnderUtilizedServers());
         }
+        return parameterList;
     }
 
     protected abstract void InitOverUtilizedList();
@@ -130,7 +132,8 @@
 
     protected abstract void InitUnderUtilizedList();
 
-    private void ProceedOverUtilizedServers() {
+    private List<MigrateVmToServerParameters> ProceedOverUtilizedServers() {
+        List<MigrateVmToServerParameters> parameterList = new 
ArrayList<MigrateVmToServerParameters>();
         List<Guid> overUtilizedServersIds = 
LinqUtils.foreach(getOverUtilizedServers().values(),
                 new Function<VDS, Guid>() {
                     @Override
@@ -178,11 +181,7 @@
                     /**
                      * Migrate vm from OverUtilezed server
                      */
-                    MigrateVmToServerParameters parameters =
-                        new MigrateVmToServerParameters(false, vm.getId(), 
destinationVdsId);
-                    
Backend.getInstance().runInternalAction(VdcActionType.MigrateVmToServer,
-                            parameters,
-                            ExecutionHandler.createInternalJobContext());
+                    parameterList.add(new MigrateVmToServerParameters(false, 
vm.getId(), destinationVdsId));
                     /**
                      * Remove server from list
                      */
@@ -195,9 +194,11 @@
                 log.info("VdsLoadBalancer: No vms found to migrate on this 
server");
             }
         }
+        return parameterList;
     }
 
-    private void ProceedUnderUtilizedServers() {
+    private List<MigrateVmToServerParameters> ProceedUnderUtilizedServers() {
+        List<MigrateVmToServerParameters> parameterList = new 
ArrayList<MigrateVmToServerParameters>();
         List<Guid> underUtilizedServersIds = 
LinqUtils.foreach(getUnderUtilizedServers().values(),
                 new Function<VDS, Guid>() {
                     @Override
@@ -251,11 +252,7 @@
                                 vds.getName());
                     } else {
                         Guid destinationVdsId = destinationVds.getId();
-                        MigrateVmToServerParameters parameters =
-                            new MigrateVmToServerParameters(false, vm.getId(), 
destinationVdsId);
-                        
Backend.getInstance().runInternalAction(VdcActionType.MigrateVmToServer,
-                                parameters,
-                                ExecutionHandler.createInternalJobContext());
+                        parameterList.add(new 
MigrateVmToServerParameters(false, vm.getId(), destinationVdsId));
                         currentList.remove(destinationVdsId);
                         log.infoFormat(
                                 "VdsLoadBalancer: Desktop {0} migrated from 
underutilized server {1} to server {2}",
@@ -273,6 +270,7 @@
                                                          // passed vm on it
             }
         }
+        return parameterList;
     }
 
     private java.util.List<VM> getMigrableVmsRunningOnVds(Guid vdsId) {
@@ -293,8 +291,8 @@
             @Override
             public boolean eval(VDS p) {
                 return (p.getVdsGroupId().equals(vm.getVdsGroupId())
-                        && RunVmCommandBase.hasMemoryToRunVM(p, vm)
-                        && RunVmCommandBase.hasCpuToRunVM(p, vm));
+                        && SlaStaticValidation.hasMemoryToRunVM(p, vm)
+                        && SlaStaticValidation.hasCpuToRunVM(p, vm));
             }
         });
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsSelector.java
 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsSelector.java
similarity index 91%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsSelector.java
rename to 
backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsSelector.java
index 3971c85..1c30d3d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsSelector.java
+++ 
b/backend/manager/modules/sla/src/main/java/org/ovirt/engine/core/sla/VdsSelector.java
@@ -1,4 +1,4 @@
-package org.ovirt.engine.core.bll;
+package org.ovirt.engine.core.sla;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -24,9 +24,6 @@
 import org.ovirt.engine.core.compat.RpmVersion;
 import org.ovirt.engine.core.dal.VdcBllMessages;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
-import org.ovirt.engine.core.dao.network.InterfaceDao;
-import org.ovirt.engine.core.dao.network.NetworkDao;
-import org.ovirt.engine.core.dao.network.VmNetworkInterfaceDao;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
 
@@ -132,7 +129,6 @@
             VDS target_vds = 
DbFacade.getInstance().getVdsDao().get(getDestinationVdsId());
             log.infoFormat("Checking for a specific VDS only - id:{0}, 
name:{1}, host_name(ip):{2}",
                     getDestinationVdsId(), target_vds.getName(), 
target_vds.getHostName());
-            VmHandler.UpdateVmGuestAgentVersion(getVm());
             result = getVdsToRunOn(new ArrayList<VDS>(Arrays.asList(new VDS[] 
{ target_vds })), isMigrate);
         }
         return result;
@@ -181,12 +177,12 @@
         for (VDS curVds : vdss) {
             noVDSs = false;
 
-            ValidationResult result = validateHostIsReadyToRun(curVds, sb, 
isMigrate);
-            if (result.isValid()) {
+            VdcBllMessages result = validateHostIsReadyToRun(curVds, sb, 
isMigrate);
+            if (result == null) {
                 return true;
             } else {
-                if (messageToReturn.getValue() < 
result.getMessage().getValue()) {
-                    messageToReturn = result.getMessage();
+                if (messageToReturn.getValue() < result.getValue()) {
+                    messageToReturn = result;
                     /**
                      * save version of current vds for later use
                      */
@@ -202,11 +198,9 @@
         if (messages != null) {
             messages.add(messageToReturn.toString());
             /**
-             * if error due to versions, add versions information to can do
-             * action message
+             * if error due to versions, add versions information to can do 
action message
              */
             if (messageToReturn == 
VdcBllMessages.ACTION_TYPE_FAILED_VDS_VM_VERSION && vdsVersion != null) {
-                VmHandler.UpdateVmGuestAgentVersion(getVm());
                 messages.add("$toolsVersion " + getVm().getPartialVersion());
                 messages.add("$serverVersion " + vdsVersion.getRpmName());
 
@@ -321,18 +315,18 @@
         }
     });
 
-    private ValidationResult validateHostIsReadyToRun(final VDS vds, 
StringBuilder sb, boolean isMigrate) {
+    private VdcBllMessages validateHostIsReadyToRun(final VDS vds, 
StringBuilder sb, boolean isMigrate) {
         // buffer the mismatches as we go
         sb.append(" VDS ").append(vds.getName()).append(" 
").append(vds.getId()).append(" ");
 
+        VdcBllMessages result;
         for(HostValidator validator : this.hostValidators) {
-            VdcBllMessages result = validator.validate(vds, sb, isMigrate);
-            if(result != null) {
-                return new ValidationResult(result);
+            if ((result = validator.validate(vds, sb, isMigrate)) != null) {
+                return result;
             }
         }
 
-        return ValidationResult.VALID;
+        return null;
     }
 
     /**
@@ -381,7 +375,7 @@
         StringBuilder sb = new StringBuilder();
         final List<VDS> readyToRun = new ArrayList<VDS>();
         for (VDS curVds : vdss) {
-            if (validateHostIsReadyToRun(curVds, sb, isMigrate) == 
ValidationResult.VALID) {
+            if (validateHostIsReadyToRun(curVds, sb, isMigrate) == null) {
                 readyToRun.add(curVds);
             }
         }
@@ -407,8 +401,10 @@
     * @return <code>true</code> if all required Networks are attached to a 
Host Nic, otherwise, <code>false</code>.
     */
     private boolean areRequiredNetworksAvailable(VDS vds) {
-        final List<VdsNetworkInterface> allInterfacesForVds = 
getInterfaceDAO().getAllInterfacesForVds(vds.getId());
-        final List<Network> clusterNetworks = 
getNetworkDAO().getAllForCluster(vds.getVdsGroupId());
+        final List<VdsNetworkInterface> allInterfacesForVds =
+                
DbFacade.getInstance().getInterfaceDao().getAllInterfacesForVds(vds.getId());
+        final List<Network> clusterNetworks =
+                
DbFacade.getInstance().getNetworkDao().getAllForCluster(vds.getVdsGroupId());
         final Map<String, Network> networksByName = 
Entities.entitiesByName(clusterNetworks);
 
         boolean onlyRequiredNetworks =
@@ -437,10 +433,6 @@
         return true;
     }
 
-    private NetworkDao getNetworkDAO() {
-        return DbFacade.getInstance().getNetworkDao();
-    }
-
     private boolean networkRequiredOnVds(VmNetworkInterface vmIface,
             Map<String, Network> networksByName,
             boolean onlyRequiredNetworks) {
@@ -451,14 +443,6 @@
             networkRequiredOnVds = 
networksByName.get(vmIface.getNetworkName()).getCluster().isRequired();
         }
         return networkRequiredOnVds;
-    }
-
-    VmNetworkInterfaceDao getVmNetworkInterfaceDao() {
-        return DbFacade.getInstance().getVmNetworkInterfaceDao();
-    }
-
-    InterfaceDao getInterfaceDAO() {
-        return DbFacade.getInstance().getInterfaceDao();
     }
 
     private Guid getBestVdsToRun(List<VDS> list) {
@@ -483,10 +467,11 @@
 
     private List<VmNetworkInterface> getVmNICs() {
         if (vmNICs == null) {
-            vmNICs = getVmNetworkInterfaceDao().getAllForVm(getVm().getId());
+            vmNICs = 
DbFacade.getInstance().getVmNetworkInterfaceDao().getAllForVm(getVm().getId());
         }
         return vmNICs;
     }
 
     private static final Log log = LogFactory.getLog(VdsSelector.class);
+
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmDelayer.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/RunVmDelayer.java
similarity index 93%
rename from 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmDelayer.java
rename to 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/RunVmDelayer.java
index 884749b..996ed8d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmDelayer.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/RunVmDelayer.java
@@ -1,4 +1,4 @@
-package org.ovirt.engine.core.bll;
+package org.ovirt.engine.core.utils;
 
 import org.ovirt.engine.core.compat.Guid;
 


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

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

Reply via email to