Search in sources :

Example 1 with ChildTemplateResponse

use of org.apache.cloudstack.api.response.ChildTemplateResponse in project cloudstack by apache.

the class TemplateJoinDaoImpl method newTemplateResponse.

@Override
public TemplateResponse newTemplateResponse(EnumSet<ApiConstants.DomainDetails> detailsView, ResponseView view, TemplateJoinVO template) {
    List<ImageStoreVO> storesInZone = dataStoreDao.listStoresByZoneId(template.getDataCenterId());
    Long[] storeIds = storesInZone.stream().map(ImageStoreVO::getId).toArray(Long[]::new);
    List<TemplateDataStoreVO> templatesInStore = _templateStoreDao.listByTemplateNotBypassed(template.getId(), storeIds);
    List<Map<String, String>> downloadProgressDetails = new ArrayList<>();
    HashMap<String, String> downloadDetailInImageStores = null;
    for (TemplateDataStoreVO templateInStore : templatesInStore) {
        downloadDetailInImageStores = new HashMap<>();
        ImageStoreVO datastore = dataStoreDao.findById(templateInStore.getDataStoreId());
        if (datastore != null) {
            downloadDetailInImageStores.put("datastore", datastore.getName());
            downloadDetailInImageStores.put("downloadPercent", Integer.toString(templateInStore.getDownloadPercent()));
            downloadDetailInImageStores.put("downloadState", (templateInStore.getDownloadState() != null ? templateInStore.getDownloadState().toString() : ""));
            downloadProgressDetails.add(downloadDetailInImageStores);
        }
    }
    TemplateResponse templateResponse = new TemplateResponse();
    templateResponse.setDownloadProgress(downloadProgressDetails);
    templateResponse.setId(template.getUuid());
    templateResponse.setName(template.getName());
    templateResponse.setDisplayText(template.getDisplayText());
    templateResponse.setPublic(template.isPublicTemplate());
    templateResponse.setCreated(template.getCreatedOnStore());
    if (template.getFormat() == Storage.ImageFormat.BAREMETAL) {
        // for baremetal template, we didn't download, but is ready to use.
        templateResponse.setReady(true);
    } else {
        templateResponse.setReady(template.getState() == ObjectInDataStoreStateMachine.State.Ready);
    }
    templateResponse.setFeatured(template.isFeatured());
    templateResponse.setExtractable(template.isExtractable() && !(template.getTemplateType() == TemplateType.SYSTEM));
    templateResponse.setPasswordEnabled(template.isEnablePassword());
    templateResponse.setDynamicallyScalable(template.isDynamicallyScalable());
    templateResponse.setSshKeyEnabled(template.isEnableSshKey());
    templateResponse.setCrossZones(template.isCrossZones());
    templateResponse.setFormat(template.getFormat());
    if (template.getTemplateType() != null) {
        templateResponse.setTemplateType(template.getTemplateType().toString());
    }
    templateResponse.setHypervisor(template.getHypervisorType().toString());
    templateResponse.setOsTypeId(template.getGuestOSUuid());
    templateResponse.setOsTypeName(template.getGuestOSName());
    // populate owner.
    ApiResponseHelper.populateOwner(templateResponse, template);
    // populate domain
    templateResponse.setDomainId(template.getDomainUuid());
    templateResponse.setDomainName(template.getDomainName());
    // If the user is an 'Admin' or 'the owner of template' or template belongs to a project, add the template download status
    if (view == ResponseView.Full || template.getAccountId() == CallContext.current().getCallingAccount().getId() || template.getAccountType() == Account.ACCOUNT_TYPE_PROJECT) {
        String templateStatus = getTemplateStatus(template);
        if (templateStatus != null) {
            templateResponse.setStatus(templateStatus);
        }
        templateResponse.setUrl(template.getUrl());
    }
    if (template.getDataCenterId() > 0) {
        templateResponse.setZoneId(template.getDataCenterUuid());
        templateResponse.setZoneName(template.getDataCenterName());
    }
    Long templateSize = template.getSize();
    if (templateSize > 0) {
        templateResponse.setSize(templateSize);
    }
    Long templatePhysicalSize = template.getPhysicalSize();
    if (templatePhysicalSize > 0) {
        templateResponse.setPhysicalSize(templatePhysicalSize);
    }
    templateResponse.setChecksum(DigestHelper.getHashValueFromChecksumValue(template.getChecksum()));
    if (template.getSourceTemplateId() != null) {
        templateResponse.setSourceTemplateId(template.getSourceTemplateUuid());
    }
    templateResponse.setTemplateTag(template.getTemplateTag());
    if (template.getParentTemplateId() != null) {
        templateResponse.setParentTemplateId(template.getParentTemplateUuid());
    }
    // set details map
    if (detailsView.contains(ApiConstants.DomainDetails.all)) {
        Map<String, String> details = _templateDetailsDao.listDetailsKeyPairs(template.getId());
        templateResponse.setDetails(details);
        setDeployAsIsDetails(template, templateResponse);
    }
    // update tag information
    long tag_id = template.getTagId();
    if (tag_id > 0) {
        addTagInformation(template, templateResponse);
    }
    templateResponse.setHasAnnotation(annotationDao.hasAnnotations(template.getUuid(), AnnotationService.EntityType.TEMPLATE.name(), _accountService.isRootAdmin(CallContext.current().getCallingAccount().getId())));
    templateResponse.setDirectDownload(template.isDirectDownload());
    templateResponse.setDeployAsIs(template.isDeployAsIs());
    templateResponse.setRequiresHvm(template.isRequiresHvm());
    // set template children disks
    Set<ChildTemplateResponse> childTemplatesSet = new HashSet<ChildTemplateResponse>();
    if (template.getHypervisorType() == HypervisorType.VMware) {
        List<VMTemplateVO> childTemplates = _vmTemplateDao.listByParentTemplatetId(template.getId());
        for (VMTemplateVO tmpl : childTemplates) {
            if (tmpl.getTemplateType() != TemplateType.ISODISK) {
                ChildTemplateResponse childTempl = new ChildTemplateResponse();
                childTempl.setId(tmpl.getUuid());
                childTempl.setName(tmpl.getName());
                childTempl.setSize(Math.round(tmpl.getSize() / (1024 * 1024 * 1024)));
                childTemplatesSet.add(childTempl);
            }
        }
        templateResponse.setChildTemplates(childTemplatesSet);
    }
    templateResponse.setObjectName("template");
    return templateResponse;
}
Also used : ChildTemplateResponse(org.apache.cloudstack.api.response.ChildTemplateResponse) ArrayList(java.util.ArrayList) VMTemplateVO(com.cloud.storage.VMTemplateVO) TemplateDataStoreVO(org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO) TemplateResponse(org.apache.cloudstack.api.response.TemplateResponse) ChildTemplateResponse(org.apache.cloudstack.api.response.ChildTemplateResponse) ImageStoreVO(org.apache.cloudstack.storage.datastore.db.ImageStoreVO) HashMap(java.util.HashMap) Map(java.util.Map) HashSet(java.util.HashSet)

Aggregations

VMTemplateVO (com.cloud.storage.VMTemplateVO)1 ArrayList (java.util.ArrayList)1 HashMap (java.util.HashMap)1 HashSet (java.util.HashSet)1 Map (java.util.Map)1 ChildTemplateResponse (org.apache.cloudstack.api.response.ChildTemplateResponse)1 TemplateResponse (org.apache.cloudstack.api.response.TemplateResponse)1 ImageStoreVO (org.apache.cloudstack.storage.datastore.db.ImageStoreVO)1 TemplateDataStoreVO (org.apache.cloudstack.storage.datastore.db.TemplateDataStoreVO)1