Return-Path: X-Original-To: apmail-incubator-cloudstack-commits-archive@minotaur.apache.org Delivered-To: apmail-incubator-cloudstack-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id B636FE74A for ; Wed, 13 Mar 2013 17:14:06 +0000 (UTC) Received: (qmail 32268 invoked by uid 500); 13 Mar 2013 17:13:58 -0000 Delivered-To: apmail-incubator-cloudstack-commits-archive@incubator.apache.org Received: (qmail 32196 invoked by uid 500); 13 Mar 2013 17:13:57 -0000 Mailing-List: contact cloudstack-commits-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cloudstack-dev@incubator.apache.org Delivered-To: mailing list cloudstack-commits@incubator.apache.org Received: (qmail 31413 invoked by uid 99); 13 Mar 2013 17:13:57 -0000 Received: from tyr.zones.apache.org (HELO tyr.zones.apache.org) (140.211.11.114) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 13 Mar 2013 17:13:57 +0000 Received: by tyr.zones.apache.org (Postfix, from userid 65534) id 18C0FDE41; Wed, 13 Mar 2013 17:13:57 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: bfederle@apache.org To: cloudstack-commits@incubator.apache.org X-Mailer: ASF-Git Admin Mailer Subject: [5/35] git commit: refs/heads/ui-multiple-nics - updateTemplatePermissions should allow user to be able to see templates granted permissions by another user. Message-Id: <20130313171357.18C0FDE41@tyr.zones.apache.org> Date: Wed, 13 Mar 2013 17:13:57 +0000 (UTC) updateTemplatePermissions should allow user to be able to see templates granted permissions by another user. Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/1af8710d Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/1af8710d Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/1af8710d Branch: refs/heads/ui-multiple-nics Commit: 1af8710da858d86c3117cef47e69bdc0b8f0d78d Parents: 7a0f1bd Author: Min Chen Authored: Mon Mar 11 16:55:57 2013 -0700 Committer: Min Chen Committed: Mon Mar 11 17:32:26 2013 -0700 ---------------------------------------------------------------------- .../com/cloud/template/VirtualMachineTemplate.java | 1 + .../com/cloud/storage/dao/VMTemplateDaoImpl.java | 161 ++++++++------- 2 files changed, 82 insertions(+), 80 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/1af8710d/api/src/com/cloud/template/VirtualMachineTemplate.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/template/VirtualMachineTemplate.java b/api/src/com/cloud/template/VirtualMachineTemplate.java index cdfe8d3..cedc793 100755 --- a/api/src/com/cloud/template/VirtualMachineTemplate.java +++ b/api/src/com/cloud/template/VirtualMachineTemplate.java @@ -37,6 +37,7 @@ public interface VirtualMachineTemplate extends ControlledEntity, Identity, Inte featured, // returns templates that have been marked as featured and public self, // returns templates that have been registered or created by the calling user selfexecutable, // same as self, but only returns templates that are ready to be deployed with + shared, // including templates that have been granted to the calling user by another user sharedexecutable, // ready templates that have been granted to the calling user by another user executable, // templates that are owned by the calling user, or public templates, that can be used to deploy a community, // returns templates that have been marked as public but not featured http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/1af8710d/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java b/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java index c4928be..b51b216 100755 --- a/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java +++ b/server/src/com/cloud/storage/dao/VMTemplateDaoImpl.java @@ -78,12 +78,12 @@ import com.cloud.utils.exception.CloudRuntimeException; @Local(value={VMTemplateDao.class}) public class VMTemplateDaoImpl extends GenericDaoBase implements VMTemplateDao { private static final Logger s_logger = Logger.getLogger(VMTemplateDaoImpl.class); - + @Inject VMTemplateZoneDao _templateZoneDao; @Inject VMTemplateDetailsDao _templateDetailsDao; - + @Inject ConfigurationDao _configDao; @Inject @@ -94,10 +94,10 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem DataCenterDao _dcDao; private final String SELECT_TEMPLATE_HOST_REF = "SELECT t.id, h.data_center_id, t.unique_name, t.name, t.public, t.featured, t.type, t.hvm, t.bits, t.url, t.format, t.created, t.account_id, " + "t.checksum, t.display_text, t.enable_password, t.guest_os_id, t.bootable, t.prepopulate, t.cross_zones, t.hypervisor_type FROM vm_template t"; - + private final String SELECT_TEMPLATE_ZONE_REF = "SELECT t.id, tzr.zone_id, t.unique_name, t.name, t.public, t.featured, t.type, t.hvm, t.bits, t.url, t.format, t.created, t.account_id, " + "t.checksum, t.display_text, t.enable_password, t.guest_os_id, t.bootable, t.prepopulate, t.cross_zones, t.hypervisor_type FROM vm_template t INNER JOIN template_zone_ref tzr on (t.id = tzr.template_id) "; - + private final String SELECT_TEMPLATE_SWIFT_REF = "SELECT t.id, t.unique_name, t.name, t.public, t.featured, t.type, t.hvm, t.bits, t.url, t.format, t.created, t.account_id, " + "t.checksum, t.display_text, t.enable_password, t.guest_os_id, t.bootable, t.prepopulate, t.cross_zones, t.hypervisor_type FROM vm_template t"; @@ -132,17 +132,17 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem private String routerTmpltName; private String consoleProxyTmpltName; - + public VMTemplateDaoImpl() { } - + @Override public List listByPublic() { SearchCriteria sc = PublicSearch.create(); sc.setParameters("public", 1); return listBy(sc); } - + @Override public VMTemplateVO findByName(String templateName) { SearchCriteria sc = UniqueNameSearch.create(); @@ -159,7 +159,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem @Override public List publicIsoSearch(Boolean bootable, boolean listRemoved, Map tags){ - + SearchBuilder sb = null; if (tags == null || tags.isEmpty()) { sb = PublicIsoSearch; @@ -170,7 +170,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem sb.and("type", sb.entity().getTemplateType(), SearchCriteria.Op.EQ); sb.and("bootable", sb.entity().isBootable(), SearchCriteria.Op.EQ); sb.and("removed", sb.entity().getRemoved(), SearchCriteria.Op.EQ); - + SearchBuilder tagSearch = _tagsDao.createSearchBuilder(); for (int count=0; count < tags.size(); count++) { tagSearch.or().op("key" + String.valueOf(count), tagSearch.entity().getKey(), SearchCriteria.Op.EQ); @@ -181,20 +181,20 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem sb.groupBy(sb.entity().getId()); sb.join("tagSearch", tagSearch, sb.entity().getId(), tagSearch.entity().getResourceId(), JoinBuilder.JoinType.INNER); } - + SearchCriteria sc = sb.create(); - + sc.setParameters("public", 1); sc.setParameters("format", "ISO"); sc.setParameters("type", TemplateType.PERHOST.toString()); if (bootable != null) { sc.setParameters("bootable", bootable); } - + if (!listRemoved) { sc.setParameters("removed", (Object)null); } - + if (tags != null && !tags.isEmpty()) { int count = 0; sc.setJoinParameters("tagSearch", "resourceType", TaggedResourceType.ISO.toString()); @@ -204,10 +204,10 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem count++; } } - + return listBy(sc); } - + @Override public List userIsoSearch(boolean listRemoved){ @@ -228,7 +228,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem public List listAllSystemVMTemplates() { SearchCriteria sc = tmpltTypeSearch.create(); sc.setParameters("templateType", Storage.TemplateType.SYSTEM); - + Filter filter = new Filter(VMTemplateVO.class, "id", false, null, null); return listBy(sc, filter); } @@ -236,7 +236,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem @Override public List listPrivateTemplatesByHost(Long hostId) { - String sql = "select * from template_host_ref as thr INNER JOIN vm_template as t ON t.id=thr.template_id " + String sql = "select * from template_host_ref as thr INNER JOIN vm_template as t ON t.id=thr.template_id " + "where thr.host_id=? and t.public=0 and t.featured=0 and t.type='USER' and t.removed is NULL"; List l = new ArrayList(); @@ -256,7 +256,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem } return l; } - + @Override public List listReadyTemplates() { SearchCriteria sc = createSearchCriteria(); @@ -264,7 +264,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem sc.addAnd("format", SearchCriteria.Op.NEQ, Storage.ImageFormat.ISO); return listIncludingRemovedBy(sc); } - + @Override public List findIsosByIdAndPath(Long domainId, Long accountId, String path) { SearchCriteria sc = createSearchCriteria(); @@ -287,7 +287,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem sc.setParameters("accountId", accountId); return listBy(sc); } - + @Override public List listByHypervisorType(List hyperTypes) { SearchCriteria sc = createSearchCriteria(); @@ -299,17 +299,17 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem @Override public boolean configure(String name, Map params) throws ConfigurationException { boolean result = super.configure(name, params); - + PublicSearch = createSearchBuilder(); PublicSearch.and("public", PublicSearch.entity().isPublicTemplate(), SearchCriteria.Op.EQ); routerTmpltName = (String)params.get("routing.uniquename"); - + s_logger.debug("Found parameter routing unique name " + routerTmpltName); if (routerTmpltName==null) { routerTmpltName="routing"; } - + consoleProxyTmpltName = (String)params.get("consoleproxy.uniquename"); if(consoleProxyTmpltName == null) { consoleProxyTmpltName = "routing"; @@ -345,16 +345,16 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem hostHyperSearch.and("type", hostHyperSearch.entity().getType(), SearchCriteria.Op.EQ); hostHyperSearch.and("zoneId", hostHyperSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ); hostHyperSearch.groupBy(hostHyperSearch.entity().getHypervisorType()); - + tmpltTypeHyperSearch.join("tmplHyper", hostHyperSearch, hostHyperSearch.entity().getHypervisorType(), tmpltTypeHyperSearch.entity().getHypervisorType(), JoinBuilder.JoinType.INNER); hostHyperSearch.done(); tmpltTypeHyperSearch.done(); - + tmpltTypeHyperSearch2 = createSearchBuilder(); tmpltTypeHyperSearch2.and("templateType", tmpltTypeHyperSearch2.entity().getTemplateType(), SearchCriteria.Op.EQ); tmpltTypeHyperSearch2.and("hypervisorType", tmpltTypeHyperSearch2.entity().getHypervisorType(), SearchCriteria.Op.EQ); - + tmpltTypeSearch = createSearchBuilder(); tmpltTypeSearch.and("removed", tmpltTypeSearch.entity().getRemoved(), SearchCriteria.Op.NULL); tmpltTypeSearch.and("templateType", tmpltTypeSearch.entity().getTemplateType(), SearchCriteria.Op.EQ); @@ -363,11 +363,11 @@ 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(); - + SearchBuilder tmpltZoneSearch = _templateZoneDao.createSearchBuilder(); tmpltZoneSearch.and("removed", tmpltZoneSearch.entity().getRemoved(), SearchCriteria.Op.NULL); tmpltZoneSearch.and("zoneId", tmpltZoneSearch.entity().getZoneId(), SearchCriteria.Op.EQ); - + TmpltsInZoneSearch = createSearchBuilder(); TmpltsInZoneSearch.and("removed", TmpltsInZoneSearch.entity().getRemoved(), SearchCriteria.Op.NULL); TmpltsInZoneSearch.and().op("avoidtype", TmpltsInZoneSearch.entity().getTemplateType(), SearchCriteria.Op.NEQ); @@ -378,11 +378,11 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem TmpltsInZoneSearch.done(); CountTemplatesByAccount = createSearchBuilder(Long.class); - CountTemplatesByAccount.select(null, Func.COUNT, null); + CountTemplatesByAccount.select(null, Func.COUNT, null); CountTemplatesByAccount.and("account", CountTemplatesByAccount.entity().getAccountId(), SearchCriteria.Op.EQ); CountTemplatesByAccount.and("removed", CountTemplatesByAccount.entity().getRemoved(), SearchCriteria.Op.NULL); CountTemplatesByAccount.done(); - + updateStateSearch = this.createSearchBuilder(); updateStateSearch.and("id", updateStateSearch.entity().getId(), Op.EQ); updateStateSearch.and("state", updateStateSearch.entity().getState(), Op.EQ); @@ -472,7 +472,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem } else { whereClause += " AND t.account_id IN (" + permittedAccountsStr + ")"; } - } else if (templateFilter == TemplateFilter.sharedexecutable && caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { + } else if ((templateFilter == TemplateFilter.shared || templateFilter == TemplateFilter.sharedexecutable) && caller.getType() != Account.ACCOUNT_TYPE_ADMIN) { if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL) { joinClause += " LEFT JOIN launch_permission lp ON t.id = lp.template_id WHERE" + " (t.account_id IN (" + permittedAccountsStr + ") OR" + " lp.account_id IN (" + permittedAccountsStr + "))"; @@ -517,7 +517,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem @Override - public Set> searchTemplates(String name, String keyword, TemplateFilter templateFilter, + public Set> searchTemplates(String name, String keyword, TemplateFilter templateFilter, boolean isIso, List hypers, Boolean bootable, DomainVO domain, Long pageSize, Long startIndex, Long zoneId, HypervisorType hyperType, boolean onlyReady, boolean showDomr,List permittedAccounts, Account caller, ListProjectResourcesCriteria listProjectResourcesCriteria, Map tags) { @@ -527,17 +527,17 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem builder.append(permittedAccount.getAccountId() + ","); } } - + String permittedAccountsStr = builder.toString(); - + if (permittedAccountsStr.length() > 0) { //chop the "," off permittedAccountsStr = permittedAccountsStr.substring(0, permittedAccountsStr.length()-1); } - + Transaction txn = Transaction.currentTxn(); txn.start(); - + /* Use LinkedHashSet here to guarantee iteration order */ Set> templateZonePairList = new LinkedHashSet>(); PreparedStatement pstmt = null; @@ -545,15 +545,15 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem StringBuilder relatedDomainIds = new StringBuilder(); String sql = SELECT_TEMPLATE_ZONE_REF; String groupByClause = ""; - try { + try { //short accountType; //String accountId = null; - String guestOSJoin = ""; + String guestOSJoin = ""; StringBuilder templateHostRefJoin = new StringBuilder(); String dataCenterJoin = "", lpjoin = ""; String tagsJoin = ""; - if (isIso && !hyperType.equals(HypervisorType.None)) { + if (isIso && !hyperType.equals(HypervisorType.None)) { guestOSJoin = " INNER JOIN guest_os guestOS on (guestOS.id = t.guest_os_id) INNER JOIN guest_os_hypervisor goh on ( goh.guest_os_id = guestOS.id) "; } if (onlyReady){ @@ -564,34 +564,34 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem if ((templateFilter == TemplateFilter.featured) || (templateFilter == TemplateFilter.community)) { dataCenterJoin = " INNER JOIN data_center dc on (h.data_center_id = dc.id)"; } - - if (templateFilter == TemplateFilter.sharedexecutable){ + + if (templateFilter == TemplateFilter.sharedexecutable || templateFilter == TemplateFilter.shared ){ lpjoin = " INNER JOIN launch_permission lp ON t.id = lp.template_id "; } - + if (tags != null && !tags.isEmpty()) { tagsJoin = " INNER JOIN resource_tags r ON t.id = r.resource_id "; } - + sql += guestOSJoin + templateHostRefJoin + dataCenterJoin + lpjoin + tagsJoin; String whereClause = ""; - + //All joins have to be made before we start setting the condition settings - if ((listProjectResourcesCriteria == ListProjectResourcesCriteria.SkipProjectResources - || (!permittedAccounts.isEmpty() && !(templateFilter == TemplateFilter.community || templateFilter == TemplateFilter.featured))) && + if ((listProjectResourcesCriteria == ListProjectResourcesCriteria.SkipProjectResources + || (!permittedAccounts.isEmpty() && !(templateFilter == TemplateFilter.community || templateFilter == TemplateFilter.featured))) && !(caller.getType() != Account.ACCOUNT_TYPE_NORMAL && templateFilter == TemplateFilter.all)) { whereClause += " INNER JOIN account a on (t.account_id = a.id)"; - if ((templateFilter == TemplateFilter.self || templateFilter == TemplateFilter.selfexecutable) && (caller.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN || caller.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN)) { - whereClause += " INNER JOIN domain d on (a.domain_id = d.id) WHERE d.path LIKE '" + domain.getPath() + "%'"; + if ((templateFilter == TemplateFilter.self || templateFilter == TemplateFilter.selfexecutable) && (caller.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN || caller.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN)) { + whereClause += " INNER JOIN domain d on (a.domain_id = d.id) WHERE d.path LIKE '" + domain.getPath() + "%'"; if (listProjectResourcesCriteria == ListProjectResourcesCriteria.SkipProjectResources) { whereClause += " AND a.type != " + Account.ACCOUNT_TYPE_PROJECT; } - } else + } else if (listProjectResourcesCriteria == ListProjectResourcesCriteria.SkipProjectResources) { whereClause += " WHERE a.type != " + Account.ACCOUNT_TYPE_PROJECT; } } - + if (!permittedAccounts.isEmpty()) { for (Account account : permittedAccounts) { //accountType = account.getType(); @@ -621,12 +621,12 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem relatedDomainIds.setLength(relatedDomainIds.length()-1); } } - + String attr = " AND "; if (whereClause.endsWith(" WHERE ")) { attr += " WHERE "; } - + if (!isIso) { if ( hypers.isEmpty() ) { return templateZonePairList; @@ -642,9 +642,10 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem whereClause += attr + " t.hypervisor_type IN (" + relatedHypers + ")"; } } - - if (!permittedAccounts.isEmpty() && !(templateFilter == TemplateFilter.featured || - templateFilter == TemplateFilter.community || templateFilter == TemplateFilter.executable) && !isAdmin(caller.getType()) ) { + + if (!permittedAccounts.isEmpty() && !(templateFilter == TemplateFilter.featured || + templateFilter == TemplateFilter.community || templateFilter == TemplateFilter.executable + || templateFilter == TemplateFilter.shared || templateFilter == TemplateFilter.sharedexecutable) && !isAdmin(caller.getType()) ) { whereClause += attr + "t.account_id IN (" + permittedAccountsStr + ")"; } @@ -652,13 +653,13 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem whereClause += attr + "t.public = 1 AND t.featured = 1"; if (!permittedAccounts.isEmpty()) { whereClause += attr + "(dc.domain_id IN (" + relatedDomainIds + ") OR dc.domain_id is NULL)"; - } + } } else if (templateFilter == TemplateFilter.self || templateFilter == TemplateFilter.selfexecutable) { whereClause += " AND t.account_id IN (" + permittedAccountsStr + ")"; - } else if (templateFilter == TemplateFilter.sharedexecutable) { + } else if (templateFilter == TemplateFilter.sharedexecutable || templateFilter == TemplateFilter.shared ) { whereClause += " AND " + " (t.account_id IN (" + permittedAccountsStr + ") OR" + - " lp.account_id IN (" + permittedAccountsStr + "))"; + " lp.account_id IN (" + permittedAccountsStr + "))"; } else if (templateFilter == TemplateFilter.executable && !permittedAccounts.isEmpty()) { whereClause += attr + "(t.public = 1 OR t.account_id IN (" + permittedAccountsStr + "))"; } else if (templateFilter == TemplateFilter.community) { @@ -669,7 +670,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem } else if (caller.getType() != Account.ACCOUNT_TYPE_ADMIN && !isIso) { return templateZonePairList; } - + if (tags != null && !tags.isEmpty()) { whereClause += " AND ("; boolean first = true; @@ -682,13 +683,13 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem } whereClause += ")"; } - + if (whereClause.equals("")) { whereClause += " WHERE "; } else if (!whereClause.equals(" WHERE ")) { whereClause += " AND "; } - + sql += whereClause + getExtrasWhere(templateFilter, name, keyword, isIso, bootable, hyperType, zoneId, onlyReady, showDomr) + groupByClause + getOrderByLimit(pageSize, startIndex); @@ -699,8 +700,8 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem Pair templateZonePair = new Pair(rs.getLong(1), rs.getLong(2)); templateZonePairList.add(templateZonePair); } - //for now, defaulting pageSize to a large val if null; may need to revisit post 2.2RC2 - if(isIso && templateZonePairList.size() < (pageSize != null ? pageSize : 500) + //for now, defaulting pageSize to a large val if null; may need to revisit post 2.2RC2 + if(isIso && templateZonePairList.size() < (pageSize != null ? pageSize : 500) && templateFilter != TemplateFilter.community && !(templateFilter == TemplateFilter.self && !BaseCmd.isRootAdmin(caller.getType())) ){ //evaluates to true If root admin and filter=self @@ -747,7 +748,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem s_logger.warn("Error in cleaning up", sqle); } } - + return templateZonePairList; } @@ -770,7 +771,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem sql += " AND t.hypervisor_type = '" + hyperType.toString() + "'"; } } - + if (bootable != null) { sql += " AND t.bootable = " + bootable; } @@ -787,7 +788,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem } if (!showDomr){ sql += " AND t.type != '" +Storage.TemplateType.SYSTEM.toString() + "'"; - } + } sql += " AND t.removed IS NULL"; @@ -797,14 +798,14 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem private String getOrderByLimit(Long pageSize, Long startIndex) { Boolean isAscending = Boolean.parseBoolean(_configDao.getValue("sortkey.algorithm")); isAscending = (isAscending == null ? true : isAscending); - + String sql; if (isAscending) { sql = " ORDER BY t.sort_key ASC"; } else { sql = " ORDER BY t.sort_key DESC"; } - + if ((pageSize != null) && (startIndex != null)) { sql += " LIMIT " + startIndex.toString() + "," + pageSize.toString(); } @@ -835,7 +836,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem _templateZoneDao.update(tmpltZoneVO.getId(), tmpltZoneVO); } txn.commit(); - + return tmplt.getId(); } @@ -854,7 +855,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem sc.setParameters("templateType", Storage.TemplateType.BUILTIN); return listBy(sc); } - + @Override public VMTemplateVO findSystemVMTemplate(long zoneId) { SearchCriteria sc = tmpltTypeHyperSearch.create(); @@ -864,14 +865,14 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem //order by descending order of id and select the first (this is going to be the latest) List tmplts = listBy(sc, new Filter(VMTemplateVO.class, "id", false, null, 1l)); - + if (tmplts.size() > 0) { return tmplts.get(0); } else { return null; } } - + public VMTemplateVO findSystemVMTemplate(long zoneId, HypervisorType hType) { SearchCriteria sc = tmpltTypeHyperSearch.create(); sc.setParameters("templateType", Storage.TemplateType.SYSTEM); @@ -900,7 +901,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem //order by descending order of id and select the first (this is going to be the latest) List tmplts = listBy(sc, new Filter(VMTemplateVO.class, "id", false, null, 1l)); - + if (tmplts.size() > 0) { return tmplts.get(0); } else { @@ -914,7 +915,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem sc.setParameters("account", accountId); return customSearch(sc, null).get(0); } - + @Override @DB public boolean remove(Long id) { @@ -922,7 +923,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem txn.start(); VMTemplateVO template = createForUpdate(); template.setRemoved(new Date()); - + VMTemplateVO vo = findById(id); if (vo != null) { if (vo.getFormat() == ImageFormat.ISO) { @@ -936,14 +937,14 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem txn.commit(); return result; } - + private boolean isAdmin(short accountType) { return ((accountType == Account.ACCOUNT_TYPE_ADMIN) || (accountType == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) || (accountType == Account.ACCOUNT_TYPE_DOMAIN_ADMIN) || (accountType == Account.ACCOUNT_TYPE_READ_ONLY_ADMIN)); } - + @Override public List findTemplatesToSyncToS3() { return executeList(SELECT_S3_CANDIDATE_TEMPLATES, new Object[] {}); @@ -1037,7 +1038,7 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem joinClause.append(" LEFT JOIN launch_permission lp ON t.id = lp.template_id WHERE (t.account_id IN ("); joinClause.append(permittedAccountsStr); joinClause.append(") OR lp.account_id IN ("); - joinClause.append(permittedAccountsStr); + joinClause.append(permittedAccountsStr); joinClause.append("))"); } else { joinClause.append(" INNER JOIN account a on (t.account_id = a.id) "); @@ -1088,8 +1089,8 @@ public class VMTemplateDaoImpl extends GenericDaoBase implem TemplateState nextState, VMTemplateVO vo, Object data) { Long oldUpdated = vo.getUpdatedCount(); Date oldUpdatedTime = vo.getUpdated(); - - + + SearchCriteria sc = updateStateSearch.create(); sc.setParameters("id", vo.getId()); sc.setParameters("state", currentState);