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.


Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/25cc9eb8
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/25cc9eb8
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/25cc9eb8

Branch: refs/heads/master
Commit: 25cc9eb8695672fcdb9a7c36953a2a9246fde23b
Parents: 2ce2552
Author: Prachi Damle <[email protected]>
Authored: Sat Aug 10 12:11:56 2013 -0700
Committer: Prachi Damle <[email protected]>
Committed: Tue Sep 3 20:02:50 2013 -0700

----------------------------------------------------------------------
 .../affinity/ExplicitDedicationProcessor.java      | 17 +++++++++++------
 1 file changed, 11 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cloudstack/blob/25cc9eb8/plugins/affinity-group-processors/explicit-dedication/src/org/apache/cloudstack/affinity/ExplicitDedicationProcessor.java
----------------------------------------------------------------------
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 db8e189..b3c7b2b 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<HostVO> 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<ClusterVO> 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<HostVO> 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<HostPodVO> 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<ClusterVO> 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<HostVO> 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());

Reply via email to