This is an automated email from the ASF dual-hosted git repository.
dahn pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/main by this push:
new 4ff592ac2c1 Use UserVmDao for listVirtualMachines API to increase
performance (#8012)
4ff592ac2c1 is described below
commit 4ff592ac2c151ff9be61b78c82d6508e74a52288
Author: Marcus Sorensen <[email protected]>
AuthorDate: Thu Oct 26 00:44:09 2023 -0600
Use UserVmDao for listVirtualMachines API to increase performance (#8012)
Co-authored-by: Marcus Sorensen <[email protected]>
---
.../java/com/cloud/utils/db/GenericDaoBase.java | 37 +-
.../com/cloud/utils/db/GenericDaoBaseTest.java | 52 ++
.../java/com/cloud/api/query/QueryManagerImpl.java | 698 ++++++++++++---------
3 files changed, 494 insertions(+), 293 deletions(-)
diff --git a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
index a5ed004c30e..5fd9580342c 100644
--- a/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
+++ b/framework/db/src/main/java/com/cloud/utils/db/GenericDaoBase.java
@@ -1264,6 +1264,11 @@ public abstract class GenericDaoBase<T, ID extends
Serializable> extends Compone
@DB()
protected void addJoins(StringBuilder str,
Collection<JoinBuilder<SearchCriteria<?>>> joins) {
+ addJoins(str, joins, new HashMap<>());
+ }
+
+ @DB()
+ protected void addJoins(StringBuilder str,
Collection<JoinBuilder<SearchCriteria<?>>> joins, Map<String, Integer>
joinedTableNames) {
boolean hasWhereClause = true;
int fromIndex = str.lastIndexOf("WHERE");
if (fromIndex == -1) {
@@ -1274,18 +1279,27 @@ public abstract class GenericDaoBase<T, ID extends
Serializable> extends Compone
}
for (JoinBuilder<SearchCriteria<?>> join : joins) {
+ String joinTableName = join.getSecondAttribute().table;
+ String joinTableAlias = findNextJoinTableName(joinTableName,
joinedTableNames);
StringBuilder onClause = new StringBuilder();
onClause.append(" ")
.append(join.getType().getName())
.append(" ")
- .append(join.getSecondAttribute().table)
- .append(" ON ")
+ .append(joinTableName);
+ if (!joinTableAlias.equals(joinTableName)) {
+ onClause.append(" ").append(joinTableAlias);
+ }
+ onClause.append(" ON ")
.append(join.getFirstAttribute().table)
.append(".")
.append(join.getFirstAttribute().columnName)
- .append("=")
- .append(join.getSecondAttribute().table)
- .append(".")
+ .append("=");
+ if(!joinTableAlias.equals(joinTableName)) {
+ onClause.append(joinTableAlias);
+ } else {
+ onClause.append(joinTableName);
+ }
+ onClause.append(".")
.append(join.getSecondAttribute().columnName)
.append(" ");
str.insert(fromIndex, onClause);
@@ -1306,11 +1320,22 @@ public abstract class GenericDaoBase<T, ID extends
Serializable> extends Compone
for (JoinBuilder<SearchCriteria<?>> join : joins) {
if (join.getT().getJoins() != null) {
- addJoins(str, join.getT().getJoins());
+ addJoins(str, join.getT().getJoins(), joinedTableNames);
}
}
}
+ protected static String findNextJoinTableName(String tableName,
Map<String, Integer> usedTableNames) {
+ if (usedTableNames.containsKey(tableName)) {
+ Integer tableCounter = usedTableNames.get(tableName);
+ usedTableNames.put(tableName, ++tableCounter);
+ tableName = tableName + tableCounter;
+ } else {
+ usedTableNames.put(tableName, 0);
+ }
+ return tableName;
+ }
+
private void removeAndClause(StringBuilder sql) {
sql.delete(sql.length() - 4, sql.length());
}
diff --git
a/framework/db/src/test/java/com/cloud/utils/db/GenericDaoBaseTest.java
b/framework/db/src/test/java/com/cloud/utils/db/GenericDaoBaseTest.java
index 352ea735aa7..b950501337b 100644
--- a/framework/db/src/test/java/com/cloud/utils/db/GenericDaoBaseTest.java
+++ b/framework/db/src/test/java/com/cloud/utils/db/GenericDaoBaseTest.java
@@ -18,6 +18,10 @@ package com.cloud.utils.db;
import java.sql.ResultSet;
import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
import org.junit.Assert;
import org.junit.Before;
@@ -36,6 +40,7 @@ public class GenericDaoBaseTest {
@Mock
SQLException mockedSQLException;
+ private static final DbTestDao dbTestDao = new DbTestDao();
private static final String INTEGRITY_CONSTRAINT_VIOLATION = "23000";
private static final int DUPLICATE_ENTRY_ERRO_CODE = 1062;
@@ -214,4 +219,51 @@ public class GenericDaoBaseTest {
Assert.assertEquals(resultSetSize, result);
}
+
+ @Test
+ public void addJoinsTest() {
+ StringBuilder joinString = new StringBuilder();
+ Collection<JoinBuilder<SearchCriteria<?>>> joins = new ArrayList<>();
+
+ Attribute attr1 = new Attribute("table1", "column1");
+ Attribute attr2 = new Attribute("table2", "column2");
+ Attribute attr3 = new Attribute("table3", "column1");
+ Attribute attr4 = new Attribute("table4", "column2");
+
+ joins.add(new JoinBuilder<>(dbTestDao.createSearchCriteria(), attr1,
attr2, JoinBuilder.JoinType.INNER));
+ joins.add(new JoinBuilder<>(dbTestDao.createSearchCriteria(), attr3,
attr4, JoinBuilder.JoinType.INNER));
+ dbTestDao.addJoins(joinString, joins);
+
+ Assert.assertEquals(" INNER JOIN table2 ON
table1.column1=table2.column2 INNER JOIN table4 ON
table3.column1=table4.column2 ", joinString.toString());
+ }
+
+ @Test
+ public void multiJoinSameTableTest() {
+ StringBuilder joinString = new StringBuilder();
+ Collection<JoinBuilder<SearchCriteria<?>>> joins = new ArrayList<>();
+
+ Attribute tAc1 = new Attribute("tableA", "column1");
+ Attribute tAc2 = new Attribute("tableA", "column2");
+ Attribute tAc3 = new Attribute("tableA", "column3");
+ Attribute tBc2 = new Attribute("tableB", "column2");
+ Attribute tCc3 = new Attribute("tableC", "column3");
+ Attribute tDc4 = new Attribute("tableD", "column4");
+
+ joins.add(new JoinBuilder<>(dbTestDao.createSearchCriteria(), tBc2,
tAc1, JoinBuilder.JoinType.INNER));
+ joins.add(new JoinBuilder<>(dbTestDao.createSearchCriteria(), tCc3,
tAc2, JoinBuilder.JoinType.INNER));
+ joins.add(new JoinBuilder<>(dbTestDao.createSearchCriteria(), tDc4,
tAc3, JoinBuilder.JoinType.INNER));
+ dbTestDao.addJoins(joinString, joins);
+
+ Assert.assertEquals(" INNER JOIN tableA ON
tableB.column2=tableA.column1 INNER JOIN tableA tableA1 ON
tableC.column3=tableA1.column2 INNER JOIN tableA tableA2 ON
tableD.column4=tableA2.column3 ", joinString.toString());
+ }
+
+ @Test
+ public void findNextTableNameTest() {
+ Map<String, Integer> usedTables = new HashMap<>();
+
+ Assert.assertEquals("tableA",
GenericDaoBase.findNextJoinTableName("tableA", usedTables));
+ Assert.assertEquals("tableA1",
GenericDaoBase.findNextJoinTableName("tableA", usedTables));
+ Assert.assertEquals("tableA2",
GenericDaoBase.findNextJoinTableName("tableA", usedTables));
+ Assert.assertEquals("tableA3",
GenericDaoBase.findNextJoinTableName("tableA", usedTables));
+ }
}
diff --git a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
index 491104b654c..946b48cf480 100644
--- a/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
+++ b/server/src/main/java/com/cloud/api/query/QueryManagerImpl.java
@@ -34,6 +34,22 @@ import java.util.stream.Stream;
import javax.inject.Inject;
+import com.cloud.host.Host;
+import com.cloud.host.dao.HostDao;
+import com.cloud.network.as.AutoScaleVmGroupVmMapVO;
+import com.cloud.network.as.dao.AutoScaleVmGroupDao;
+import com.cloud.network.as.dao.AutoScaleVmGroupVmMapDao;
+import com.cloud.network.dao.NetworkDao;
+import com.cloud.network.dao.NetworkVO;
+import com.cloud.storage.dao.VolumeDao;
+import com.cloud.user.SSHKeyPairVO;
+import com.cloud.user.dao.SSHKeyPairDao;
+import com.cloud.vm.InstanceGroupVMMapVO;
+import com.cloud.vm.NicVO;
+import com.cloud.vm.UserVmDetailVO;
+import com.cloud.vm.dao.InstanceGroupVMMapDao;
+import com.cloud.vm.dao.NicDao;
+import com.cloud.vm.dao.UserVmDetailsDao;
import org.apache.cloudstack.acl.ControlledEntity;
import org.apache.cloudstack.acl.ControlledEntity.ACLType;
import org.apache.cloudstack.acl.SecurityChecker;
@@ -118,6 +134,8 @@ import org.apache.cloudstack.api.response.UserResponse;
import org.apache.cloudstack.api.response.UserVmResponse;
import org.apache.cloudstack.api.response.VolumeResponse;
import org.apache.cloudstack.api.response.ZoneResponse;
+import org.apache.cloudstack.backup.BackupOfferingVO;
+import org.apache.cloudstack.backup.dao.BackupOfferingDao;
import org.apache.cloudstack.context.CallContext;
import org.apache.cloudstack.engine.subsystem.api.storage.DataStore;
import
org.apache.cloudstack.engine.subsystem.api.storage.DataStoreCapabilities;
@@ -201,7 +219,6 @@ import com.cloud.exception.CloudAuthenticationException;
import com.cloud.exception.InvalidParameterValueException;
import com.cloud.exception.PermissionDeniedException;
import com.cloud.ha.HighAvailabilityManager;
-import com.cloud.host.Host;
import com.cloud.hypervisor.Hypervisor;
import com.cloud.hypervisor.Hypervisor.HypervisorType;
import com.cloud.network.RouterHealthCheckResult;
@@ -247,7 +264,6 @@ import com.cloud.storage.VolumeVO;
import com.cloud.storage.dao.DiskOfferingDao;
import com.cloud.storage.dao.StoragePoolTagsDao;
import com.cloud.storage.dao.VMTemplateDao;
-import com.cloud.storage.dao.VolumeDao;
import com.cloud.tags.ResourceTagVO;
import com.cloud.tags.dao.ResourceTagDao;
import com.cloud.template.VirtualMachineTemplate.State;
@@ -281,6 +297,8 @@ import com.cloud.vm.dao.DomainRouterDao;
import com.cloud.vm.dao.UserVmDao;
import com.cloud.vm.dao.VMInstanceDao;
+import static com.cloud.vm.VmDetailConstants.SSH_PUBLIC_KEY;
+
@Component
public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements
QueryService, Configurable {
@@ -289,7 +307,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private static final String ID_FIELD = "id";
@Inject
- private AccountManager _accountMgr;
+ private AccountManager accountMgr;
@Inject
private ProjectManager _projectMgr;
@@ -316,7 +334,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private UserVmJoinDao _userVmJoinDao;
@Inject
- private UserVmDao _userVmDao;
+ private UserVmDao userVmDao;
@Inject
private VMInstanceDao _vmInstanceDao;
@@ -325,7 +343,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private SecurityGroupJoinDao _securityGroupJoinDao;
@Inject
- private SecurityGroupVMMapDao _securityGroupVMMapDao;
+ private SecurityGroupVMMapDao securityGroupVMMapDao;
@Inject
private DomainRouterJoinDao _routerJoinDao;
@@ -346,7 +364,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private ProjectAccountJoinDao _projectAccountJoinDao;
@Inject
- private HostJoinDao _hostJoinDao;
+ private HostJoinDao hostJoinDao;
@Inject
private VolumeJoinDao _volumeJoinDao;
@@ -429,7 +447,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private AffinityGroupDomainMapDao _affinityGroupDomainMapDao;
@Inject
- private ResourceTagDao _resourceTagDao;
+ private ResourceTagDao resourceTagDao;
@Inject
private DataStoreManager dataStoreManager;
@@ -447,7 +465,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private RouterHealthCheckResultDao routerHealthCheckResultDao;
@Inject
- private PrimaryDataStoreDao _storagePoolDao;
+ private PrimaryDataStoreDao storagePoolDao;
@Inject
private StoragePoolDetailsDao _storagePoolDetailsDao;
@@ -470,8 +488,37 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private ManagementServerHostDao msHostDao;
@Inject
- private SnapshotJoinDao snapshotJoinDao;
+ private NetworkDao networkDao;
+
+ @Inject
+ private NicDao nicDao;
+
+ @Inject
+ private HostDao hostDao;
+
+ @Inject
+ private InstanceGroupVMMapDao instanceGroupVMMapDao;
+
+ @Inject
+ private AffinityGroupVMMapDao affinityGroupVMMapDao;
+
+ @Inject
+ private UserVmDetailsDao userVmDetailsDao;
+
+ @Inject
+ private SSHKeyPairDao sshKeyPairDao;
+
+ @Inject
+ private BackupOfferingDao backupOfferingDao;
+
+ @Inject
+ private AutoScaleVmGroupDao autoScaleVmGroupDao;
+
+ @Inject
+ private AutoScaleVmGroupVmMapDao autoScaleVmGroupVmMapDao;
+ @Inject
+ private SnapshotJoinDao snapshotJoinDao;
@Inject
EntityManager entityManager;
@@ -595,13 +642,13 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private Pair<List<UserAccountJoinVO>, Integer> getUserListInternal(Account
caller, List<Long> permittedAccounts, boolean listAll, Long id, Object
username, Object type,
String accountName, Object state, String keyword, Long domainId,
boolean recursive, Filter searchFilter) {
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(domainId, recursive, null);
- _accountMgr.buildACLSearchParameters(caller, id, accountName, null,
permittedAccounts, domainIdRecursiveListProject, listAll, false);
+ accountMgr.buildACLSearchParameters(caller, id, accountName, null,
permittedAccounts, domainIdRecursiveListProject, listAll, false);
domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
SearchBuilder<UserAccountJoinVO> sb =
_userAccountJoinDao.createSearchBuilder();
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
sb.and("username", sb.entity().getUsername(), Op.LIKE);
if (id != null && id == 1) {
// system user should NOT be searchable
@@ -627,7 +674,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
SearchCriteria<UserAccountJoinVO> sc = sb.create();
// building ACL condition
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
if (keyword != null) {
SearchCriteria<UserAccountJoinVO> ssc =
_userAccountJoinDao.createSearchCriteria();
@@ -687,7 +734,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private Pair<List<EventJoinVO>, Integer>
searchForEventsInternal(ListEventsCmd cmd) {
Account caller = CallContext.current().getCallingAccount();
- boolean isRootAdmin = _accountMgr.isRootAdmin(caller.getId());
+ boolean isRootAdmin = accountMgr.isRootAdmin(caller.getId());
List<Long> permittedAccounts = new ArrayList<Long>();
Long id = cmd.getId();
@@ -727,12 +774,12 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
}
if (!isRootAdmin && object instanceof ControlledEntity) {
ControlledEntity entity = (ControlledEntity)object;
-
_accountMgr.checkAccess(CallContext.current().getCallingAccount(),
SecurityChecker.AccessType.ListEntry, entity.getAccountId() == caller.getId(),
entity);
+
accountMgr.checkAccess(CallContext.current().getCallingAccount(),
SecurityChecker.AccessType.ListEntry, entity.getAccountId() == caller.getId(),
entity);
}
}
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
+ accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
@@ -743,7 +790,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
searchFilter.addOrderBy(EventJoinVO.class, "id", false);
SearchBuilder<EventJoinVO> sb = _eventJoinDao.createSearchBuilder();
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
sb.and("levelL", sb.entity().getLevel(), SearchCriteria.Op.LIKE);
@@ -762,10 +809,10 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
SearchCriteria<EventJoinVO> sc = sb.create();
// building ACL condition
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
// For end users display only enabled events
- if (!_accountMgr.isRootAdmin(caller.getId())) {
+ if (!accountMgr.isRootAdmin(caller.getId())) {
sc.setParameters("displayEvent", true);
}
@@ -880,14 +927,14 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, null,
cmd.getAccountName(), projectId, permittedAccounts,
domainIdRecursiveListProject, listAll, false);
+ accountMgr.buildACLSearchParameters(caller, null,
cmd.getAccountName(), projectId, permittedAccounts,
domainIdRecursiveListProject, listAll, false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
Filter searchFilter = new Filter(ResourceTagJoinVO.class,
"resourceType", false, cmd.getStartIndex(), cmd.getPageSizeVal());
SearchBuilder<ResourceTagJoinVO> sb =
_resourceTagJoinDao.createSearchBuilder();
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
sb.and("key", sb.entity().getKey(), SearchCriteria.Op.EQ);
sb.and("value", sb.entity().getValue(), SearchCriteria.Op.EQ);
@@ -902,7 +949,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
// now set the SC criteria...
SearchCriteria<ResourceTagJoinVO> sc = sb.create();
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
if (key != null) {
sc.setParameters("key", key);
@@ -952,7 +999,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
List<Long> permittedAccounts = new ArrayList<Long>();
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
+ accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
@@ -960,13 +1007,13 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Filter searchFilter = new Filter(InstanceGroupJoinVO.class, "id",
true, cmd.getStartIndex(), cmd.getPageSizeVal());
SearchBuilder<InstanceGroupJoinVO> sb =
_vmGroupJoinDao.createSearchBuilder();
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
SearchCriteria<InstanceGroupJoinVO> sc = sb.create();
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
if (keyword != null) {
SearchCriteria<InstanceGroupJoinVO> ssc =
_vmGroupJoinDao.createSearchCriteria();
@@ -997,7 +1044,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
ResponseView respView = ResponseView.Restricted;
Account caller = CallContext.current().getCallingAccount();
- if (_accountMgr.isRootAdmin(caller.getId())) {
+ if (accountMgr.isRootAdmin(caller.getId())) {
respView = ResponseView.Full;
}
List<UserVmResponse> vmResponses =
ViewResponseHelper.createUserVmResponse(respView, "virtualmachine",
cmd.getDetails(), cmd.getAccumulate(), cmd.getShowUserData(),
@@ -1019,21 +1066,79 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
}
private Pair<List<UserVmJoinVO>, Integer>
searchForUserVMsInternal(ListVMsCmd cmd) {
+ Pair<List<Long>, Integer> vmIdPage = searchForUserVMIdsAndCount(cmd);
+
+ Integer count = vmIdPage.second();
+ Long[] idArray = vmIdPage.first().toArray(new Long[0]);
+
+ if (count == 0) {
+ return new Pair<>(new ArrayList<>(), count);
+ }
+
+ // search vm details by ids
+ List<UserVmJoinVO> vms = _userVmJoinDao.searchByIds( idArray);
+ return new Pair<>(vms, count);
+ }
+
+ private Pair<List<Long>, Integer> searchForUserVMIdsAndCount(ListVMsCmd
cmd) {
Account caller = CallContext.current().getCallingAccount();
List<Long> permittedAccounts = new ArrayList<>();
-
boolean listAll = cmd.listAll();
Long id = cmd.getId();
+ Boolean display = cmd.getDisplay();
+ String hypervisor = cmd.getHypervisor();
+ String state = cmd.getState();
+ Long zoneId = cmd.getZoneId();
+ Long templateId = cmd.getTemplateId();
+ Long serviceOfferingId = cmd.getServiceOfferingId();
+ Boolean isHaEnabled = cmd.getHaEnabled();
+ String keyword = cmd.getKeyword();
+ Long networkId = cmd.getNetworkId();
+ Long isoId = cmd.getIsoId();
+ String vmHostName = cmd.getName();
+ Long hostId = null;
+ Long podId = null;
+ Long clusterId = null;
+ Long groupId = cmd.getGroupId();
+ Long vpcId = cmd.getVpcId();
+ Long affinityGroupId = cmd.getAffinityGroupId();
+ String keyPairName = cmd.getKeyPairName();
+ Long securityGroupId = cmd.getSecurityGroupId();
+ Long autoScaleVmGroupId = cmd.getAutoScaleVmGroupId();
+ Long backupOfferingId = cmd.getBackupOfferingId();
+ Long storageId = null;
+ StoragePoolVO pool = null;
Long userId = cmd.getUserId();
Map<String, String> tags = cmd.getTags();
- Boolean display = cmd.getDisplay();
+
+ boolean isAdmin = false;
+ boolean isRootAdmin = false;
+
+ if (accountMgr.isAdmin(caller.getId())) {
+ isAdmin = true;
+ }
+
+ if (accountMgr.isRootAdmin(caller.getId())) {
+ isRootAdmin = true;
+ podId = (Long) getObjectPossibleMethodValue(cmd, "getPodId");
+ clusterId = (Long) getObjectPossibleMethodValue(cmd,
"getClusterId");
+ hostId = (Long) getObjectPossibleMethodValue(cmd, "getHostId");
+ storageId = (Long) getObjectPossibleMethodValue(cmd,
"getStorageId");
+ if (storageId != null) {
+ pool = storagePoolDao.findById( storageId);
+ if (pool == null) {
+ throw new InvalidParameterValueException("Unable to find
specified storage pool");
+ }
+ }
+ }
+
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<>(cmd.getDomainId(),
cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, listAll,
false);
+ accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, listAll,
false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
- Filter searchFilter = new Filter(UserVmJoinVO.class, "id", true,
cmd.getStartIndex(), cmd.getPageSizeVal());
+ Filter searchFilter = new Filter(UserVmVO.class, "id", true,
cmd.getStartIndex(), cmd.getPageSizeVal());
List<Long> ids = null;
if (cmd.getId() != null) {
@@ -1046,302 +1151,319 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
ids = cmd.getIds();
}
- // first search distinct vm id by using query criteria and pagination
- SearchBuilder<UserVmJoinVO> sb = _userVmJoinDao.createSearchBuilder();
- sb.select(null, Func.DISTINCT, sb.entity().getId()); // select
distinct ids
+ SearchBuilder<UserVmVO> userVmSearchBuilder =
userVmDao.createSearchBuilder();
+ userVmSearchBuilder.select(null, Func.DISTINCT,
userVmSearchBuilder.entity().getId());
+ accountMgr.buildACLSearchBuilder(userVmSearchBuilder, domainId,
isRecursive, permittedAccounts, listProjectResourcesCriteria);
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ if (HypervisorType.getType(hypervisor) == HypervisorType.None &&
hypervisor != null) {
+ // invalid hypervisor type input
+ throw new InvalidParameterValueException("Invalid HypervisorType "
+ hypervisor);
+ }
- String hypervisor = cmd.getHypervisor();
- Object name = cmd.getName();
- String state = cmd.getState();
- Object zoneId = cmd.getZoneId();
- Object keyword = cmd.getKeyword();
- boolean isAdmin = false;
- boolean isRootAdmin = false;
- if (_accountMgr.isAdmin(caller.getId())) {
- isAdmin = true;
+ if (ids != null && !ids.isEmpty()) {
+ userVmSearchBuilder.and("idIN",
userVmSearchBuilder.entity().getId(), Op.IN);
}
- if (_accountMgr.isRootAdmin(caller.getId())) {
- isRootAdmin = true;
+
+ userVmSearchBuilder.and("displayName",
userVmSearchBuilder.entity().getDisplayName(), Op.LIKE);
+ userVmSearchBuilder.and("stateEQ",
userVmSearchBuilder.entity().getState(), Op.EQ);
+ userVmSearchBuilder.and("stateNEQ",
userVmSearchBuilder.entity().getState(), Op.NEQ);
+ userVmSearchBuilder.and("stateNIN",
userVmSearchBuilder.entity().getState(), Op.NIN);
+
+ if (hostId != null) {
+ userVmSearchBuilder.and("hostId",
userVmSearchBuilder.entity().getHostId(), Op.EQ);
}
- Object groupId = cmd.getGroupId();
- Object networkId = cmd.getNetworkId();
- if (HypervisorType.getType(hypervisor) == HypervisorType.None &&
hypervisor != null) {
- // invalid hypervisor type input
- throw new InvalidParameterValueException("Invalid HypervisorType "
+ hypervisor);
+ if (zoneId != null) {
+ userVmSearchBuilder.and("dataCenterId",
userVmSearchBuilder.entity().getDataCenterId(), Op.EQ);
}
- Object templateId = cmd.getTemplateId();
- Object isoId = cmd.getIsoId();
- Object vpcId = cmd.getVpcId();
- Object affinityGroupId = cmd.getAffinityGroupId();
- Object keyPairName = cmd.getKeyPairName();
- Object serviceOffId = cmd.getServiceOfferingId();
- Object securityGroupId = cmd.getSecurityGroupId();
- Object backupOfferingId = cmd.getBackupOfferingId();
- Object isHaEnabled = cmd.getHaEnabled();
- Object autoScaleVmGroupId = cmd.getAutoScaleVmGroupId();
- Object pod = null;
- Object clusterId = null;
- Object hostId = null;
- Object storageId = null;
- if (_accountMgr.isRootAdmin(caller.getId())) {
- pod = getObjectPossibleMethodValue(cmd, "getPodId");
- clusterId = getObjectPossibleMethodValue(cmd, "getClusterId");
- hostId = getObjectPossibleMethodValue(cmd, "getHostId");
- storageId = getObjectPossibleMethodValue(cmd, "getStorageId");
- }
-
- sb.and("displayName", sb.entity().getDisplayName(),
SearchCriteria.Op.LIKE);
- sb.and("idIN", sb.entity().getId(), SearchCriteria.Op.IN);
- sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
- sb.and("stateEQ", sb.entity().getState(), SearchCriteria.Op.EQ);
- sb.and("stateNEQ", sb.entity().getState(), SearchCriteria.Op.NEQ);
- sb.and("stateNIN", sb.entity().getState(), SearchCriteria.Op.NIN);
- sb.and("dataCenterId", sb.entity().getDataCenterId(),
SearchCriteria.Op.EQ);
- sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ);
- if (clusterId != null) {
- sb.and().op("clusterId", sb.entity().getClusterId(),
SearchCriteria.Op.EQ);
- sb.or("clusterHostId", sb.entity().getHostId(), Op.IN);
- sb.or("clusterLastHostId", sb.entity().getLastHostId(), Op.IN);
- sb.cp();
+
+ if (templateId != null) {
+ userVmSearchBuilder.and("templateId",
userVmSearchBuilder.entity().getTemplateId(), Op.EQ);
}
- sb.and("hypervisorType", sb.entity().getHypervisorType(),
SearchCriteria.Op.EQ);
- sb.and("hostIdEQ", sb.entity().getHostId(), SearchCriteria.Op.EQ);
- sb.and("templateId", sb.entity().getTemplateId(),
SearchCriteria.Op.EQ);
- sb.and("isoId", sb.entity().getIsoId(), SearchCriteria.Op.EQ);
- sb.and("instanceGroupId", sb.entity().getInstanceGroupId(),
SearchCriteria.Op.EQ);
- if (serviceOffId != null) {
- sb.and("serviceOfferingId", sb.entity().getServiceOfferingId(),
SearchCriteria.Op.EQ);
+ if (hypervisor != null) {
+ userVmSearchBuilder.and("hypervisorType",
userVmSearchBuilder.entity().getHypervisorType(), Op.EQ);
}
- if (backupOfferingId != null) {
- sb.and("backupOfferingId", sb.entity().getBackupOfferingId(),
SearchCriteria.Op.EQ);
+ if (vmHostName != null) {
+ userVmSearchBuilder.and("name",
userVmSearchBuilder.entity().getHostName(), Op.EQ);
}
+ if (serviceOfferingId != null) {
+ userVmSearchBuilder.and("serviceOfferingId",
userVmSearchBuilder.entity().getServiceOfferingId(), Op.EQ);
+ }
if (display != null) {
- sb.and("display", sb.entity().isDisplayVm(), SearchCriteria.Op.EQ);
+ userVmSearchBuilder.and("display",
userVmSearchBuilder.entity().isDisplayVm(), Op.EQ);
+ }
+
+ if (!isRootAdmin) {
+ userVmSearchBuilder.and("displayVm",
userVmSearchBuilder.entity().isDisplayVm(), Op.EQ);
}
if (isHaEnabled != null) {
- sb.and("haEnabled", sb.entity().isHaEnabled(),
SearchCriteria.Op.EQ);
+ userVmSearchBuilder.and("haEnabled",
userVmSearchBuilder.entity().isHaEnabled(), Op.EQ);
}
- if (groupId != null && (Long)groupId != -1) {
- sb.and("instanceGroupId", sb.entity().getInstanceGroupId(),
SearchCriteria.Op.EQ);
+ if (isoId != null) {
+ userVmSearchBuilder.and("isoId",
userVmSearchBuilder.entity().getIsoId(), Op.EQ);
}
if (userId != null) {
- sb.and("userId", sb.entity().getUserId(), SearchCriteria.Op.EQ);
+ userVmSearchBuilder.and("userId",
userVmSearchBuilder.entity().getUserId(), Op.EQ);
}
- if (networkId != null) {
- sb.and("networkId", sb.entity().getNetworkId(),
SearchCriteria.Op.EQ);
+ if (podId != null) {
+ userVmSearchBuilder.and("podId",
userVmSearchBuilder.entity().getPodIdToDeployIn(), Op.EQ);
+ }
+
+ if (networkId != null || vpcId != null) {
+ SearchBuilder<NicVO> nicSearch = nicDao.createSearchBuilder();
+ nicSearch.and("networkId", nicSearch.entity().getNetworkId(),
Op.EQ);
+ if (vpcId != null) {
+ SearchBuilder<NetworkVO> networkSearch =
networkDao.createSearchBuilder();
+ networkSearch.and("vpcId", networkSearch.entity().getVpcId(),
Op.EQ);
+ nicSearch.join("vpc", networkSearch,
networkSearch.entity().getId(), nicSearch.entity().getNetworkId(),
JoinBuilder.JoinType.INNER);
+ }
+ userVmSearchBuilder.join("nic", nicSearch,
nicSearch.entity().getInstanceId(), userVmSearchBuilder.entity().getId(),
JoinBuilder.JoinType.INNER);
}
- if (vpcId != null && networkId == null) {
- sb.and("vpcId", sb.entity().getVpcId(), SearchCriteria.Op.EQ);
+ if (clusterId != null) {
+ userVmSearchBuilder.and().op("hostIdIn",
userVmSearchBuilder.entity().getHostId(), Op.IN);
+ userVmSearchBuilder.or().op("lastHostIdIn",
userVmSearchBuilder.entity().getLastHostId(), Op.IN);
+ userVmSearchBuilder.and(userVmSearchBuilder.entity().getState(),
Op.EQ).values(VirtualMachine.State.Stopped);
+ userVmSearchBuilder.cp().cp();
+ }
+
+ if (groupId != null && groupId != -1) {
+ SearchBuilder<InstanceGroupVMMapVO> instanceGroupSearch =
instanceGroupVMMapDao.createSearchBuilder();
+ instanceGroupSearch.and("groupId",
instanceGroupSearch.entity().getGroupId(), Op.EQ);
+ userVmSearchBuilder.join("instanceGroup", instanceGroupSearch,
instanceGroupSearch.entity().getInstanceId(),
userVmSearchBuilder.entity().getId(), JoinBuilder.JoinType.INNER);
+ }
+
+ if (affinityGroupId != null && affinityGroupId != -1) {
+ SearchBuilder<AffinityGroupVMMapVO> affinityGroupSearch =
affinityGroupVMMapDao.createSearchBuilder();
+ affinityGroupSearch.and("affinityGroupId",
affinityGroupSearch.entity().getAffinityGroupId(), Op.EQ);
+ userVmSearchBuilder.join("affinityGroup", affinityGroupSearch,
affinityGroupSearch.entity().getInstanceId(),
userVmSearchBuilder.entity().getId(), JoinBuilder.JoinType.INNER);
+ }
+
+ if (securityGroupId != null && securityGroupId != -1) {
+ SearchBuilder<SecurityGroupVMMapVO> securityGroupSearch =
securityGroupVMMapDao.createSearchBuilder();
+ securityGroupSearch.and("securityGroupId",
securityGroupSearch.entity().getSecurityGroupId(), Op.EQ);
+ userVmSearchBuilder.join("securityGroup", securityGroupSearch,
securityGroupSearch.entity().getInstanceId(),
userVmSearchBuilder.entity().getId(), JoinBuilder.JoinType.INNER);
}
if (storageId != null) {
- StoragePoolVO poolVO = _storagePoolDao.findById((Long) storageId);
- if (poolVO.getPoolType() ==
Storage.StoragePoolType.DatastoreCluster) {
- sb.and("poolId", sb.entity().getPoolId(),
SearchCriteria.Op.IN);
+ SearchBuilder<VolumeVO> volumeSearch =
volumeDao.createSearchBuilder();
+ if
(pool.getPoolType().equals(Storage.StoragePoolType.DatastoreCluster)) {
+ volumeSearch.and("storagePoolId",
volumeSearch.entity().getPoolId(), Op.IN);
} else {
- sb.and("poolId", sb.entity().getPoolId(),
SearchCriteria.Op.EQ);
+ volumeSearch.and("storagePoolId",
volumeSearch.entity().getPoolId(), Op.EQ);
}
+ userVmSearchBuilder.join("volume", volumeSearch,
volumeSearch.entity().getInstanceId(), userVmSearchBuilder.entity().getId(),
JoinBuilder.JoinType.INNER);
}
- if (affinityGroupId != null) {
- sb.and("affinityGroupId", sb.entity().getAffinityGroupId(),
SearchCriteria.Op.EQ);
+ if (tags != null && !tags.isEmpty()) {
+ SearchBuilder<ResourceTagVO> resourceTagSearch =
resourceTagDao.createSearchBuilder();
+ resourceTagSearch.and("resourceType",
resourceTagSearch.entity().getResourceType(), Op.EQ);
+ resourceTagSearch.and().op();
+ for (int count = 0; count < tags.size(); count++) {
+ if (count == 0) {
+ resourceTagSearch.op("tagKey" + String.valueOf(count),
resourceTagSearch.entity().getKey(), Op.EQ);
+ } else {
+ resourceTagSearch.or().op("tagKey" +
String.valueOf(count), resourceTagSearch.entity().getKey(), Op.EQ);
+ }
+ resourceTagSearch.and("tagValue" + String.valueOf(count),
resourceTagSearch.entity().getValue(), Op.EQ);
+ resourceTagSearch.cp();
+ }
+ resourceTagSearch.cp();
+
+ userVmSearchBuilder.join("tags", resourceTagSearch,
resourceTagSearch.entity().getResourceId(),
userVmSearchBuilder.entity().getId(), JoinBuilder.JoinType.INNER);
}
if (keyPairName != null) {
- sb.and("keyPairName", sb.entity().getKeypairNames(),
SearchCriteria.Op.FIND_IN_SET);
+ SearchBuilder<UserVmDetailVO> vmDetailSearchKeys =
userVmDetailsDao.createSearchBuilder();
+ SearchBuilder<UserVmDetailVO> vmDetailSearchVmIds =
userVmDetailsDao.createSearchBuilder();
+ vmDetailSearchKeys.and(vmDetailSearchKeys.entity().getName(),
Op.EQ).values(SSH_PUBLIC_KEY);
+
+ SearchBuilder<SSHKeyPairVO> sshKeyPairSearch =
sshKeyPairDao.createSearchBuilder();
+ sshKeyPairSearch.and("keyPairName",
sshKeyPairSearch.entity().getName(), Op.EQ);
+
+ sshKeyPairSearch.join("keyPairToDetailValueJoin",
vmDetailSearchKeys, vmDetailSearchKeys.entity().getValue(),
sshKeyPairSearch.entity().getPublicKey(), JoinBuilder.JoinType.INNER);
+ userVmSearchBuilder.join("userVmToDetailJoin",
vmDetailSearchVmIds, vmDetailSearchVmIds.entity().getResourceId(),
userVmSearchBuilder.entity().getId(), JoinBuilder.JoinType.INNER);
+ userVmSearchBuilder.join("userVmToKeyPairJoin", sshKeyPairSearch,
sshKeyPairSearch.entity().getAccountId(),
userVmSearchBuilder.entity().getAccountId(), JoinBuilder.JoinType.INNER);
}
- if (!isRootAdmin) {
- sb.and("displayVm", sb.entity().isDisplayVm(),
SearchCriteria.Op.EQ);
+ if (keyword != null) {
+ userVmSearchBuilder.and().op("keywordDisplayName",
userVmSearchBuilder.entity().getDisplayName(), Op.LIKE);
+ userVmSearchBuilder.or("keywordName",
userVmSearchBuilder.entity().getHostName(), Op.LIKE);
+ userVmSearchBuilder.or("keywordState",
userVmSearchBuilder.entity().getState(), Op.EQ);
+ if (isRootAdmin) {
+ userVmSearchBuilder.or("keywordInstanceName",
userVmSearchBuilder.entity().getInstanceName(), Op.LIKE );
+ }
+ userVmSearchBuilder.cp();
}
- if (securityGroupId != null) {
- sb.and("securityGroupId", sb.entity().getSecurityGroupId(),
SearchCriteria.Op.EQ);
+ if (backupOfferingId != null) {
+ SearchBuilder<BackupOfferingVO> backupOfferingSearch =
backupOfferingDao.createSearchBuilder();
+ backupOfferingSearch.and("backupOfferingId",
backupOfferingSearch.entity().getId(), Op.EQ);
+ userVmSearchBuilder.join("backupOffering", backupOfferingSearch,
backupOfferingSearch.entity().getId(),
userVmSearchBuilder.entity().getBackupOfferingId(), JoinBuilder.JoinType.INNER);
}
if (autoScaleVmGroupId != null) {
- sb.and("autoScaleVmGroupId", sb.entity().getAutoScaleVmGroupId(),
SearchCriteria.Op.EQ);
+ SearchBuilder<AutoScaleVmGroupVmMapVO> autoScaleMapSearch =
autoScaleVmGroupVmMapDao.createSearchBuilder();
+ autoScaleMapSearch.and("autoScaleVmGroupId",
autoScaleMapSearch.entity().getVmGroupId(), Op.EQ);
+ userVmSearchBuilder.join("autoScaleVmGroup", autoScaleMapSearch,
autoScaleMapSearch.entity().getInstanceId(),
userVmSearchBuilder.entity().getId(), JoinBuilder.JoinType.INNER);
}
- // populate the search criteria with the values passed in
- SearchCriteria<UserVmJoinVO> sc = sb.create();
-
- // building ACL condition
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
-
- if (tags != null && !tags.isEmpty()) {
- SearchCriteria<UserVmJoinVO> tagSc =
_userVmJoinDao.createSearchCriteria();
- for (Map.Entry<String, String> entry : tags.entrySet()) {
- SearchCriteria<UserVmJoinVO> tsc =
_userVmJoinDao.createSearchCriteria();
- tsc.addAnd("tagKey", SearchCriteria.Op.EQ, entry.getKey());
- tsc.addAnd("tagValue", SearchCriteria.Op.EQ, entry.getValue());
- tagSc.addOr("tagKey", SearchCriteria.Op.SC, tsc);
- }
- sc.addAnd("tagKey", SearchCriteria.Op.SC, tagSc);
- }
+ SearchCriteria<UserVmVO> userVmSearchCriteria =
userVmSearchBuilder.create();
+ accountMgr.buildACLSearchCriteria(userVmSearchCriteria, domainId,
isRecursive, permittedAccounts, listProjectResourcesCriteria);
- if (groupId != null && (Long)groupId != -1) {
- sc.setParameters("instanceGroupId", groupId);
+ if (serviceOfferingId != null) {
+ userVmSearchCriteria.setParameters("serviceOfferingId",
serviceOfferingId);
}
- if (keyword != null) {
- SearchCriteria<UserVmJoinVO> ssc =
_userVmJoinDao.createSearchCriteria();
- String likeKeyword = String.format("%%%s%%", keyword);
- ssc.addOr("displayName", SearchCriteria.Op.LIKE, likeKeyword);
- ssc.addOr("name", SearchCriteria.Op.LIKE, likeKeyword);
- if (isRootAdmin) {
- ssc.addOr("instanceName", SearchCriteria.Op.LIKE, likeKeyword);
+ if (state != null) {
+ if (state.equalsIgnoreCase("present")) {
+ userVmSearchCriteria.setParameters("stateNIN", "Destroyed",
"Expunging");
+ } else {
+ userVmSearchCriteria.setParameters("stateEQ", state);
}
- ssc.addOr("ipAddress", SearchCriteria.Op.LIKE, likeKeyword);
- ssc.addOr("publicIpAddress", SearchCriteria.Op.LIKE, likeKeyword);
- ssc.addOr("ip6Address", SearchCriteria.Op.LIKE, likeKeyword);
- ssc.addOr("state", SearchCriteria.Op.EQ, keyword);
- sc.addAnd("displayName", SearchCriteria.Op.SC, ssc);
}
- if (serviceOffId != null) {
- sc.setParameters("serviceOfferingId", serviceOffId);
+ if (hypervisor != null) {
+ userVmSearchCriteria.setParameters("hypervisorType", hypervisor);
}
- if (backupOfferingId != null) {
- sc.setParameters("backupOfferingId", backupOfferingId);
+ // Don't show Destroyed and Expunging vms to the end user if the
AllowUserViewDestroyedVM flag is not set.
+ if (!isAdmin &&
!AllowUserViewDestroyedVM.valueIn(caller.getAccountId())) {
+ userVmSearchCriteria.setParameters("stateNIN", "Destroyed",
"Expunging");
}
- if (securityGroupId != null) {
- sc.setParameters("securityGroupId", securityGroupId);
+ if (zoneId != null) {
+ userVmSearchCriteria.setParameters("dataCenterId", zoneId);
}
- if (autoScaleVmGroupId != null) {
- sc.setParameters("autoScaleVmGroupId", autoScaleVmGroupId);
+ if (templateId != null) {
+ userVmSearchCriteria.setParameters("templateId", templateId);
}
if (display != null) {
- sc.setParameters("display", display);
+ userVmSearchCriteria.setParameters("display", display);
}
if (isHaEnabled != null) {
- sc.setParameters("haEnabled", isHaEnabled);
+ userVmSearchCriteria.setParameters("haEnabled", isHaEnabled);
}
- if (ids != null && !ids.isEmpty()) {
- sc.setParameters("idIN", ids.toArray());
+ if (isoId != null) {
+ userVmSearchCriteria.setParameters("isoId", isoId);
}
- if (templateId != null) {
- sc.setParameters("templateId", templateId);
+ if (ids != null && !ids.isEmpty()) {
+ userVmSearchCriteria.setParameters("idIN", ids.toArray());
}
- if (isoId != null) {
- sc.setParameters("isoId", isoId);
+ if (vmHostName != null) {
+ userVmSearchCriteria.setParameters("name", vmHostName);
}
- if (userId != null) {
- sc.setParameters("userId", userId);
+ if (groupId != null && groupId != -1) {
+ userVmSearchCriteria.setJoinParameters("instanceGroup","groupId",
groupId);
}
- if (networkId != null) {
- sc.setParameters("networkId", networkId);
+ if (affinityGroupId != null && affinityGroupId != -1) {
+ userVmSearchCriteria.setJoinParameters("affinityGroup",
"affinityGroupId", affinityGroupId);
}
- if (vpcId != null && networkId == null) {
- sc.setParameters("vpcId", vpcId);
+ if (securityGroupId != null && securityGroupId != -1) {
+
userVmSearchCriteria.setJoinParameters("securityGroup","securityGroupId",
securityGroupId);
}
- if (name != null) {
- sc.setParameters("name", name);
+ if (keyword != null) {
+ String keywordMatch = "%" + keyword + "%";
+ userVmSearchCriteria.setParameters("keywordDisplayName",
keywordMatch);
+ userVmSearchCriteria.setParameters("keywordName", keywordMatch);
+ userVmSearchCriteria.setParameters("keywordState", keyword);
+ if (isRootAdmin) {
+ userVmSearchCriteria.setParameters("keywordInstanceName",
keywordMatch);
+ }
}
- if (state != null) {
- if (state.equalsIgnoreCase("present")) {
- sc.setParameters("stateNIN", "Destroyed", "Expunging");
- } else {
- sc.setParameters("stateEQ", state);
+ if (tags != null && !tags.isEmpty()) {
+ int count = 0;
+ userVmSearchCriteria.setJoinParameters("tags","resourceType",
ResourceObjectType.UserVm);
+ for (Map.Entry<String, String> entry : tags.entrySet()) {
+ userVmSearchCriteria.setJoinParameters("tags", "tagKey" +
String.valueOf(count), entry.getKey());
+ userVmSearchCriteria.setJoinParameters("tags", "tagValue" +
String.valueOf(count), entry.getValue());
+ count++;
}
}
- if (hypervisor != null) {
- sc.setParameters("hypervisorType", hypervisor);
+ if (keyPairName != null) {
+ userVmSearchCriteria.setJoinParameters("userVmToKeyPairJoin",
"keyPairName", keyPairName);
}
- // Don't show Destroyed and Expunging vms to the end user if the
AllowUserViewDestroyedVM flag is not set.
- if (!isAdmin &&
!AllowUserViewDestroyedVM.valueIn(caller.getAccountId())) {
- sc.setParameters("stateNIN", "Destroyed", "Expunging");
+ if (networkId != null) {
+ userVmSearchCriteria.setJoinParameters("nic", "networkId",
networkId);
}
- if (zoneId != null) {
- sc.setParameters("dataCenterId", zoneId);
+ if (vpcId != null) {
+ userVmSearchCriteria.getJoin("nic").setJoinParameters("vpc",
"vpcId", vpcId);
}
- if (affinityGroupId != null) {
- sc.setParameters("affinityGroupId", affinityGroupId);
+ if (userId != null) {
+ userVmSearchCriteria.setParameters("userId", userId);
}
- if (keyPairName != null) {
- sc.setParameters("keyPairName", keyPairName);
+ if (backupOfferingId != null) {
+ userVmSearchCriteria.setJoinParameters("backupOffering",
"backupOfferingId", backupOfferingId);
}
- if (_accountMgr.isRootAdmin(caller.getId())) {
- if (pod != null) {
- sc.setParameters("podId", pod);
+ if (autoScaleVmGroupId != null) {
+ userVmSearchCriteria.setJoinParameters("autoScaleVmGroup",
"autoScaleVmGroupId", autoScaleVmGroupId);
+ }
+ if (isRootAdmin) {
+ if (podId != null) {
+ userVmSearchCriteria.setParameters("podId", podId);
if (state == null) {
- sc.setParameters("stateNEQ", "Destroyed");
+ userVmSearchCriteria.setParameters("stateNEQ",
"Destroyed");
}
}
if (clusterId != null) {
- sc.setParameters("clusterId", clusterId);
- List<HostJoinVO> hosts =
_hostJoinDao.findByClusterId((Long)clusterId, Host.Type.Routing);
+ List<HostJoinVO> hosts =
hostJoinDao.findByClusterId(clusterId, Host.Type.Routing);
+ if (CollectionUtils.isEmpty(hosts)) {
+ // cluster has no hosts, so we cannot find VMs, cancel
search.
+ return new Pair<>(new ArrayList<>(), 0);
+ }
List<Long> hostIds =
hosts.stream().map(HostJoinVO::getId).collect(Collectors.toList());
- sc.setParameters("clusterHostId", hostIds.toArray());
- sc.setParameters("clusterLastHostId", hostIds.toArray());
+ userVmSearchCriteria.setParameters("hostIdIn",
hostIds.toArray());
+ userVmSearchCriteria.setParameters("lastHostIdIn",
hostIds.toArray());
}
if (hostId != null) {
- sc.setParameters("hostIdEQ", hostId);
+ userVmSearchCriteria.setParameters("hostId", hostId);
}
- if (storageId != null) {
- StoragePoolVO poolVO = _storagePoolDao.findById((Long)
storageId);
- if (poolVO.getPoolType() ==
Storage.StoragePoolType.DatastoreCluster) {
- List<StoragePoolVO> childDatastores =
_storagePoolDao.listChildStoragePoolsInDatastoreCluster((Long) storageId);
+ if (storageId != null && pool != null) {
+ if
(pool.getPoolType().equals(Storage.StoragePoolType.DatastoreCluster)) {
+ List<StoragePoolVO> childDatastores =
storagePoolDao.listChildStoragePoolsInDatastoreCluster(storageId);
List<Long> childDatastoreIds =
childDatastores.stream().map(mo -> mo.getId()).collect(Collectors.toList());
- sc.setParameters("poolId", childDatastoreIds.toArray());
+ userVmSearchCriteria.setJoinParameters("volume",
"storagePoolId", childDatastoreIds.toArray());
} else {
- sc.setParameters("poolId", storageId);
+ userVmSearchCriteria.setJoinParameters("volume",
"storagePoolId", storageId);
}
}
+ } else {
+ userVmSearchCriteria.setParameters("displayVm", 1);
}
- if (!isRootAdmin) {
- sc.setParameters("displayVm", 1);
- }
- // search vm details by ids
- Pair<List<UserVmJoinVO>, Integer> uniqueVmPair =
_userVmJoinDao.searchAndDistinctCount(sc, searchFilter);
+ Pair<List<UserVmVO>, Integer> uniqueVmPair =
userVmDao.searchAndDistinctCount(userVmSearchCriteria, searchFilter, new
String[]{"vm_instance.id"});
Integer count = uniqueVmPair.second();
- if (count.intValue() == 0) {
- // handle empty result cases
- return uniqueVmPair;
- }
- List<UserVmJoinVO> uniqueVms = uniqueVmPair.first();
- Long[] vmIds = new Long[uniqueVms.size()];
- int i = 0;
- for (UserVmJoinVO v : uniqueVms) {
- vmIds[i++] = v.getId();
- }
- List<UserVmJoinVO> vms = _userVmJoinDao.searchByIds(vmIds);
- return new Pair<>(vms, count);
+
+ List<Long> vmIds =
uniqueVmPair.first().stream().map(VMInstanceVO::getId).collect(Collectors.toList());
+ return new Pair<>(vmIds, count);
}
@Override
@@ -1363,16 +1485,16 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Map<String, String> tags = cmd.getTags();
if (instanceId != null) {
- UserVmVO userVM = _userVmDao.findById(instanceId);
+ UserVmVO userVM = userVmDao.findById(instanceId);
if (userVM == null) {
throw new InvalidParameterValueException("Unable to list
network groups for virtual machine instance " + instanceId + "; instance not
found.");
}
- _accountMgr.checkAccess(caller, null, true, userVM);
+ accountMgr.checkAccess(caller, null, true, userVM);
return listSecurityGroupRulesByVM(instanceId.longValue(),
cmd.getStartIndex(), cmd.getPageSizeVal());
}
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
+ accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
@@ -1381,13 +1503,13 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
SearchBuilder<SecurityGroupJoinVO> sb =
_securityGroupJoinDao.createSearchBuilder();
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
// ids
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
SearchCriteria<SecurityGroupJoinVO> sc = sb.create();
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
if (id != null) {
sc.setParameters("id", id);
@@ -1435,7 +1557,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private Pair<List<SecurityGroupJoinVO>, Integer>
listSecurityGroupRulesByVM(long vmId, long pageInd, long pageSize) {
Filter sf = new Filter(SecurityGroupVMMapVO.class, null, true,
pageInd, pageSize);
- Pair<List<SecurityGroupVMMapVO>, Integer> sgVmMappingPair =
_securityGroupVMMapDao.listByInstanceId(vmId, sf);
+ Pair<List<SecurityGroupVMMapVO>, Integer> sgVmMappingPair =
securityGroupVMMapDao.listByInstanceId(vmId, sf);
Integer count = sgVmMappingPair.second();
if (count.intValue() == 0) {
// handle empty result cases
@@ -1499,7 +1621,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
List<Long> permittedAccounts = new ArrayList<Long>();
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
+ accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
@@ -1511,7 +1633,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
// number of
// records with
// pagination
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
sb.and("name", sb.entity().getInstanceName(), SearchCriteria.Op.EQ);
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
@@ -1559,7 +1681,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
}
SearchCriteria<DomainRouterJoinVO> sc = sb.create();
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
if (keyword != null) {
SearchCriteria<DomainRouterJoinVO> ssc =
_routerJoinDao.createSearchCriteria();
@@ -1674,17 +1796,17 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
// ids
- if (_accountMgr.isAdmin(caller.getId())) {
+ if (accountMgr.isAdmin(caller.getId())) {
if (domainId != null) {
DomainVO domain = _domainDao.findById(domainId);
if (domain == null) {
throw new InvalidParameterValueException("Domain id=" +
domainId + " doesn't exist in the system");
}
- _accountMgr.checkAccess(caller, domain);
+ accountMgr.checkAccess(caller, domain);
if (accountName != null) {
- Account owner =
_accountMgr.getActiveAccountByName(accountName, domainId);
+ Account owner =
accountMgr.getActiveAccountByName(accountName, domainId);
if (owner == null) {
throw new InvalidParameterValueException("Unable to
find account " + accountName + " in domain " + domainId);
}
@@ -1725,10 +1847,10 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
userId = user.getId();
}
- if (domainId == null && accountId == null &&
(_accountMgr.isNormalUser(caller.getId()) || !listAll)) {
+ if (domainId == null && accountId == null &&
(accountMgr.isNormalUser(caller.getId()) || !listAll)) {
accountId = caller.getId();
userId = user.getId();
- } else if (_accountMgr.isDomainAdmin(caller.getId()) || (isRecursive
&& !listAll)) {
+ } else if (accountMgr.isDomainAdmin(caller.getId()) || (isRecursive &&
!listAll)) {
DomainVO domain = _domainDao.findById(caller.getDomainId());
path = domain.getPath();
}
@@ -1839,14 +1961,14 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
List<Long> permittedAccounts = new ArrayList<Long>();
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(domainId, isRecursive, null);
- _accountMgr.buildACLSearchParameters(caller, id, accountName,
projectId, permittedAccounts, domainIdRecursiveListProject, listAll, true);
+ accountMgr.buildACLSearchParameters(caller, id, accountName,
projectId, permittedAccounts, domainIdRecursiveListProject, listAll, true);
domainId = domainIdRecursiveListProject.first();
isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
Filter searchFilter = new Filter(ProjectInvitationJoinVO.class, "id",
true, startIndex, pageSizeVal);
SearchBuilder<ProjectInvitationJoinVO> sb =
_projectInvitationJoinDao.createSearchBuilder();
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
ProjectInvitation invitation =
projectInvitationDao.findByUserIdProjectId(callingUser.getId(),
callingUser.getAccountId(), projectId == null ? -1 : projectId);
sb.and("projectId", sb.entity().getProjectId(), SearchCriteria.Op.EQ);
sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ);
@@ -1854,7 +1976,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
SearchCriteria<ProjectInvitationJoinVO> sc = sb.create();
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
if (projectId != null) {
sc.setParameters("projectId", projectId);
@@ -1917,7 +2039,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
// verify permissions - only accounts belonging to the project can list
// project's account
- if (!_accountMgr.isAdmin(caller.getId()) &&
_projectAccountDao.findByProjectIdUserId(projectId, callingUser.getAccountId(),
callingUser.getId()) == null &&
+ if (!accountMgr.isAdmin(caller.getId()) &&
_projectAccountDao.findByProjectIdUserId(projectId, callingUser.getAccountId(),
callingUser.getId()) == null &&
_projectAccountDao.findByProjectIdAccountId(projectId,
caller.getAccountId()) == null) {
throw new PermissionDeniedException("Account " + caller + " is not
authorized to list users of the project id=" + projectId);
}
@@ -1973,7 +2095,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
public Pair<List<HostJoinVO>, Integer>
searchForServersInternal(ListHostsCmd cmd) {
- Long zoneId =
_accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),
cmd.getZoneId());
+ Long zoneId =
accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),
cmd.getZoneId());
Object name = cmd.getHostName();
Object type = cmd.getType();
Object state = cmd.getState();
@@ -1991,7 +2113,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Filter searchFilter = new Filter(HostJoinVO.class, "id", Boolean.TRUE,
startIndex, pageSize);
- SearchBuilder<HostJoinVO> sb = _hostJoinDao.createSearchBuilder();
+ SearchBuilder<HostJoinVO> sb = hostJoinDao.createSearchBuilder();
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
// ids
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
@@ -2021,7 +2143,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
SearchCriteria<HostJoinVO> sc = sb.create();
if (keyword != null) {
- SearchCriteria<HostJoinVO> ssc =
_hostJoinDao.createSearchCriteria();
+ SearchCriteria<HostJoinVO> ssc =
hostJoinDao.createSearchCriteria();
ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%");
ssc.addOr("status", SearchCriteria.Op.LIKE, "%" + keyword + "%");
ssc.addOr("type", SearchCriteria.Op.LIKE, "%" + keyword + "%");
@@ -2072,7 +2194,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
sc.setParameters("hypervisor_type", hypervisorType);
}
// search host details by ids
- Pair<List<HostJoinVO>, Integer> uniqueHostPair =
_hostJoinDao.searchAndCount(sc, searchFilter);
+ Pair<List<HostJoinVO>, Integer> uniqueHostPair =
hostJoinDao.searchAndCount(sc, searchFilter);
Integer count = uniqueHostPair.second();
if (count.intValue() == 0) {
// handle empty result cases
@@ -2084,7 +2206,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
for (HostJoinVO v : uniqueHosts) {
hostIds[i++] = v.getId();
}
- List<HostJoinVO> hosts = _hostJoinDao.searchByIds(hostIds);
+ List<HostJoinVO> hosts = hostJoinDao.searchByIds(hostIds);
return new Pair<List<HostJoinVO>, Integer>(hosts, count);
}
@@ -2101,7 +2223,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
ResponseView respView = cmd.getResponseView();
Account account = CallContext.current().getCallingAccount();
- if (_accountMgr.isRootAdmin(account.getAccountId())) {
+ if (accountMgr.isRootAdmin(account.getAccountId())) {
respView = ResponseView.Full;
}
@@ -2160,7 +2282,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
List<Long> ids = getIdsListFromCmd(cmd.getId(), cmd.getIds());
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
+ accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
@@ -2175,7 +2297,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
// number of
// records with
// pagination
- _accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
@@ -2186,7 +2308,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
sb.and("dataCenterId", sb.entity().getDataCenterId(),
SearchCriteria.Op.EQ);
sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ);
if (storageId != null) {
- StoragePoolVO poolVO = _storagePoolDao.findByUuid(storageId);
+ StoragePoolVO poolVO = storagePoolDao.findByUuid(storageId);
if (poolVO.getPoolType() ==
Storage.StoragePoolType.DatastoreCluster) {
sb.and("storageId", sb.entity().getPoolUuid(),
SearchCriteria.Op.IN);
} else {
@@ -2210,7 +2332,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
// now set the SC criteria...
SearchCriteria<VolumeJoinVO> sc = sb.create();
- _accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
+ accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive,
permittedAccounts, listProjectResourcesCriteria);
if (keyword != null) {
SearchCriteria<VolumeJoinVO> ssc =
_volumeJoinDao.createSearchCriteria();
@@ -2269,9 +2391,9 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
}
if (storageId != null) {
- StoragePoolVO poolVO = _storagePoolDao.findByUuid(storageId);
+ StoragePoolVO poolVO = storagePoolDao.findByUuid(storageId);
if (poolVO.getPoolType() ==
Storage.StoragePoolType.DatastoreCluster) {
- List<StoragePoolVO> childDatastores =
_storagePoolDao.listChildStoragePoolsInDatastoreCluster(poolVO.getId());
+ List<StoragePoolVO> childDatastores =
storagePoolDao.listChildStoragePoolsInDatastoreCluster(poolVO.getId());
List<String> childDatastoreIds =
childDatastores.stream().map(mo -> mo.getUuid()).collect(Collectors.toList());
sc.setParameters("storageId", childDatastoreIds.toArray());
} else {
@@ -2285,7 +2407,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
if (state != null) {
sc.setParameters("state", state);
- } else if (!_accountMgr.isAdmin(caller.getId())) {
+ } else if (!accountMgr.isAdmin(caller.getId())) {
sc.setParameters("stateNEQ", Volume.State.Expunged);
}
@@ -2307,7 +2429,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
}
private boolean shouldListSystemVms(ListVolumesCmd cmd, Long callerId) {
- return Boolean.TRUE.equals(cmd.getListSystemVms()) &&
_accountMgr.isRootAdmin(callerId);
+ return Boolean.TRUE.equals(cmd.getListSystemVms()) &&
accountMgr.isRootAdmin(callerId);
}
@Override
@@ -2337,7 +2459,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
if (domain == null) {
throw new InvalidParameterValueException("Domain id=" +
domainId + " doesn't exist");
}
- _accountMgr.checkAccess(caller, domain);
+ accountMgr.checkAccess(caller, domain);
} else {
if (caller.getType() != Account.Type.ADMIN) {
domainId = caller.getDomainId();
@@ -2414,7 +2536,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
String accountName = cmd.getSearchName();
boolean isRecursive = cmd.isRecursive();
boolean listAll = cmd.listAll();
- boolean callerIsAdmin = _accountMgr.isAdmin(caller.getId());
+ boolean callerIsAdmin = accountMgr.isAdmin(caller.getId());
Account account;
Domain domain = null;
@@ -2426,7 +2548,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
throw new InvalidParameterValueException("Domain id=" +
domainId + " doesn't exist");
}
// ... and check access rights.
- _accountMgr.checkAccess(caller, domain);
+ accountMgr.checkAccess(caller, domain);
}
// if no "id" specified...
@@ -2449,7 +2571,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
if (account == null || account.getId() ==
Account.ACCOUNT_ID_SYSTEM) {
throw new InvalidParameterValueException("Unable to find
account by name " + accountName + " in domain " + domainId);
}
- _accountMgr.checkAccess(caller, null, true, account);
+ accountMgr.checkAccess(caller, null, true, account);
} else {
// if they specified an "id"...
if (domainId == null) {
@@ -2460,7 +2582,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
if (account == null || account.getId() ==
Account.ACCOUNT_ID_SYSTEM) {
throw new InvalidParameterValueException("Unable to find
account by id " + accountId + (domainId == null ? "" : " in domain " +
domainId));
}
- _accountMgr.checkAccess(caller, null, true, account);
+ accountMgr.checkAccess(caller, null, true, account);
}
Filter searchFilter = new Filter(AccountJoinVO.class, "id", true,
cmd.getStartIndex(), cmd.getPageSizeVal());
@@ -2556,7 +2678,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
List<Long> permittedAccounts = new ArrayList<Long>();
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, null,
cmd.getAccountName(), null, permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
+ accountMgr.buildACLSearchParameters(caller, null,
cmd.getAccountName(), null, permittedAccounts, domainIdRecursiveListProject,
cmd.listAll(), false);
Long domainId = domainIdRecursiveListProject.first();
Boolean isRecursive = domainIdRecursiveListProject.second();
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
@@ -2640,7 +2762,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Map<String, String> caps = driver.getCapabilities();
if
(Storage.StoragePoolType.NetworkFilesystem.toString().equals(poolResponse.getType())
&&
HypervisorType.VMware.toString().equals(poolResponse.getHypervisor())) {
- StoragePoolVO pool =
_storagePoolDao.findPoolByUUID(poolResponse.getId());
+ StoragePoolVO pool =
storagePoolDao.findPoolByUUID(poolResponse.getId());
StoragePoolDetailVO detail =
_storagePoolDetailsDao.findDetail(pool.getId(),
Storage.Capability.HARDWARE_ACCELERATION.toString());
if (detail != null) {
caps.put(Storage.Capability.HARDWARE_ACCELERATION.toString(),
detail.getValue());
@@ -2659,7 +2781,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
ScopeType scopeType =
ScopeType.validateAndGetScopeType(cmd.getScope());
StoragePoolStatus status =
StoragePoolStatus.validateAndGetStatus(cmd.getStatus());
- Long zoneId =
_accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),
cmd.getZoneId());
+ Long zoneId =
accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),
cmd.getZoneId());
Long id = cmd.getId();
String name = cmd.getStoragePoolName();
String path = cmd.getPath();
@@ -2667,6 +2789,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Long cluster = cmd.getClusterId();
String address = cmd.getIpAddress();
String keyword = cmd.getKeyword();
+
Long startIndex = cmd.getStartIndex();
Long pageSize = cmd.getPageSizeVal();
@@ -2786,7 +2909,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private Pair<List<ImageStoreJoinVO>, Integer>
searchForImageStoresInternal(ListImageStoresCmd cmd) {
- Long zoneId =
_accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),
cmd.getZoneId());
+ Long zoneId =
accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),
cmd.getZoneId());
Object id = cmd.getId();
Object name = cmd.getStoreName();
String provider = cmd.getProvider();
@@ -2870,7 +2993,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
private Pair<List<ImageStoreJoinVO>, Integer>
searchForCacheStoresInternal(ListSecondaryStagingStoresCmd cmd) {
- Long zoneId =
_accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),
cmd.getZoneId());
+ Long zoneId =
accountMgr.checkAccessAndSpecifyAuthority(CallContext.current().getCallingAccount(),
cmd.getZoneId());
Object id = cmd.getId();
Object name = cmd.getStoreName();
String provider = cmd.getProvider();
@@ -2967,7 +3090,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Object id = cmd.getId();
Object keyword = cmd.getKeyword();
Long domainId = cmd.getDomainId();
- Boolean isRootAdmin = _accountMgr.isRootAdmin(account.getAccountId());
+ Boolean isRootAdmin = accountMgr.isRootAdmin(account.getAccountId());
Boolean isRecursive = cmd.isRecursive();
Long zoneId = cmd.getZoneId();
Long volumeId = cmd.getVolumeId();
@@ -2977,7 +3100,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
// if a domainId is provided, we just return the disk offering
// associated with this domain
if (domainId != null) {
- if (_accountMgr.isRootAdmin(account.getId()) ||
isPermissible(account.getDomainId(), domainId)) {
+ if (accountMgr.isRootAdmin(account.getId()) ||
isPermissible(account.getDomainId(), domainId)) {
// check if the user's domain == do's domain || user's domain
is
// a child of so's domain for non-root users
sc.addAnd("domainId", Op.FIND_IN_SET,
String.valueOf(domainId));
@@ -2992,7 +3115,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
// For non-root users, only return all offerings for the user's domain,
// and everything above till root
- if ((_accountMgr.isNormalUser(account.getId()) ||
_accountMgr.isDomainAdmin(account.getId())) || account.getType() ==
Account.Type.RESOURCE_DOMAIN_ADMIN) {
+ if ((accountMgr.isNormalUser(account.getId()) ||
accountMgr.isDomainAdmin(account.getId())) || account.getType() ==
Account.Type.RESOURCE_DOMAIN_ADMIN) {
if (isRecursive) { // domain + all sub-domains
if (account.getType() == Account.Type.NORMAL) {
throw new InvalidParameterValueException("Only ROOT admins
and Domain admins can list disk offerings with isrecursive=true");
@@ -3154,14 +3277,14 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Boolean encryptRoot = cmd.getEncryptRoot();
SearchCriteria<ServiceOfferingJoinVO> sc =
_srvOfferingJoinDao.createSearchCriteria();
- if (!_accountMgr.isRootAdmin(caller.getId()) && isSystem) {
+ if (!accountMgr.isRootAdmin(caller.getId()) && isSystem) {
throw new InvalidParameterValueException("Only ROOT admins can
access system's offering");
}
// Keeping this logic consistent with domain specific zones
// if a domainId is provided, we just return the so associated with
this
// domain
- if (domainId != null && !_accountMgr.isRootAdmin(caller.getId())) {
+ if (domainId != null && !accountMgr.isRootAdmin(caller.getId())) {
// check if the user's domain == so's domain || user's domain is a
// child of so's domain
if (!isPermissible(caller.getDomainId(), domainId)) {
@@ -3177,7 +3300,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
throw ex;
}
- _accountMgr.checkAccess(caller, null, true, vmInstance);
+ accountMgr.checkAccess(caller, null, true, vmInstance);
currentVmOffering =
_srvOfferingDao.findByIdIncludingRemoved(vmInstance.getId(),
vmInstance.getServiceOfferingId());
if (! currentVmOffering.isDynamic()) {
@@ -3202,8 +3325,8 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Integer vmMemory = currentVmOffering.getRamSize();
Integer vmSpeed = currentVmOffering.getSpeed();
if ((vmCpu == null || vmMemory == null || vmSpeed == null) &&
VirtualMachine.Type.User.equals(vmInstance.getType())) {
- UserVmVO userVmVO = _userVmDao.findById(vmId);
- _userVmDao.loadDetails(userVmVO);
+ UserVmVO userVmVO = userVmDao.findById(vmId);
+ userVmDao.loadDetails(userVmVO);
Map<String, String> details = userVmVO.getDetails();
vmCpu =
NumbersUtil.parseInt(details.get(ApiConstants.CPU_NUMBER), 0);
if (vmSpeed == null) {
@@ -3225,7 +3348,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
}
// boolean includePublicOfferings = false;
- if ((_accountMgr.isNormalUser(caller.getId()) ||
_accountMgr.isDomainAdmin(caller.getId())) || caller.getType() ==
Account.Type.RESOURCE_DOMAIN_ADMIN) {
+ if ((accountMgr.isNormalUser(caller.getId()) ||
accountMgr.isDomainAdmin(caller.getId())) || caller.getType() ==
Account.Type.RESOURCE_DOMAIN_ADMIN) {
// For non-root users.
if (isSystem) {
throw new InvalidParameterValueException("Only root admins can
access system's offering");
@@ -3411,7 +3534,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
SearchBuilder<DataCenterJoinVO> sb = _dcJoinDao.createSearchBuilder();
if (resourceTags != null && !resourceTags.isEmpty()) {
- SearchBuilder<ResourceTagVO> tagSearch =
_resourceTagDao.createSearchBuilder();
+ SearchBuilder<ResourceTagVO> tagSearch =
resourceTagDao.createSearchBuilder();
for (int count = 0; count < resourceTags.size(); count++) {
tagSearch.or().op("key" + String.valueOf(count),
tagSearch.entity().getKey(), SearchCriteria.Op.EQ);
tagSearch.and("value" + String.valueOf(count),
tagSearch.entity().getValue(), SearchCriteria.Op.EQ);
@@ -3455,7 +3578,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
// only list zones associated // with this domain, private zone
sc.addAnd("domainId", SearchCriteria.Op.EQ, domainId);
- if (_accountMgr.isNormalUser(account.getId())) {
+ if (accountMgr.isNormalUser(account.getId())) {
// accountId == null (zones dedicated to a domain) or
// accountId = caller
SearchCriteria<DataCenterJoinVO> sdc =
_dcJoinDao.createSearchCriteria();
@@ -3465,7 +3588,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
sc.addAnd("accountId", SearchCriteria.Op.SC, sdc);
}
- } else if (_accountMgr.isNormalUser(account.getId())) {
+ } else if (accountMgr.isNormalUser(account.getId())) {
// it was decided to return all zones for the user's domain,
and
// everything above till root
// list all zones belonging to this domain, and all of its
@@ -3510,7 +3633,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
sdc.addAnd("id", SearchCriteria.Op.NIN,
dedicatedZoneIds.toArray(new Object[dedicatedZoneIds.size()]));
}
- } else if (_accountMgr.isDomainAdmin(account.getId()) ||
account.getType() == Account.Type.RESOURCE_DOMAIN_ADMIN) {
+ } else if (accountMgr.isDomainAdmin(account.getId()) ||
account.getType() == Account.Type.RESOURCE_DOMAIN_ADMIN) {
// it was decided to return all zones for the domain admin, and
// everything above till root, as well as zones till the domain
// leaf
@@ -3658,11 +3781,11 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
List<Long> permittedAccountIds = new ArrayList<Long>();
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccountIds, domainIdRecursiveListProject, listAll,
false);
+ accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccountIds, domainIdRecursiveListProject, listAll,
false);
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
List<Account> permittedAccounts = new ArrayList<Account>();
for (Long accountId : permittedAccountIds) {
- permittedAccounts.add(_accountMgr.getAccount(accountId));
+ permittedAccounts.add(accountMgr.getAccount(accountId));
}
boolean showDomr = ((templateFilter != TemplateFilter.selfexecutable)
&& (templateFilter != TemplateFilter.featured));
@@ -3720,16 +3843,16 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
throw ex;
}
if (!template.isPublicTemplate() && caller.getType() ==
Account.Type.DOMAIN_ADMIN) {
- Account template_acc =
_accountMgr.getAccount(template.getAccountId());
+ Account template_acc =
accountMgr.getAccount(template.getAccountId());
DomainVO domain =
_domainDao.findById(template_acc.getDomainId());
- _accountMgr.checkAccess(caller, domain);
+ accountMgr.checkAccess(caller, domain);
}
// if template is not public, perform permission check here
else if (!template.isPublicTemplate() && caller.getType() !=
Account.Type.ADMIN) {
- _accountMgr.checkAccess(caller, null, false, template);
+ accountMgr.checkAccess(caller, null, false, template);
} else if (template.isPublicTemplate()) {
- _accountMgr.checkAccess(caller, null, false, template);
+ accountMgr.checkAccess(caller, null, false, template);
}
// if templateId is specified, then we will just use the id to
@@ -3782,7 +3905,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
}
// get all child domain ID's
- if (_accountMgr.isAdmin(account.getId()) ||
publicTemplates) {
+ if (accountMgr.isAdmin(account.getId()) ||
publicTemplates) {
List<DomainVO> allChildDomains =
_domainDao.findAllChildren(domainTreeNode.getPath(), domainTreeNode.getId());
for (DomainVO childDomain : allChildDomains) {
relatedDomainIds.add(childDomain.getId());
@@ -4056,13 +4179,14 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
listAll = true;
}
+
List<Long> permittedAccountIds = new ArrayList<>();
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<>(cmd.getDomainId(),
cmd.isRecursive(), null);
- _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccountIds, domainIdRecursiveListProject, listAll,
false);
+ accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(),
cmd.getProjectId(), permittedAccountIds, domainIdRecursiveListProject, listAll,
false);
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
List<Account> permittedAccounts = new ArrayList<>();
for (Long accountId : permittedAccountIds) {
- permittedAccounts.add(_accountMgr.getAccount(accountId));
+ permittedAccounts.add(accountMgr.getAccount(accountId));
}
HypervisorType hypervisorType =
HypervisorType.getType(cmd.getHypervisor());
@@ -4170,18 +4294,18 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
Account caller = CallContext.current().getCallingAccount();
if (vmId != null) {
- UserVmVO userVM = _userVmDao.findById(vmId);
+ UserVmVO userVM = userVmDao.findById(vmId);
if (userVM == null) {
throw new InvalidParameterValueException("Unable to list
affinity groups for virtual machine instance " + vmId + "; instance not
found.");
}
- _accountMgr.checkAccess(caller, null, true, userVM);
+ accountMgr.checkAccess(caller, null, true, userVM);
return listAffinityGroupsByVM(vmId.longValue(), startIndex,
pageSize);
}
List<Long> permittedAccounts = new ArrayList<Long>();
Ternary<Long, Boolean, ListProjectResourcesCriteria> ternary = new
Ternary<Long, Boolean, ListProjectResourcesCriteria>(domainId, isRecursive,
null);
- _accountMgr.buildACLSearchParameters(caller, affinityGroupId,
accountName, projectId, permittedAccounts, ternary, listAll, false);
+ accountMgr.buildACLSearchParameters(caller, affinityGroupId,
accountName, projectId, permittedAccounts, ternary, listAll, false);
domainId = ternary.first();
isRecursive = ternary.second();
@@ -4568,7 +4692,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
List<Long> permittedAccountIds = new ArrayList<>();
Ternary<Long, Boolean, ListProjectResourcesCriteria>
domainIdRecursiveListProject = new Ternary<Long, Boolean,
ListProjectResourcesCriteria>(domainId, isRecursive, null);
- _accountMgr.buildACLSearchParameters(caller, id, accountName,
projectId, permittedAccountIds, domainIdRecursiveListProject, listAll, false);
+ accountMgr.buildACLSearchParameters(caller, id, accountName,
projectId, permittedAccountIds, domainIdRecursiveListProject, listAll, false);
ListProjectResourcesCriteria listProjectResourcesCriteria =
domainIdRecursiveListProject.third();
domainId = domainIdRecursiveListProject.first();
isRecursive = domainIdRecursiveListProject.second();
@@ -4576,7 +4700,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
if (volumeId != null) {
VolumeVO volume = volumeDao.findById(volumeId);
if (volume != null) {
-
_accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true,
volume);
+
accountMgr.checkAccess(CallContext.current().getCallingAccount(), null, true,
volume);
}
}
@@ -4586,7 +4710,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
} else {
sb.select(null, Func.DISTINCT,
sb.entity().getSnapshotStorePair()); // select distinct (snapshotId,
store_role, store_id) key
}
- _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive,
permittedAccountIds, listProjectResourcesCriteria);
+ accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive,
permittedAccountIds, listProjectResourcesCriteria);
sb.and("statusNEQ", sb.entity().getStatus(), SearchCriteria.Op.NEQ);
//exclude those Destroyed snapshot, not showing on UI
sb.and("volumeId", sb.entity().getVolumeId(), SearchCriteria.Op.EQ);
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
@@ -4598,7 +4722,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
sb.and("locationType", sb.entity().getStoreRole(),
SearchCriteria.Op.EQ);
if (tags != null && !tags.isEmpty()) {
- SearchBuilder<ResourceTagVO> tagSearch =
_resourceTagDao.createSearchBuilder();
+ SearchBuilder<ResourceTagVO> tagSearch =
resourceTagDao.createSearchBuilder();
for (int count = 0; count < tags.size(); count++) {
tagSearch.or().op("key" + String.valueOf(count),
tagSearch.entity().getKey(), SearchCriteria.Op.EQ);
tagSearch.and("value" + String.valueOf(count),
tagSearch.entity().getValue(), SearchCriteria.Op.EQ);
@@ -4610,7 +4734,7 @@ public class QueryManagerImpl extends
MutualExclusiveIdsManagerBase implements Q
}
SearchCriteria<SnapshotJoinVO> sc = sb.create();
- _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive,
permittedAccountIds, listProjectResourcesCriteria);
+ accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive,
permittedAccountIds, listProjectResourcesCriteria);
sc.setParameters("statusNEQ", Snapshot.State.Destroyed);