diff --git a/core/src/com/cloud/storage/dao/VMTemplateDao.java b/core/src/com/cloud/storage/dao/VMTemplateDao.java index 05e6816a0f6..dbbf52bca7a 100644 --- a/core/src/com/cloud/storage/dao/VMTemplateDao.java +++ b/core/src/com/cloud/storage/dao/VMTemplateDao.java @@ -57,6 +57,7 @@ public interface VMTemplateDao extends GenericDao { public List searchTemplates(String name, String keyword, TemplateFilter templateFilter, boolean isIso, Boolean bootable, Account account, DomainVO domain, Integer pageSize, Long startIndex, Long zoneId); public long addTemplateToZone(VMTemplateVO tmplt, long zoneId); - public List listAllInZone(long dataCenterId); + public List listAllInZone(long dataCenterId); + public List listXenToolsIso(); } diff --git a/core/src/com/cloud/storage/dao/VMTemplateDaoImpl.java b/core/src/com/cloud/storage/dao/VMTemplateDaoImpl.java index a6350ef5f29..5561c12ae56 100644 --- a/core/src/com/cloud/storage/dao/VMTemplateDaoImpl.java +++ b/core/src/com/cloud/storage/dao/VMTemplateDaoImpl.java @@ -67,6 +67,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem protected SearchBuilder PublicSearch; private String routerTmpltName; private String consoleProxyTmpltName; + protected SearchBuilder XenToolsSearch; protected VMTemplateDaoImpl() { } @@ -133,7 +134,13 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem sc.setParameters("publicTemplate", false); return listActiveBy(sc); } - + + @Override + public List listXenToolsIso() { + SearchCriteria sc = XenToolsSearch.create(); + sc.setParameters("uniqueName", "xs-tools.iso"); + return listBy(sc); + } @Override public boolean configure(String name, Map params) throws ConfigurationException { boolean result = super.configure(name, params); @@ -165,7 +172,10 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem AccountIdSearch.and("accountId", AccountIdSearch.entity().getAccountId(), SearchCriteria.Op.EQ); AccountIdSearch.and("publicTemplate", AccountIdSearch.entity().isPublicTemplate(), SearchCriteria.Op.EQ); AccountIdSearch.done(); - + + XenToolsSearch = createSearchBuilder(); + XenToolsSearch.and("uniqueName", XenToolsSearch.entity().getUniqueName(), SearchCriteria.Op.EQ); + AccountIdSearch.done(); return result; } @@ -240,7 +250,15 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem } else { templates.add(tmplt); } - } + } + + //if normal user, add xentools.iso + if(accountType == Account.ACCOUNT_TYPE_NORMAL && isIso) { + List xenTools = listXenToolsIso(); + if(xenTools.size() > 0) + templates.add(xenTools.get(0)); + } + } catch (Exception e) { s_logger.warn("Error listing templates", e); } finally {