diff --git a/api/src/com/cloud/api/response/VolumeResponse.java b/api/src/com/cloud/api/response/VolumeResponse.java old mode 100644 new mode 100755 index f415077a648..144418deb9a --- a/api/src/com/cloud/api/response/VolumeResponse.java +++ b/api/src/com/cloud/api/response/VolumeResponse.java @@ -120,6 +120,9 @@ public class VolumeResponse extends BaseResponse { @SerializedName("serviceofferingdisplaytext") @Param(description="the display text of the service offering for root disk") private String serviceOfferingDisplayText; + @SerializedName("isextractable") @Param(description="true if the volume is extractable, false otherwise") + private Boolean extractable; + public Long getObjectId() { return getId(); } @@ -379,4 +382,12 @@ public class VolumeResponse extends BaseResponse { public void setServiceOfferingDisplayText(String serviceOfferingDisplayText) { this.serviceOfferingDisplayText = serviceOfferingDisplayText; } + + public Boolean getExtractable() { + return extractable; + } + + public void setExtractable(Boolean extractable) { + this.extractable = extractable; + } } diff --git a/server/src/com/cloud/api/ApiResponseHelper.java b/server/src/com/cloud/api/ApiResponseHelper.java old mode 100644 new mode 100755 index e8baf8d2065..ff9f77b9140 --- a/server/src/com/cloud/api/ApiResponseHelper.java +++ b/server/src/com/cloud/api/ApiResponseHelper.java @@ -803,6 +803,9 @@ public class ApiResponseHelper implements ResponseGenerator { volResponse.setHypervisor(ApiDBUtils.getVolumeHyperType(volume.getId()).toString()); volResponse.setAttached(volume.getAttached()); volResponse.setDestroyed(volume.getDestroyed()); + VMTemplateVO template = ApiDBUtils.findTemplateById(volume.getTemplateId()); + boolean isExtractable = template != null&& template.isExtractable()&& !(template.getTemplateType()== TemplateType.SYSTEM); + volResponse.setExtractable(isExtractable); volResponse.setObjectName("volume"); return volResponse; } @@ -1335,6 +1338,7 @@ public class ApiResponseHelper implements ResponseGenerator { templateResponse.setReady(templateHostRef.getDownloadState()==Status.DOWNLOADED); templateResponse.setFeatured(template.isFeatured()); + templateResponse.setExtractable(template.isExtractable() && !(template.getTemplateType()== TemplateType.SYSTEM)); templateResponse.setPasswordEnabled(template.getEnablePassword()); templateResponse.setCrossZones(template.isCrossZones()); templateResponse.setFormat(template.getFormat()); @@ -1851,6 +1855,7 @@ public class ApiResponseHelper implements ResponseGenerator { isoResponse.setName(iso.getName()); isoResponse.setDisplayText(iso.getDisplayText()); isoResponse.setPublic(iso.isPublicTemplate()); + isoResponse.setExtractable(iso.isExtractable() && !(iso.getTemplateType()== TemplateType.PERHOST)); isoResponse.setReady(true); isoResponse.setBootable(iso.isBootable()); isoResponse.setFeatured(iso.isFeatured()); @@ -1875,6 +1880,7 @@ public class ApiResponseHelper implements ResponseGenerator { isoResponse.setName(iso.getName()); isoResponse.setDisplayText(iso.getDisplayText()); isoResponse.setPublic(iso.isPublicTemplate()); + isoResponse.setExtractable(iso.isExtractable() && !(iso.getTemplateType()== TemplateType.PERHOST)); isoResponse.setCreated(isoHost.getCreated()); isoResponse.setReady(isoHost.getDownloadState() == Status.DOWNLOADED); isoResponse.setBootable(iso.isBootable());