diff --git a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java index f7da0143af7..bc82d3c924b 100644 --- a/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java +++ b/server/src/com/cloud/resourcelimit/ResourceLimitManagerImpl.java @@ -377,7 +377,6 @@ public class ResourceLimitManagerImpl implements ResourceLimitService, Manager{ return limits; } - //If account is not specified, default it to caller account if (accountId == null) { if (domainId == null) { diff --git a/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java b/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java index 4ae11d9ccb0..b3c034a2af6 100755 --- a/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java +++ b/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java @@ -61,6 +61,7 @@ import com.cloud.utils.db.SearchBuilder; import com.cloud.utils.db.SearchCriteria; import com.cloud.utils.db.SearchCriteria.Func; import com.cloud.utils.db.Transaction; +import com.cloud.utils.exception.CloudRuntimeException; @Local(value={VMTemplateDao.class}) public class VMTemplateDaoImpl extends GenericDaoBase implements VMTemplateDao { @@ -683,7 +684,9 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem txn.start(); VMTemplateVO tmplt2 = findById(tmplt.getId()); if (tmplt2 == null){ - persist(tmplt); + if (persist(tmplt) == null) { + throw new CloudRuntimeException("Failed to persist the template " + tmplt); + } if(tmplt.getDetails() != null) { _templateDetailsDao.persist(tmplt.getId(), tmplt.getDetails()); } diff --git a/server/src/com/cloud/template/HyervisorTemplateAdapter.java b/server/src/com/cloud/template/HyervisorTemplateAdapter.java index 4f09f412b93..52462015631 100755 --- a/server/src/com/cloud/template/HyervisorTemplateAdapter.java +++ b/server/src/com/cloud/template/HyervisorTemplateAdapter.java @@ -116,6 +116,10 @@ public class HyervisorTemplateAdapter extends TemplateAdapterBase implements Tem public VMTemplateVO create(TemplateProfile profile) { VMTemplateVO template = persistTemplate(profile); + if (template == null) { + throw new CloudRuntimeException("Unable to persist the template " + profile.getTemplate()); + } + _downloadMonitor.downloadTemplateToStorage(template, profile.getZoneId()); _resourceLimitMgr.incrementResourceCount(profile.getAccountId(), ResourceType.template); diff --git a/server/src/com/cloud/template/TemplateAdapterBase.java b/server/src/com/cloud/template/TemplateAdapterBase.java index f6f0c441d8a..01beceb7a18 100755 --- a/server/src/com/cloud/template/TemplateAdapterBase.java +++ b/server/src/com/cloud/template/TemplateAdapterBase.java @@ -41,6 +41,7 @@ import com.cloud.user.dao.AccountDao; import com.cloud.user.dao.UserDao; import com.cloud.utils.EnumUtils; import com.cloud.utils.component.Inject; +import com.cloud.utils.exception.CloudRuntimeException; import com.cloud.vm.UserVmVO; public abstract class TemplateAdapterBase implements TemplateAdapter { @@ -236,7 +237,11 @@ public abstract class TemplateAdapterBase implements TemplateAdapter { profile.getDetails()); if (zoneId == null || zoneId == -1) { - List dcs = _dcDao.listAllIncludingRemoved(); + List dcs = _dcDao.listAll(); + + if (dcs.isEmpty()) { + throw new CloudRuntimeException("No zones are present in the system, can't add template"); + } for (DataCenterVO dc: dcs) { _tmpltDao.addTemplateToZone(template, dc.getId()); @@ -245,7 +250,7 @@ public abstract class TemplateAdapterBase implements TemplateAdapter { } else { _tmpltDao.addTemplateToZone(template, zoneId); } - return template; + return _tmpltDao.findById(template.getId()); }