From 0f565f2167981071962b629cb550f9a1973c8fa4 Mon Sep 17 00:00:00 2001 From: Prachi Damle Date: Fri, 5 Apr 2013 17:01:06 -0700 Subject: [PATCH] Fixes to de-couple the AffinityGroupResponse from UserVmResponse, since ApiDiscoveryService breaks, if we nest two response objects into each other. --- .../affinity/AffinityGroupResponse.java | 18 +++++++++------- .../query/dao/AffinityGroupJoinDaoImpl.java | 21 ++++--------------- setup/db/db/schema-410to420.sql | 3 ++- 3 files changed, 16 insertions(+), 26 deletions(-) diff --git a/api/src/org/apache/cloudstack/affinity/AffinityGroupResponse.java b/api/src/org/apache/cloudstack/affinity/AffinityGroupResponse.java index 1ae7c59a0ef..afd33da84b7 100644 --- a/api/src/org/apache/cloudstack/affinity/AffinityGroupResponse.java +++ b/api/src/org/apache/cloudstack/affinity/AffinityGroupResponse.java @@ -16,8 +16,10 @@ // under the License. package org.apache.cloudstack.affinity; +import java.util.ArrayList; import java.util.HashSet; import java.util.LinkedHashSet; +import java.util.List; import java.util.Set; import org.apache.cloudstack.api.ApiConstants; @@ -57,12 +59,12 @@ public class AffinityGroupResponse extends BaseResponse implements ControlledVie @Param(description = "the type of the affinity group") private String type; - @SerializedName("virtualmachine") - @Param(description = "virtual machines associated with this affinity group ", responseObject = UserVmResponse.class) - private Set vmList; + @SerializedName("virtualmachineIds") + @Param(description = "virtual machine Ids associated with this affinity group ") + private List vmIdList; public AffinityGroupResponse() { - this.vmList = new LinkedHashSet(); + this.vmIdList = new ArrayList(); } @Override @@ -142,12 +144,12 @@ public class AffinityGroupResponse extends BaseResponse implements ControlledVie } - public void setVMList(Set vmList) { - this.vmList = vmList; + public void setVMIdList(List vmIdList) { + this.vmIdList = vmIdList; } - public void addVM(UserVmResponse vm) { - this.vmList.add(vm); + public void addVMId(String vmId) { + this.vmIdList.add(vmId); } } diff --git a/server/src/com/cloud/api/query/dao/AffinityGroupJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/AffinityGroupJoinDaoImpl.java index 98c6440db77..a17679313d6 100644 --- a/server/src/com/cloud/api/query/dao/AffinityGroupJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/AffinityGroupJoinDaoImpl.java @@ -25,13 +25,10 @@ import javax.inject.Inject; import org.apache.cloudstack.affinity.AffinityGroup; import org.apache.cloudstack.affinity.AffinityGroupResponse; -import org.apache.cloudstack.api.response.UserVmResponse; import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; import com.cloud.api.ApiResponseHelper; import com.cloud.api.query.vo.AffinityGroupJoinVO; import com.cloud.configuration.dao.ConfigurationDao; -import com.cloud.user.Account; import com.cloud.utils.db.GenericDaoBase; import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; @@ -72,13 +69,9 @@ public class AffinityGroupJoinDaoImpl extends GenericDaoBase 0) { - UserVmResponse resp = new UserVmResponse(); - resp.setObjectName("virtualmachine"); - resp.setId(vag.getVmUuid()); - resp.setName(vag.getVmName()); - resp.setDisplayName(vag.getVmDisplayName()); - resp.setState(vag.getVmState().toString()); - agResponse.addVM(resp); + List vmIdList = new ArrayList(); + vmIdList.add(vag.getVmUuid()); + agResponse.setVMIdList(vmIdList); } agResponse.setObjectName("affinitygroup"); @@ -90,13 +83,7 @@ public class AffinityGroupJoinDaoImpl extends GenericDaoBase 0) { - UserVmResponse resp = new UserVmResponse(); - resp.setObjectName("virtualmachine"); - resp.setId(vag.getVmUuid()); - resp.setName(vag.getVmName()); - resp.setDisplayName(vag.getVmDisplayName()); - resp.setState(vag.getVmState().toString()); - vagData.addVM(resp); + vagData.addVMId(vag.getVmUuid()); } return vagData; } diff --git a/setup/db/db/schema-410to420.sql b/setup/db/db/schema-410to420.sql index ae08ebed7aa..92b2d9c863c 100644 --- a/setup/db/db/schema-410to420.sql +++ b/setup/db/db/schema-410to420.sql @@ -162,7 +162,8 @@ CREATE TABLE `cloud`.`affinity_group_vm_map` ( `affinity_group_id` bigint unsigned NOT NULL, `instance_id` bigint unsigned NOT NULL, PRIMARY KEY (`id`), - CONSTRAINT `fk_agvm__group_id` FOREIGN KEY(`affinity_group_id`) REFERENCES `affinity_group`(`id`) + CONSTRAINT `fk_agvm__group_id` FOREIGN KEY(`affinity_group_id`) REFERENCES `affinity_group`(`id`) ON DELETE CASCADE, + CONSTRAINT `fk_affinity_group_vm_map___instance_id` FOREIGN KEY(`instance_id`) REFERENCES `user_vm` (`id`) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;