From e547b9f4cc6552e4ce50f04041e987a8e680420a Mon Sep 17 00:00:00 2001 From: Anthony Xu Date: Fri, 9 Aug 2013 12:02:17 -0700 Subject: [PATCH] CLOUDSTACK-4210 delete templateVO entry when there is no image store having this template --- .../template/HypervisorTemplateAdapter.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/server/src/com/cloud/template/HypervisorTemplateAdapter.java b/server/src/com/cloud/template/HypervisorTemplateAdapter.java index de0ed7e51bc..7ec7114a389 100755 --- a/server/src/com/cloud/template/HypervisorTemplateAdapter.java +++ b/server/src/com/cloud/template/HypervisorTemplateAdapter.java @@ -329,15 +329,19 @@ public class HypervisorTemplateAdapter extends TemplateAdapterBase { } } if (success) { - s_logger.info("Delete template from template table"); - // remove template from vm_templates table - if (_tmpltDao.remove(template.getId())) { - // Decrement the number of templates and total secondary storage - // space used by the account - Account account = _accountDao.findByIdIncludingRemoved(template.getAccountId()); - _resourceLimitMgr.decrementResourceCount(template.getAccountId(), ResourceType.template); - _resourceLimitMgr.recalculateResourceCount(template.getAccountId(), account.getDomainId(), - ResourceType.secondary_storage.getOrdinal()); + + // find all eligible image stores for this template + List iStores = this.templateMgr.getImageStoreByTemplate(template.getId(), null); + if (iStores == null || iStores.size() == 0) { + // remove template from vm_templates table + if (_tmpltDao.remove(template.getId())) { + // Decrement the number of templates and total secondary storage + // space used by the account + Account account = _accountDao.findByIdIncludingRemoved(template.getAccountId()); + _resourceLimitMgr.decrementResourceCount(template.getAccountId(), ResourceType.template); + _resourceLimitMgr.recalculateResourceCount(template.getAccountId(), account.getDomainId(), + ResourceType.secondary_storage.getOrdinal()); + } } } return success;