From 809ad8ce23b0cea0d234b8e0404814fae3fe274d Mon Sep 17 00:00:00 2001 From: alena Date: Thu, 3 Nov 2011 17:08:00 -0700 Subject: [PATCH] Fixed listProjects for regular user --- api/src/com/cloud/api/commands/ListProjectsCmd.java | 2 +- server/src/com/cloud/projects/ProjectManagerImpl.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/api/src/com/cloud/api/commands/ListProjectsCmd.java b/api/src/com/cloud/api/commands/ListProjectsCmd.java index 2edc362c557..fa0f83623e9 100644 --- a/api/src/com/cloud/api/commands/ListProjectsCmd.java +++ b/api/src/com/cloud/api/commands/ListProjectsCmd.java @@ -44,7 +44,7 @@ public class ListProjectsCmd extends BaseListCmd { @Parameter(name=ApiConstants.ID, type=CommandType.LONG, description="list projects by project ID") private Long id; - @Parameter(name=ApiConstants.ACCOUNT, type=CommandType.STRING, description="list projects by owner name") + @Parameter(name=ApiConstants.ACCOUNT, type=CommandType.STRING, description="list projects availabe for specified account") private String accountName; @IdentityMapper(entityTableName="domain") diff --git a/server/src/com/cloud/projects/ProjectManagerImpl.java b/server/src/com/cloud/projects/ProjectManagerImpl.java index 0267075721d..990f6ba5014 100644 --- a/server/src/com/cloud/projects/ProjectManagerImpl.java +++ b/server/src/com/cloud/projects/ProjectManagerImpl.java @@ -368,6 +368,12 @@ public class ProjectManagerImpl implements ProjectManager, Manager{ sb.join("domainSearch", domainSearch, sb.entity().getDomainId(), domainSearch.entity().getId(), JoinBuilder.JoinType.INNER); } + if (accountId != null) { + SearchBuilder projectAccountSearch = _projectAccountDao.createSearchBuilder(); + projectAccountSearch.and("accountId", projectAccountSearch.entity().getAccountId(), SearchCriteria.Op.EQ); + sb.join("projectAccountSearch", projectAccountSearch, sb.entity().getId(), projectAccountSearch.entity().getProjectId(), JoinBuilder.JoinType.INNER); + } + SearchCriteria sc = sb.create(); if (id != null) { @@ -383,7 +389,7 @@ public class ProjectManagerImpl implements ProjectManager, Manager{ } if (accountId != null) { - sc.addAnd("accountId", Op.EQ, accountId); + sc.setJoinParameters("projectAccountSearch", "accountId", accountId); } if (state != null) {