From 8e31d1e650bd9e92d8f79d639f2dafdb894ac3e6 Mon Sep 17 00:00:00 2001 From: Abhishek Kumar Date: Tue, 27 Apr 2021 21:54:24 +0530 Subject: [PATCH] api: fix disk/service offering keys (#4946) Volume can either have an associated disk offering (for DATA disks & ROOT disks for VMs created from ISO) or a compute/service offering (for ROOT disks of VMs created from templates). This fix simplifies and fixes check to return the appropriate response keys in these cases. Signed-off-by: Abhishek Kumar --- .../src/main/java/com/cloud/api/ApiDBUtils.java | 8 ++++++-- .../cloud/api/query/dao/VolumeJoinDaoImpl.java | 16 +--------------- 2 files changed, 7 insertions(+), 17 deletions(-) diff --git a/server/src/main/java/com/cloud/api/ApiDBUtils.java b/server/src/main/java/com/cloud/api/ApiDBUtils.java index d7445927f37..5ee39cf2d5e 100644 --- a/server/src/main/java/com/cloud/api/ApiDBUtils.java +++ b/server/src/main/java/com/cloud/api/ApiDBUtils.java @@ -27,8 +27,6 @@ import java.util.Set; import javax.annotation.PostConstruct; import javax.inject.Inject; -import com.cloud.vm.NicVO; -import com.cloud.vm.dao.NicDao; import org.apache.cloudstack.acl.Role; import org.apache.cloudstack.acl.RoleService; import org.apache.cloudstack.affinity.AffinityGroup; @@ -318,6 +316,7 @@ import com.cloud.vm.DomainRouterVO; import com.cloud.vm.InstanceGroup; import com.cloud.vm.InstanceGroupVO; import com.cloud.vm.NicProfile; +import com.cloud.vm.NicVO; import com.cloud.vm.UserVmDetailVO; import com.cloud.vm.UserVmManager; import com.cloud.vm.UserVmVO; @@ -327,6 +326,7 @@ import com.cloud.vm.VmDetailConstants; import com.cloud.vm.VmStats; import com.cloud.vm.dao.ConsoleProxyDao; import com.cloud.vm.dao.DomainRouterDao; +import com.cloud.vm.dao.NicDao; import com.cloud.vm.dao.NicSecondaryIpDao; import com.cloud.vm.dao.NicSecondaryIpVO; import com.cloud.vm.dao.UserVmDao; @@ -1117,6 +1117,10 @@ public class ApiDBUtils { return s_serviceOfferingDao.findByIdIncludingRemoved(serviceOfferingId); } + public static ServiceOffering findServiceOfferingByUuid(String serviceOfferingUuid) { + return s_serviceOfferingDao.findByUuidIncludingRemoved(serviceOfferingUuid); + } + public static ServiceOfferingDetailsVO findServiceOfferingDetail(long serviceOfferingId, String key) { return s_serviceOfferingDetailsDao.findDetail(serviceOfferingId, key); } diff --git a/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java b/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java index 2ee0ca1b1f4..6cbc834c408 100644 --- a/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java +++ b/server/src/main/java/com/cloud/api/query/dao/VolumeJoinDaoImpl.java @@ -176,22 +176,8 @@ public class VolumeJoinDaoImpl extends GenericDaoBaseWithTagInformation 0) { - boolean isServiceOffering = false; - if (volume.getVolumeType().equals(Volume.Type.ROOT)) { - isServiceOffering = true; - } else { - // can't rely on the fact that the volume is the datadisk as it might have been created as a root, and - // then detached later - long offeringId = volume.getDiskOfferingId(); - if (ApiDBUtils.findDiskOfferingById(offeringId) == null) { - isServiceOffering = true; - } - } - - if (isServiceOffering) { + if (ApiDBUtils.findServiceOfferingByUuid(volume.getDiskOfferingUuid()) != null) { volResponse.setServiceOfferingId(volume.getDiskOfferingUuid()); volResponse.setServiceOfferingName(volume.getDiskOfferingName()); volResponse.setServiceOfferingDisplayText(volume.getDiskOfferingDisplayText());