diff --git a/core/src/com/cloud/storage/dao/VMTemplateZoneDaoImpl.java b/core/src/com/cloud/storage/dao/VMTemplateZoneDaoImpl.java old mode 100644 new mode 100755 index b906a280534..3c493a24def --- a/core/src/com/cloud/storage/dao/VMTemplateZoneDaoImpl.java +++ b/core/src/com/cloud/storage/dao/VMTemplateZoneDaoImpl.java @@ -73,7 +73,7 @@ public class VMTemplateZoneDaoImpl extends GenericDaoBase templateHostRefsForTemplate = getManagementServer().listTemplateHostBy(template.getId(), zoneId); for (VMTemplateHostVO templateHostRef : templateHostRefsForTemplate) { - if (onlyReady && templateHostRef.getDownloadState() != Status.DOWNLOADED) { + if ((onlyReady && templateHostRef.getDownloadState() != Status.DOWNLOADED) || templateHostRef.getDestroyed()){ continue; } diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 6075589702f..ecd46465832 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -214,6 +214,7 @@ import com.cloud.storage.dao.SnapshotDao; import com.cloud.storage.dao.SnapshotPolicyDao; import com.cloud.storage.dao.StoragePoolDao; import com.cloud.storage.dao.VMTemplateDao; +import com.cloud.storage.dao.VMTemplateZoneDao; import com.cloud.storage.dao.VMTemplateDao.TemplateFilter; import com.cloud.storage.dao.VMTemplateHostDao; import com.cloud.storage.dao.VolumeDao; @@ -312,6 +313,7 @@ public class ManagementServerImpl implements ManagementServer { private final DiskOfferingDao _diskOfferingDao; private final VMTemplateDao _templateDao; private final VMTemplateHostDao _templateHostDao; + private final VMTemplateZoneDao _templateZoneDao; private final LaunchPermissionDao _launchPermissionDao; private final PricingDao _pricingDao; private final DomainDao _domainDao; @@ -410,6 +412,7 @@ public class ManagementServerImpl implements ManagementServer { _diskOfferingDao = locator.getDao(DiskOfferingDao.class); _templateDao = locator.getDao(VMTemplateDao.class); _templateHostDao = locator.getDao(VMTemplateHostDao.class); + _templateZoneDao = locator.getDao(VMTemplateZoneDao.class); _launchPermissionDao = locator.getDao(LaunchPermissionDao.class); _pricingDao = locator.getDao(PricingDao.class); _domainDao = locator.getDao(DomainDao.class); @@ -2462,6 +2465,8 @@ public class ManagementServerImpl implements ManagementServer { // Make sure a valid template ID was specified if (template == null) { throw new InvalidParameterValueException("Please specify a valid template or ISO ID."); + }if (_templateZoneDao.findByZoneTemplate(dataCenterId, templateId) != null){ + throw new InvalidParameterValueException("The template " +templateId+ " is not available for use"); } boolean isIso = Storage.ImageFormat.ISO.equals(template.getFormat());