From 25cc9eb8695672fcdb9a7c36953a2a9246fde23b Mon Sep 17 00:00:00 2001 From: Prachi Damle Date: Sat, 10 Aug 2013 12:11:56 -0700 Subject: [PATCH] CLOUDSTACK-4234:Dedicated Resources: When multiple dedication groups are chosen for VM deployment, dedicated resources belonging to both groups should be considered Changes: - Do not add the dedicated resource to avoid list if it is present in the list of resources to consider for the deployment. --- .../affinity/ExplicitDedicationProcessor.java | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/plugins/affinity-group-processors/explicit-dedication/src/org/apache/cloudstack/affinity/ExplicitDedicationProcessor.java b/plugins/affinity-group-processors/explicit-dedication/src/org/apache/cloudstack/affinity/ExplicitDedicationProcessor.java index db8e189a82a..b3c7b2b302e 100644 --- a/plugins/affinity-group-processors/explicit-dedication/src/org/apache/cloudstack/affinity/ExplicitDedicationProcessor.java +++ b/plugins/affinity-group-processors/explicit-dedication/src/org/apache/cloudstack/affinity/ExplicitDedicationProcessor.java @@ -277,7 +277,7 @@ public class ExplicitDedicationProcessor extends AffinityProcessorBase implement List hostList = _hostDao.findByClusterId(dr.getClusterId()); for (HostVO host : hostList) { DedicatedResourceVO dHost = _dedicatedDao.findByHostId(host.getId()); - if (dHost != null) { + if (dHost != null && !dedicatedResources.contains(dHost)) { avoidList.addHost(host.getId()); } else { includeList.addHost(host.getId()); @@ -292,7 +292,8 @@ public class ExplicitDedicationProcessor extends AffinityProcessorBase implement //add all cluster under this pod in includeList List clusterList = _clusterDao.listByPodId(dr.getPodId()); for (ClusterVO cluster : clusterList) { - if (_dedicatedDao.findByClusterId(cluster.getId()) != null) { + DedicatedResourceVO dCluster = _dedicatedDao.findByClusterId(cluster.getId()); + if (dCluster != null && !dedicatedResources.contains(dCluster)) { avoidList.addCluster(cluster.getId()); } else { includeList.addCluster(cluster.getId()); @@ -301,7 +302,8 @@ public class ExplicitDedicationProcessor extends AffinityProcessorBase implement //add all hosts inside this pod in includeList List hostList = _hostDao.findByPodId(dr.getPodId()); for (HostVO host : hostList) { - if (_dedicatedDao.findByHostId(host.getId()) != null) { + DedicatedResourceVO dHost = _dedicatedDao.findByHostId(host.getId()); + if (dHost != null && !dedicatedResources.contains(dHost)) { avoidList.addHost(host.getId()); } else { includeList.addHost(host.getId()); @@ -314,7 +316,8 @@ public class ExplicitDedicationProcessor extends AffinityProcessorBase implement //add all Pod under this data center in includeList List podList = _podDao.listByDataCenterId(dr.getDataCenterId()); for (HostPodVO pod : podList) { - if (_dedicatedDao.findByPodId(pod.getId()) != null) { + DedicatedResourceVO dPod = _dedicatedDao.findByPodId(pod.getId()); + if (dPod != null && !dedicatedResources.contains(dPod)) { avoidList.addPod(pod.getId()); } else { includeList.addPod(pod.getId()); @@ -322,7 +325,8 @@ public class ExplicitDedicationProcessor extends AffinityProcessorBase implement } List clusterList = _clusterDao.listClustersByDcId(dr.getDataCenterId()); for (ClusterVO cluster : clusterList) { - if (_dedicatedDao.findByClusterId(cluster.getId()) != null) { + DedicatedResourceVO dCluster = _dedicatedDao.findByClusterId(cluster.getId()); + if (dCluster != null && !dedicatedResources.contains(dCluster)) { avoidList.addCluster(cluster.getId()); } else { includeList.addCluster(cluster.getId()); @@ -331,7 +335,8 @@ public class ExplicitDedicationProcessor extends AffinityProcessorBase implement //add all hosts inside this in includeList List hostList = _hostDao.listByDataCenterId(dr.getDataCenterId()); for (HostVO host : hostList) { - if (_dedicatedDao.findByHostId(host.getId()) != null) { + DedicatedResourceVO dHost = _dedicatedDao.findByHostId(host.getId()); + if (dHost != null && !dedicatedResources.contains(dHost)) { avoidList.addHost(host.getId()); } else { includeList.addHost(host.getId());