Repository: cloudstack Updated Branches: refs/heads/4.4-forward 2d96ad987 -> 43e479d23
CLOUDSTACK-6907: lisVolumes - make a decision whether to set service or disk offering in the response, based on the DiskOfferingVO type entry, not the volume Type Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/43e479d2 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/43e479d2 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/43e479d2 Branch: refs/heads/4.4-forward Commit: 43e479d238649e3ab61259b6b57e56152f1ecb29 Parents: 2d96ad9 Author: Alena Prokharchyk <alena.prokharc...@citrix.com> Authored: Thu Jun 12 16:14:31 2014 -0700 Committer: Alena Prokharchyk <alena.prokharc...@citrix.com> Committed: Thu Jun 12 16:16:04 2014 -0700 ---------------------------------------------------------------------- server/src/com/cloud/api/ApiDBUtils.java | 6 +++++- .../cloud/api/query/dao/VolumeJoinDaoImpl.java | 20 ++++++++++++++------ 2 files changed, 19 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/43e479d2/server/src/com/cloud/api/ApiDBUtils.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/ApiDBUtils.java b/server/src/com/cloud/api/ApiDBUtils.java index 153d998..90a09a0 100755 --- a/server/src/com/cloud/api/ApiDBUtils.java +++ b/server/src/com/cloud/api/ApiDBUtils.java @@ -900,7 +900,11 @@ public class ApiDBUtils { } public static DiskOfferingVO findDiskOfferingById(Long diskOfferingId) { - return s_diskOfferingDao.findByIdIncludingRemoved(diskOfferingId); + DiskOfferingVO off = s_diskOfferingDao.findByIdIncludingRemoved(diskOfferingId); + if (off.getType() == DiskOfferingVO.Type.Disk) { + return off; + } + return null; } public static DomainVO findDomainById(Long domainId) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/43e479d2/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java index 9e1ee37..24d0922 100644 --- a/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/VolumeJoinDaoImpl.java @@ -22,13 +22,12 @@ import java.util.List; import javax.ejb.Local; import javax.inject.Inject; -import org.apache.log4j.Logger; -import org.springframework.stereotype.Component; - import org.apache.cloudstack.api.ResponseObject.ResponseView; import org.apache.cloudstack.api.response.VolumeResponse; import org.apache.cloudstack.context.CallContext; import org.apache.cloudstack.framework.config.dao.ConfigurationDao; +import org.apache.log4j.Logger; +import org.springframework.stereotype.Component; import com.cloud.api.ApiDBUtils; import com.cloud.api.ApiResponseHelper; @@ -152,19 +151,28 @@ public class VolumeJoinDaoImpl extends GenericDaoBase<VolumeJoinVO, Long> implem // DiskOfferingVO diskOffering = // ApiDBUtils.findDiskOfferingById(volume.getDiskOfferingId()); if (volume.getDiskOfferingId() > 0) { + boolean isServiceOffering = false; if (volume.getVolumeType().equals(Volume.Type.ROOT)) { - volResponse.setServiceOfferingId(volume.getDiskOfferingUuid()); + isServiceOffering = true; } else { - volResponse.setDiskOfferingId(volume.getDiskOfferingUuid()); + // 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 (volume.getVolumeType().equals(Volume.Type.ROOT)) { + if (isServiceOffering) { + volResponse.setServiceOfferingId(volume.getDiskOfferingUuid()); volResponse.setServiceOfferingName(volume.getDiskOfferingName()); volResponse.setServiceOfferingDisplayText(volume.getDiskOfferingDisplayText()); } else { + volResponse.setDiskOfferingId(volume.getDiskOfferingUuid()); volResponse.setDiskOfferingName(volume.getDiskOfferingName()); volResponse.setDiskOfferingDisplayText(volume.getDiskOfferingDisplayText()); } + volResponse.setStorageType(volume.isUseLocalStorage() ? ServiceOffering.StorageType.local.toString() : ServiceOffering.StorageType.shared.toString()); volResponse.setBytesReadRate(volume.getBytesReadRate()); volResponse.setBytesWriteRate(volume.getBytesReadRate());