Gilad Chaplik has uploaded a new change for review. Change subject: core: scheduler: change parameter map type ......................................................................
core: scheduler: change parameter map type The external scheduler is now expecting a string map with vm id instead of vm entity, therefore, changing the parameter map to hold strings (instead of objects), and passing the vm entity as a seperate parameter. Change-Id: Ie0475218e2b66fcd48faf0b92ac2873c4b448c0e Signed-off-by: Gilad Chaplik <gchap...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/PolicyUnitImpl.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/CPUPolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/EvenDistributionPolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MemoryPolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationDomainPolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationPolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NonePolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PinToHostPolicyUnit.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PowerSavingPolicyUnit.java 11 files changed, 29 insertions(+), 32 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/55/17755/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/PolicyUnitImpl.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/PolicyUnitImpl.java index 3158093..c8a37a5 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/PolicyUnitImpl.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/PolicyUnitImpl.java @@ -16,6 +16,7 @@ import org.ovirt.engine.core.bll.scheduling.policyunits.PowerSavingPolicyUnit; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.scheduling.PolicyUnit; import org.ovirt.engine.core.common.scheduling.PolicyUnitType; import org.ovirt.engine.core.common.utils.Pair; @@ -24,8 +25,6 @@ import org.ovirt.engine.core.utils.log.LogFactory; public class PolicyUnitImpl extends PolicyUnit { - public static final String VM = "vm"; - public static PolicyUnitImpl getPolicyUnitImpl(PolicyUnit policyUnit) { switch (policyUnit.getName()) { case "Migration": @@ -59,12 +58,12 @@ this.policyUnit = policyUnit; } - public List<VDS> filter(List<VDS> hosts, Map<String, Object> parameters, List<String> messages) { + public List<VDS> filter(List<VDS> hosts, VM vm, Map<String, String> parameters, List<String> messages) { log.error("policy unit:" + getName() + "filter is not implemented"); return hosts; } - public List<Pair<Guid, Integer>> score(List<VDS> hosts, Map<String, Object> parameters) { + public List<Pair<Guid, Integer>> score(List<VDS> hosts, VM vm, Map<String, String> parameters) { log.error("policy unit:" + getPolicyUnit().getName() + "function is not implemented"); List<Pair<Guid, Integer>> pairs = new ArrayList<Pair<Guid, Integer>>(); for (VDS vds : hosts) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java index 3043c42..96f5712 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/SchedulingManager.java @@ -156,7 +156,7 @@ updateInitialHostList(vdsList, hostBlackList, true); updateInitialHostList(vdsList, hostWhiteList, false); ClusterPolicy policy = policyMap.get(cluster.getClusterPolicyId()); - Map<String, Object> parameters = createClusterPolicyParameters(cluster, vm); + Map<String, String> parameters = createClusterPolicyParameters(cluster); if (destHostId != null) { if (checkDestinationHost(vm, vdsList, @@ -173,6 +173,7 @@ vdsList = runFilters(policy.getFilters(), vdsList, + vm, parameters, policy.getFilterPositionMap(), messages, @@ -183,7 +184,7 @@ if (policy.getFunctions() == null || policy.getFunctions().isEmpty()) { return vdsList.get(0).getId(); } - Guid bestHost = runFunctions(policy.getFunctions(), vdsList, parameters); + Guid bestHost = runFunctions(policy.getFunctions(), vdsList, vm, parameters); if (bestHost != null) { getVdsDynamicDao().updatePartialVdsDynamicCalc( bestHost, @@ -208,7 +209,7 @@ updateInitialHostList(vdsList, vdsBlackList, true); updateInitialHostList(vdsList, vdsWhiteList, false); ClusterPolicy policy = policyMap.get(cluster.getClusterPolicyId()); - Map<String, Object> parameters = createClusterPolicyParameters(cluster, vm); + Map<String, String> parameters = createClusterPolicyParameters(cluster); if (destVdsId != null) { if (checkDestinationHost(vm, vdsList, @@ -225,6 +226,7 @@ vdsList = runFilters(policy.getFilters(), vdsList, + vm, parameters, policy.getFilterPositionMap(), messages, @@ -240,7 +242,7 @@ Guid destVdsId, List<String> messages, ClusterPolicy policy, - Map<String, Object> parameters, + Map<String, String> parameters, VdsFreeMemoryChecker memoryChecker) { List<VDS> destVdsList = new ArrayList<VDS>(); for (VDS vds : vdsList) { @@ -252,6 +254,7 @@ destVdsList = runFilters(policy.getFilters(), destVdsList, + vm, parameters, policy.getFilterPositionMap(), messages, @@ -259,11 +262,8 @@ return destVdsList != null && destVdsList.size() == 1; } - protected Map<String, Object> createClusterPolicyParameters(VDSGroup cluster, VM vm) { - Map<String, Object> parameters = new HashMap<String, Object>(); - if (vm != null) { - parameters.put(PolicyUnitImpl.VM, vm); - } + protected Map<String, String> createClusterPolicyParameters(VDSGroup cluster) { + Map<String, String> parameters = new HashMap<String, String>(); if (cluster.getClusterPolicyProperties() != null) { parameters.putAll(cluster.getClusterPolicyProperties()); } @@ -285,7 +285,8 @@ private List<VDS> runFilters(ArrayList<Guid> filters, List<VDS> hostList, - Map<String, Object> parameters, + VM vm, + Map<String, String> parameters, Map<Guid, Integer> filterPositionMap, List<String> messages, VdsFreeMemoryChecker memoryChecker) { if (filters != null) { @@ -296,7 +297,7 @@ } PolicyUnitImpl filterPolicyUnit = policyUnits.get(filter); filterPolicyUnit.setMemoryChecker(memoryChecker); - hostList = filterPolicyUnit.filter(hostList, parameters, messages); + hostList = filterPolicyUnit.filter(hostList, vm, parameters, messages); } } return hostList; @@ -325,10 +326,11 @@ protected Guid runFunctions(ArrayList<Pair<Guid, Integer>> functions, List<VDS> hostList, - Map<String, Object> parameters) { + VM vm, + Map<String, String> parameters) { Map<Guid, Integer> hostCostTable = new HashMap<Guid, Integer>(); for (Pair<Guid, Integer> pair : functions) { - List<Pair<Guid, Integer>> scoreResult = policyUnits.get(pair.getFirst()).score(hostList, parameters); + List<Pair<Guid, Integer>> scoreResult = policyUnits.get(pair.getFirst()).score(hostList, vm, parameters); for (Pair<Guid, Integer> result : scoreResult) { Guid hostId = result.getFirst(); if (hostCostTable.get(hostId) == null) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/CPUPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/CPUPolicyUnit.java index 633bec8..0c54ee1 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/CPUPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/CPUPolicyUnit.java @@ -18,8 +18,7 @@ } @Override - public List<VDS> filter(List<VDS> hosts, Map<String, Object> parameters, List<String> messages) { - VM vm = (VM) parameters.get(PolicyUnitImpl.VM); + public List<VDS> filter(List<VDS> hosts, VM vm, Map<String, String> parameters, List<String> messages) { List<VDS> list = new ArrayList<VDS>(); for (VDS vds : hosts) { Integer cores = SlaValidator.getInstance().getEffectiveCpuCores(vds); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/EvenDistributionPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/EvenDistributionPolicyUnit.java index 2bade5e..b3d0463 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/EvenDistributionPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/EvenDistributionPolicyUnit.java @@ -34,7 +34,7 @@ } @Override - public List<Pair<Guid, Integer>> score(List<VDS> hosts, Map<String, Object> parameters) { + public List<Pair<Guid, Integer>> score(List<VDS> hosts, VM vm, Map<String, String> parameters) { List<Pair<Guid, Integer>> scores = new ArrayList<Pair<Guid, Integer>>(); for (VDS vds : hosts) { scores.add(new Pair<Guid, Integer>(vds.getId(), vds.getUsageCpuPercent())); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MemoryPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MemoryPolicyUnit.java index d99d508..16c8438 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MemoryPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MemoryPolicyUnit.java @@ -20,8 +20,7 @@ } @Override - public List<VDS> filter(List<VDS> hosts, Map<String, Object> parameters, List<String> messages) { - VM vm = (VM) parameters.get(PolicyUnitImpl.VM); + public List<VDS> filter(List<VDS> hosts, VM vm, Map<String, String> parameters, List<String> messages) { List<VDS> list = new ArrayList<>(); // If Vm in Paused mode - no additional memory allocation needed if (vm.getStatus() == VMStatus.Paused) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationDomainPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationDomainPolicyUnit.java index d8cb4fc..1c26c62 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationDomainPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationDomainPolicyUnit.java @@ -18,8 +18,7 @@ } @Override - public List<VDS> filter(List<VDS> hosts, Map<String, Object> parameters, List<String> messages) { - VM vm = (VM) parameters.get(PolicyUnitImpl.VM); + public List<VDS> filter(List<VDS> hosts, VM vm, Map<String, String> parameters, List<String> messages) { List<VDS> toRemoveHostList = new ArrayList<VDS>(); for (VDS host : hosts) { if ((!host.getVdsGroupId().equals(vm.getVdsGroupId())) || (host.getStatus() != VDSStatus.Up)) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationPolicyUnit.java index fdb457e..e6012fb 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/MigrationPolicyUnit.java @@ -15,8 +15,7 @@ } @Override - public List<VDS> filter(List<VDS> hosts, Map<String, Object> parameters, List<String> messages) { - VM vm = (VM) parameters.get(PolicyUnitImpl.VM); + public List<VDS> filter(List<VDS> hosts, VM vm, Map<String, String> parameters, List<String> messages) { if (vm.getRunOnVds() != null) { for (VDS host : hosts) { if (host.getId().equals(vm.getRunOnVds())) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java index 987cf0d..4cb0a00 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NetworkPolicyUnit.java @@ -30,8 +30,7 @@ private Network displayNetwork; @Override - public List<VDS> filter(List<VDS> hosts, Map<String, Object> parameters, List<String> messages) { - VM vm = (VM) parameters.get(PolicyUnitImpl.VM); + public List<VDS> filter(List<VDS> hosts, VM vm, Map<String, String> parameters, List<String> messages) { List<VDS> toRemoveHostList = new ArrayList<VDS>(); List<VmNetworkInterface> vmNICs; List<Network> clusterNetworks; diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NonePolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NonePolicyUnit.java index fac67fb..95d2a0c 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NonePolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/NonePolicyUnit.java @@ -7,6 +7,7 @@ import org.ovirt.engine.core.bll.scheduling.PolicyUnitImpl; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.scheduling.PolicyUnit; import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.compat.Guid; @@ -18,7 +19,7 @@ } @Override - public List<Pair<Guid, Integer>> score(List<VDS> hosts, Map<String, Object> parameters) { + public List<Pair<Guid, Integer>> score(List<VDS> hosts, VM vm, Map<String, String> parameters) { List<Pair<Guid, Integer>> list = new ArrayList<Pair<Guid, Integer>>(); for (VDS host : hosts) { list.add(new Pair<Guid, Integer>(host.getId(), 1)); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PinToHostPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PinToHostPolicyUnit.java index fde1948..22c8491 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PinToHostPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PinToHostPolicyUnit.java @@ -17,8 +17,7 @@ } @Override - public List<VDS> filter(List<VDS> hosts, Map<String, Object> parameters, List<String> messages) { - VM vm = (VM) parameters.get(PolicyUnitImpl.VM); + public List<VDS> filter(List<VDS> hosts, VM vm, Map<String, String> parameters, List<String> messages) { if (vm.getMigrationSupport() == MigrationSupport.PINNED_TO_HOST) { for (VDS host : hosts) { if (host.getId().equals(vm.getDedicatedVmForVds())) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PowerSavingPolicyUnit.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PowerSavingPolicyUnit.java index a5e3ddf..b8ba2aa 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PowerSavingPolicyUnit.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/scheduling/policyunits/PowerSavingPolicyUnit.java @@ -9,6 +9,7 @@ import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; +import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.config.Config; import org.ovirt.engine.core.common.config.ConfigValues; import org.ovirt.engine.core.common.scheduling.PolicyUnit; @@ -24,7 +25,7 @@ } @Override - public List<Pair<Guid, Integer>> score(List<VDS> hosts, Map<String, Object> parameters) { + public List<Pair<Guid, Integer>> score(List<VDS> hosts, VM vm, Map<String, String> parameters) { List<Pair<Guid, Integer>> scores = new ArrayList<Pair<Guid, Integer>>(); for (VDS vds : hosts) { scores.add(new Pair<Guid, Integer>(vds.getId(), 100 - vds.getUsageCpuPercent())); -- To view, visit http://gerrit.ovirt.org/17755 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie0475218e2b66fcd48faf0b92ac2873c4b448c0e Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Gilad Chaplik <gchap...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches