diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java index c249880d51e..9a80082da68 100644 --- a/server/src/com/cloud/api/query/QueryManagerImpl.java +++ b/server/src/com/cloud/api/query/QueryManagerImpl.java @@ -133,6 +133,7 @@ import com.cloud.server.TaggedResourceService; import com.cloud.service.ServiceOfferingVO; import com.cloud.service.dao.ServiceOfferingDao; import com.cloud.storage.Storage.ImageFormat; +import com.cloud.storage.Storage.TemplateType; import com.cloud.storage.dao.VMTemplateDao; import com.cloud.storage.dao.VolumeDetailsDao; import com.cloud.template.VirtualMachineTemplate.TemplateFilter; @@ -2834,7 +2835,14 @@ public class QueryManagerImpl extends ManagerBase implements QueryService { } if (onlyReady) { - sc.addAnd("state", SearchCriteria.Op.EQ, TemplateState.Ready); + SearchCriteria readySc = _templateJoinDao.createSearchCriteria(); + readySc.addOr("state", SearchCriteria.Op.EQ, TemplateState.Ready); + readySc.addOr("format", SearchCriteria.Op.EQ, ImageFormat.BAREMETAL); + SearchCriteria isoPerhostSc = _templateJoinDao.createSearchCriteria(); + isoPerhostSc.addAnd("format", SearchCriteria.Op.EQ, ImageFormat.ISO); + isoPerhostSc.addAnd("templateType", SearchCriteria.Op.EQ, TemplateType.PERHOST); + readySc.addOr("templateType", SearchCriteria.Op.SC, isoPerhostSc); + sc.addAnd("state", SearchCriteria.Op.SC, readySc); } if (zoneId != null) { diff --git a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java index 07930936b44..d4c9560430d 100644 --- a/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java +++ b/server/src/com/cloud/api/query/dao/TemplateJoinDaoImpl.java @@ -37,6 +37,7 @@ import com.cloud.api.ApiResponseHelper; import com.cloud.api.query.vo.ResourceTagJoinVO; import com.cloud.api.query.vo.TemplateJoinVO; import com.cloud.configuration.dao.ConfigurationDao; +import com.cloud.storage.Storage; import com.cloud.storage.VMTemplateHostVO; import com.cloud.storage.Storage.TemplateType; import com.cloud.storage.VMTemplateStorageResourceAssoc.Status; @@ -104,7 +105,13 @@ public class TemplateJoinDaoImpl extends GenericDaoBase im templateResponse.setDisplayText(template.getDisplayText()); templateResponse.setPublic(template.isPublicTemplate()); templateResponse.setCreated(template.getCreatedOnStore()); - templateResponse.setReady(template.getState() == ObjectInDataStoreStateMachine.State.Ready); + 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());