You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by al...@apache.org on 2014/01/30 02:12:44 UTC
git commit: updated refs/heads/master to b38c033
Updated Branches:
refs/heads/master 37fa8012f -> b38c033d5
LOUDSTACK-5987: when listTemplates with filter=community/featured, get public templates from all domains in the system, not just parent/child subdomains of the caller
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b38c033d
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b38c033d
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b38c033d
Branch: refs/heads/master
Commit: b38c033d5c84af6a79150bc099b88ceba54a2c63
Parents: 37fa801
Author: Alena Prokharchyk <al...@citrix.com>
Authored: Wed Jan 29 17:12:46 2014 -0800
Committer: Alena Prokharchyk <al...@citrix.com>
Committed: Wed Jan 29 17:12:46 2014 -0800
----------------------------------------------------------------------
.../com/cloud/api/query/QueryManagerImpl.java | 22 +++++++++++++-------
1 file changed, 14 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b38c033d/server/src/com/cloud/api/query/QueryManagerImpl.java
----------------------------------------------------------------------
diff --git a/server/src/com/cloud/api/query/QueryManagerImpl.java b/server/src/com/cloud/api/query/QueryManagerImpl.java
index bdd4132..27a0529 100644
--- a/server/src/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/com/cloud/api/query/QueryManagerImpl.java
@@ -26,9 +26,6 @@ import java.util.Set;
import javax.ejb.Local;
import javax.inject.Inject;
-import org.apache.log4j.Logger;
-import org.springframework.stereotype.Component;
-
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.affinity.AffinityGroupDomainMapVO;
import org.apache.cloudstack.affinity.AffinityGroupResponse;
@@ -90,6 +87,8 @@ import org.apache.cloudstack.engine.subsystem.api.storage.DataStoreManager;
import org.apache.cloudstack.engine.subsystem.api.storage.TemplateState;
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
import org.apache.cloudstack.query.QueryService;
+import org.apache.log4j.Logger;
+import org.springframework.stereotype.Component;
import com.cloud.api.query.dao.AccountJoinDao;
import com.cloud.api.query.dao.AffinityGroupJoinDao;
@@ -175,8 +174,8 @@ import com.cloud.storage.dao.VMTemplateDao;
import com.cloud.storage.dao.VolumeDetailsDao;
import com.cloud.tags.ResourceTagVO;
import com.cloud.tags.dao.ResourceTagDao;
-import com.cloud.template.VirtualMachineTemplate.TemplateFilter;
import com.cloud.template.VirtualMachineTemplate.State;
+import com.cloud.template.VirtualMachineTemplate.TemplateFilter;
import com.cloud.user.Account;
import com.cloud.user.AccountManager;
import com.cloud.user.DomainManager;
@@ -2828,10 +2827,17 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
if (!permittedAccounts.isEmpty()) {
for (Account account : permittedAccounts) {
permittedAccountIds.add(account.getId());
- DomainVO accountDomain = _domainDao.findById(account.getDomainId());
+ boolean publicTemplates = (templateFilter == TemplateFilter.featured || templateFilter == TemplateFilter.community);
// get all parent domain ID's all the way till root domain
- DomainVO domainTreeNode = accountDomain;
+ DomainVO domainTreeNode = null;
+ //if template filter is featured, or community, all child domains should be included in search
+ if (publicTemplates) {
+ domainTreeNode = _domainDao.findById(Domain.ROOT_DOMAIN);
+
+ } else {
+ domainTreeNode = _domainDao.findById(account.getDomainId());
+ }
relatedDomainIds.add(domainTreeNode.getId());
while (domainTreeNode.getParent() != null) {
domainTreeNode = _domainDao.findById(domainTreeNode.getParent());
@@ -2839,8 +2845,8 @@ public class QueryManagerImpl extends ManagerBase implements QueryService {
}
// get all child domain ID's
- if (_accountMgr.isAdmin(account.getType()) || (templateFilter == TemplateFilter.featured || templateFilter == TemplateFilter.community)) {
- List<DomainVO> allChildDomains = _domainDao.findAllChildren(accountDomain.getPath(), accountDomain.getId());
+ if (_accountMgr.isAdmin(account.getType()) || publicTemplates) {
+ List<DomainVO> allChildDomains = _domainDao.findAllChildren(domainTreeNode.getPath(), domainTreeNode.getId());
for (DomainVO childDomain : allChildDomains) {
relatedDomainIds.add(childDomain.getId());
}