mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Merge branch '4.11'
This commit is contained in:
commit
ada1e730c8
@ -16,50 +16,15 @@
|
|||||||
// under the License.
|
// under the License.
|
||||||
package org.apache.cloudstack.api.command.admin.volume;
|
package org.apache.cloudstack.api.command.admin.volume;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import org.apache.cloudstack.acl.RoleType;
|
|
||||||
import org.apache.cloudstack.api.APICommand;
|
import org.apache.cloudstack.api.APICommand;
|
||||||
import org.apache.cloudstack.api.ApiConstants;
|
|
||||||
import org.apache.cloudstack.api.Parameter;
|
|
||||||
import org.apache.cloudstack.api.ResponseObject.ResponseView;
|
import org.apache.cloudstack.api.ResponseObject.ResponseView;
|
||||||
import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd;
|
import org.apache.cloudstack.api.command.user.volume.ListVolumesCmd;
|
||||||
import org.apache.cloudstack.api.response.PodResponse;
|
|
||||||
import org.apache.cloudstack.api.response.StoragePoolResponse;
|
|
||||||
import org.apache.cloudstack.api.response.VolumeResponse;
|
import org.apache.cloudstack.api.response.VolumeResponse;
|
||||||
|
|
||||||
import com.cloud.storage.Volume;
|
import com.cloud.storage.Volume;
|
||||||
|
|
||||||
|
@APICommand(name = "listVolumes", description = "Lists all volumes.", responseObject = VolumeResponse.class, responseView = ResponseView.Full, entityType = {
|
||||||
@APICommand(name = "listVolumes", description = "Lists all volumes.", responseObject = VolumeResponse.class, responseView = ResponseView.Full, entityType = {Volume.class},
|
Volume.class}, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
||||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
|
||||||
public class ListVolumesCmdByAdmin extends ListVolumesCmd {
|
public class ListVolumesCmdByAdmin extends ListVolumesCmd {
|
||||||
public static final Logger s_logger = Logger.getLogger(ListVolumesCmdByAdmin.class.getName());
|
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.POD_ID, type=CommandType.UUID, entityType=PodResponse.class,
|
|
||||||
description="the pod id the disk volume belongs to")
|
|
||||||
private Long podId;
|
|
||||||
|
|
||||||
|
|
||||||
@Parameter(name=ApiConstants.STORAGE_ID, type=CommandType.UUID, entityType=StoragePoolResponse.class,
|
|
||||||
description="the ID of the storage pool, available to ROOT admin only", since="4.3", authorized = { RoleType.Admin })
|
|
||||||
private Long storageId;
|
|
||||||
|
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
/////////////////// Accessors ///////////////////////
|
|
||||||
/////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Long getPodId() {
|
|
||||||
return podId;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Long getStorageId() {
|
|
||||||
return storageId;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -16,9 +16,8 @@
|
|||||||
// under the License.
|
// under the License.
|
||||||
package org.apache.cloudstack.api.command.user.volume;
|
package org.apache.cloudstack.api.command.user.volume;
|
||||||
|
|
||||||
import org.apache.log4j.Logger;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.cloudstack.acl.RoleType;
|
import org.apache.cloudstack.acl.RoleType;
|
||||||
import org.apache.cloudstack.api.APICommand;
|
import org.apache.cloudstack.api.APICommand;
|
||||||
import org.apache.cloudstack.api.ApiCommandJobType;
|
import org.apache.cloudstack.api.ApiCommandJobType;
|
||||||
@ -35,11 +34,12 @@ import org.apache.cloudstack.api.response.StoragePoolResponse;
|
|||||||
import org.apache.cloudstack.api.response.UserVmResponse;
|
import org.apache.cloudstack.api.response.UserVmResponse;
|
||||||
import org.apache.cloudstack.api.response.VolumeResponse;
|
import org.apache.cloudstack.api.response.VolumeResponse;
|
||||||
import org.apache.cloudstack.api.response.ZoneResponse;
|
import org.apache.cloudstack.api.response.ZoneResponse;
|
||||||
|
import org.apache.log4j.Logger;
|
||||||
|
|
||||||
import com.cloud.storage.Volume;
|
import com.cloud.storage.Volume;
|
||||||
|
|
||||||
@APICommand(name = "listVolumes", description = "Lists all volumes.", responseObject = VolumeResponse.class, responseView = ResponseView.Restricted, entityType = {Volume.class},
|
@APICommand(name = "listVolumes", description = "Lists all volumes.", responseObject = VolumeResponse.class, responseView = ResponseView.Restricted, entityType = {
|
||||||
requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
Volume.class}, requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
|
||||||
public class ListVolumesCmd extends BaseListTaggedResourcesCmd {
|
public class ListVolumesCmd extends BaseListTaggedResourcesCmd {
|
||||||
public static final Logger s_logger = Logger.getLogger(ListVolumesCmd.class.getName());
|
public static final Logger s_logger = Logger.getLogger(ListVolumesCmd.class.getName());
|
||||||
|
|
||||||
@ -76,22 +76,15 @@ public class ListVolumesCmd extends BaseListTaggedResourcesCmd {
|
|||||||
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "the ID of the availability zone")
|
@Parameter(name = ApiConstants.ZONE_ID, type = CommandType.UUID, entityType = ZoneResponse.class, description = "the ID of the availability zone")
|
||||||
private Long zoneId;
|
private Long zoneId;
|
||||||
|
|
||||||
@Parameter(name = ApiConstants.STORAGE_ID,
|
@Parameter(name = ApiConstants.STORAGE_ID, type = CommandType.STRING, entityType = StoragePoolResponse.class, description = "the ID of the storage pool, available to ROOT admin only", since = "4.3", authorized = {
|
||||||
type = CommandType.UUID,
|
RoleType.Admin})
|
||||||
entityType = StoragePoolResponse.class,
|
private String storageId;
|
||||||
description = "the ID of the storage pool, available to ROOT admin only",
|
|
||||||
since = "4.3",
|
|
||||||
authorized = {RoleType.Admin})
|
|
||||||
private Long storageId;
|
|
||||||
|
|
||||||
@Parameter(name = ApiConstants.DISK_OFFERING_ID,
|
@Parameter(name = ApiConstants.DISK_OFFERING_ID, type = CommandType.UUID, entityType = DiskOfferingResponse.class, description = "list volumes by disk offering", since = "4.4")
|
||||||
type = CommandType.UUID,
|
|
||||||
entityType = DiskOfferingResponse.class,
|
|
||||||
description = "list volumes by disk offering",
|
|
||||||
since = "4.4")
|
|
||||||
private Long diskOfferingId;
|
private Long diskOfferingId;
|
||||||
|
|
||||||
@Parameter(name = ApiConstants.DISPLAY_VOLUME, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin})
|
@Parameter(name = ApiConstants.DISPLAY_VOLUME, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {
|
||||||
|
RoleType.Admin})
|
||||||
private Boolean display;
|
private Boolean display;
|
||||||
|
|
||||||
/////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////
|
||||||
@ -134,7 +127,7 @@ public class ListVolumesCmd extends BaseListTaggedResourcesCmd {
|
|||||||
return zoneId;
|
return zoneId;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Long getStorageId() {
|
public String getStorageId() {
|
||||||
return storageId;
|
return storageId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -367,7 +367,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
@Inject
|
@Inject
|
||||||
AffinityGroupDomainMapDao _affinityGroupDomainMapDao;
|
AffinityGroupDomainMapDao _affinityGroupDomainMapDao;
|
||||||
|
|
||||||
@Inject NetworkDetailsDao _networkDetailsDao;
|
@Inject
|
||||||
|
NetworkDetailsDao _networkDetailsDao;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ResourceTagDao _resourceTagDao;
|
ResourceTagDao _resourceTagDao;
|
||||||
@ -386,8 +387,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
public ListResponse<UserResponse> searchForUsers(ListUsersCmd cmd) throws PermissionDeniedException {
|
public ListResponse<UserResponse> searchForUsers(ListUsersCmd cmd) throws PermissionDeniedException {
|
||||||
Pair<List<UserAccountJoinVO>, Integer> result = searchForUsersInternal(cmd);
|
Pair<List<UserAccountJoinVO>, Integer> result = searchForUsersInternal(cmd);
|
||||||
ListResponse<UserResponse> response = new ListResponse<UserResponse>();
|
ListResponse<UserResponse> response = new ListResponse<UserResponse>();
|
||||||
List<UserResponse> userResponses =
|
List<UserResponse> userResponses = ViewResponseHelper.createUserResponse(CallContext.current().getCallingAccount().getDomainId(),
|
||||||
ViewResponseHelper.createUserResponse(CallContext.current().getCallingAccount().getDomainId(),
|
|
||||||
result.first().toArray(new UserAccountJoinVO[result.first().size()]));
|
result.first().toArray(new UserAccountJoinVO[result.first().size()]));
|
||||||
response.setResponses(userResponses, result.second());
|
response.setResponses(userResponses, result.second());
|
||||||
return response;
|
return response;
|
||||||
@ -407,10 +407,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
id = currentId;
|
id = currentId;
|
||||||
}
|
}
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
cmd.getDomainId(), cmd.isRecursive(), null);
|
_accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(), null, permittedAccounts, domainIdRecursiveListProject, listAll, false);
|
||||||
_accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(), null, permittedAccounts,
|
|
||||||
domainIdRecursiveListProject, listAll, false);
|
|
||||||
Long domainId = domainIdRecursiveListProject.first();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
@ -424,8 +422,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
Object keyword = cmd.getKeyword();
|
Object keyword = cmd.getKeyword();
|
||||||
|
|
||||||
SearchBuilder<UserAccountJoinVO> sb = _userAccountJoinDao.createSearchBuilder();
|
SearchBuilder<UserAccountJoinVO> sb = _userAccountJoinDao.createSearchBuilder();
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
sb.and("username", sb.entity().getUsername(), SearchCriteria.Op.LIKE);
|
sb.and("username", sb.entity().getUsername(), SearchCriteria.Op.LIKE);
|
||||||
if (id != null && id == 1) {
|
if (id != null && id == 1) {
|
||||||
// system user should NOT be searchable
|
// system user should NOT be searchable
|
||||||
@ -451,8 +448,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
SearchCriteria<UserAccountJoinVO> sc = sb.create();
|
SearchCriteria<UserAccountJoinVO> sc = sb.create();
|
||||||
|
|
||||||
// building ACL condition
|
// building ACL condition
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
if (keyword != null) {
|
if (keyword != null) {
|
||||||
SearchCriteria<UserAccountJoinVO> ssc = _userAccountJoinDao.createSearchCriteria();
|
SearchCriteria<UserAccountJoinVO> ssc = _userAccountJoinDao.createSearchCriteria();
|
||||||
@ -522,18 +518,15 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
Integer duration = cmd.getDuration();
|
Integer duration = cmd.getDuration();
|
||||||
Long startId = cmd.getStartId();
|
Long startId = cmd.getStartId();
|
||||||
|
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
|
|
||||||
Filter searchFilter = new Filter(EventJoinVO.class, "createDate", false, cmd.getStartIndex(), cmd.getPageSizeVal());
|
Filter searchFilter = new Filter(EventJoinVO.class, "createDate", false, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||||
SearchBuilder<EventJoinVO> sb = _eventJoinDao.createSearchBuilder();
|
SearchBuilder<EventJoinVO> sb = _eventJoinDao.createSearchBuilder();
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("levelL", sb.entity().getLevel(), SearchCriteria.Op.LIKE);
|
sb.and("levelL", sb.entity().getLevel(), SearchCriteria.Op.LIKE);
|
||||||
@ -550,8 +543,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
SearchCriteria<EventJoinVO> sc = sb.create();
|
SearchCriteria<EventJoinVO> sc = sb.create();
|
||||||
// building ACL condition
|
// building ACL condition
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
// For end users display only enabled events
|
// For end users display only enabled events
|
||||||
if (!_accountMgr.isRootAdmin(caller.getId())) {
|
if (!_accountMgr.isRootAdmin(caller.getId())) {
|
||||||
@ -645,19 +637,16 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
String customerName = cmd.getCustomer();
|
String customerName = cmd.getCustomer();
|
||||||
boolean listAll = cmd.listAll();
|
boolean listAll = cmd.listAll();
|
||||||
|
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject =
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
|
||||||
|
|
||||||
_accountMgr.buildACLSearchParameters(caller, null, cmd.getAccountName(), cmd.getProjectId(), permittedAccounts,
|
_accountMgr.buildACLSearchParameters(caller, null, cmd.getAccountName(), cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, listAll, false);
|
||||||
domainIdRecursiveListProject, listAll, false);
|
|
||||||
Long domainId = domainIdRecursiveListProject.first();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
Filter searchFilter = new Filter(ResourceTagJoinVO.class, "resourceType", false, cmd.getStartIndex(), cmd.getPageSizeVal());
|
Filter searchFilter = new Filter(ResourceTagJoinVO.class, "resourceType", false, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||||
|
|
||||||
SearchBuilder<ResourceTagJoinVO> sb = _resourceTagJoinDao.createSearchBuilder();
|
SearchBuilder<ResourceTagJoinVO> sb = _resourceTagJoinDao.createSearchBuilder();
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
sb.and("key", sb.entity().getKey(), SearchCriteria.Op.EQ);
|
sb.and("key", sb.entity().getKey(), SearchCriteria.Op.EQ);
|
||||||
sb.and("value", sb.entity().getValue(), SearchCriteria.Op.EQ);
|
sb.and("value", sb.entity().getValue(), SearchCriteria.Op.EQ);
|
||||||
@ -672,8 +661,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
// now set the SC criteria...
|
// now set the SC criteria...
|
||||||
SearchCriteria<ResourceTagJoinVO> sc = sb.create();
|
SearchCriteria<ResourceTagJoinVO> sc = sb.create();
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
if (key != null) {
|
if (key != null) {
|
||||||
sc.setParameters("key", key);
|
sc.setParameters("key", key);
|
||||||
@ -722,10 +710,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
Account caller = CallContext.current().getCallingAccount();
|
Account caller = CallContext.current().getCallingAccount();
|
||||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||||
|
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
@ -733,16 +719,13 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
Filter searchFilter = new Filter(InstanceGroupJoinVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
|
Filter searchFilter = new Filter(InstanceGroupJoinVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||||
|
|
||||||
SearchBuilder<InstanceGroupJoinVO> sb = _vmGroupJoinDao.createSearchBuilder();
|
SearchBuilder<InstanceGroupJoinVO> sb = _vmGroupJoinDao.createSearchBuilder();
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.LIKE);
|
||||||
|
|
||||||
SearchCriteria<InstanceGroupJoinVO> sc = sb.create();
|
SearchCriteria<InstanceGroupJoinVO> sc = sb.create();
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
|
|
||||||
if (keyword != null) {
|
if (keyword != null) {
|
||||||
SearchCriteria<InstanceGroupJoinVO> ssc = _vmGroupJoinDao.createSearchCriteria();
|
SearchCriteria<InstanceGroupJoinVO> ssc = _vmGroupJoinDao.createSearchCriteria();
|
||||||
@ -769,8 +752,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
if (cmd instanceof ListVMsCmdByAdmin) {
|
if (cmd instanceof ListVMsCmdByAdmin) {
|
||||||
respView = ResponseView.Full;
|
respView = ResponseView.Full;
|
||||||
}
|
}
|
||||||
List<UserVmResponse> vmResponses = ViewResponseHelper.createUserVmResponse(respView, "virtualmachine", cmd.getDetails(),
|
List<UserVmResponse> vmResponses = ViewResponseHelper.createUserVmResponse(respView, "virtualmachine", cmd.getDetails(), result.first().toArray(new UserVmJoinVO[result.first().size()]));
|
||||||
result.first().toArray(new UserVmJoinVO[result.first().size()]));
|
|
||||||
|
|
||||||
response.setResponses(vmResponses, result.second());
|
response.setResponses(vmResponses, result.second());
|
||||||
return response;
|
return response;
|
||||||
@ -785,16 +767,13 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
Long userId = cmd.getUserId();
|
Long userId = cmd.getUserId();
|
||||||
Map<String, String> tags = cmd.getTags();
|
Map<String, String> tags = cmd.getTags();
|
||||||
Boolean display = cmd.getDisplay();
|
Boolean display = cmd.getDisplay();
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
|
|
||||||
Filter searchFilter = new Filter(UserVmJoinVO.class, "id", true, cmd.getStartIndex(),
|
Filter searchFilter = new Filter(UserVmJoinVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||||
cmd.getPageSizeVal());
|
|
||||||
|
|
||||||
List<Long> ids = null;
|
List<Long> ids = null;
|
||||||
if (cmd.getId() != null) {
|
if (cmd.getId() != null) {
|
||||||
@ -811,8 +790,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
SearchBuilder<UserVmJoinVO> sb = _userVmJoinDao.createSearchBuilder();
|
SearchBuilder<UserVmJoinVO> sb = _userVmJoinDao.createSearchBuilder();
|
||||||
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct ids
|
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct ids
|
||||||
|
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
String hypervisor = cmd.getHypervisor();
|
String hypervisor = cmd.getHypervisor();
|
||||||
Object name = cmd.getName();
|
Object name = cmd.getName();
|
||||||
@ -906,8 +884,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
SearchCriteria<UserVmJoinVO> sc = sb.create();
|
SearchCriteria<UserVmJoinVO> sc = sb.create();
|
||||||
|
|
||||||
// building ACL condition
|
// building ACL condition
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
if (tags != null && !tags.isEmpty()) {
|
if (tags != null && !tags.isEmpty()) {
|
||||||
SearchCriteria<UserVmJoinVO> tagSc = _userVmJoinDao.createSearchCriteria();
|
SearchCriteria<UserVmJoinVO> tagSc = _userVmJoinDao.createSearchCriteria();
|
||||||
@ -1046,8 +1023,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Pair<List<SecurityGroupJoinVO>, Integer> searchForSecurityGroupsInternal(ListSecurityGroupsCmd cmd) throws PermissionDeniedException,
|
private Pair<List<SecurityGroupJoinVO>, Integer> searchForSecurityGroupsInternal(ListSecurityGroupsCmd cmd) throws PermissionDeniedException, InvalidParameterValueException {
|
||||||
InvalidParameterValueException {
|
|
||||||
Account caller = CallContext.current().getCallingAccount();
|
Account caller = CallContext.current().getCallingAccount();
|
||||||
Long instanceId = cmd.getVirtualMachineId();
|
Long instanceId = cmd.getVirtualMachineId();
|
||||||
String securityGroup = cmd.getSecurityGroupName();
|
String securityGroup = cmd.getSecurityGroupName();
|
||||||
@ -1065,10 +1041,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
return listSecurityGroupRulesByVM(instanceId.longValue(), cmd.getStartIndex(), cmd.getPageSizeVal());
|
return listSecurityGroupRulesByVM(instanceId.longValue(), cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||||
}
|
}
|
||||||
|
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
@ -1077,15 +1051,13 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
SearchBuilder<SecurityGroupJoinVO> sb = _securityGroupJoinDao.createSearchBuilder();
|
SearchBuilder<SecurityGroupJoinVO> sb = _securityGroupJoinDao.createSearchBuilder();
|
||||||
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
|
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
|
||||||
// ids
|
// ids
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
|
|
||||||
SearchCriteria<SecurityGroupJoinVO> sc = sb.create();
|
SearchCriteria<SecurityGroupJoinVO> sc = sb.create();
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
if (id != null) {
|
if (id != null) {
|
||||||
sc.setParameters("id", id);
|
sc.setParameters("id", id);
|
||||||
@ -1151,9 +1123,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListResponse<DomainRouterResponse> searchForRouters(ListRoutersCmd cmd) {
|
public ListResponse<DomainRouterResponse> searchForRouters(ListRoutersCmd cmd) {
|
||||||
Pair<List<DomainRouterJoinVO>, Integer> result =
|
Pair<List<DomainRouterJoinVO>, Integer> result = searchForRoutersInternal(cmd, cmd.getId(), cmd.getRouterName(), cmd.getState(), cmd.getZoneId(), cmd.getPodId(), cmd.getClusterId(),
|
||||||
searchForRoutersInternal(cmd, cmd.getId(), cmd.getRouterName(), cmd.getState(), cmd.getZoneId(), cmd.getPodId(), cmd.getClusterId(), cmd.getHostId(),
|
cmd.getHostId(), cmd.getKeyword(), cmd.getNetworkId(), cmd.getVpcId(), cmd.getForVpc(), cmd.getRole(), cmd.getVersion());
|
||||||
cmd.getKeyword(), cmd.getNetworkId(), cmd.getVpcId(), cmd.getForVpc(), cmd.getRole(), cmd.getVersion());
|
|
||||||
ListResponse<DomainRouterResponse> response = new ListResponse<DomainRouterResponse>();
|
ListResponse<DomainRouterResponse> response = new ListResponse<DomainRouterResponse>();
|
||||||
|
|
||||||
List<DomainRouterResponse> routerResponses = ViewResponseHelper.createDomainRouterResponse(result.first().toArray(new DomainRouterJoinVO[result.first().size()]));
|
List<DomainRouterResponse> routerResponses = ViewResponseHelper.createDomainRouterResponse(result.first().toArray(new DomainRouterJoinVO[result.first().size()]));
|
||||||
@ -1163,9 +1134,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ListResponse<DomainRouterResponse> searchForInternalLbVms(ListInternalLBVMsCmd cmd) {
|
public ListResponse<DomainRouterResponse> searchForInternalLbVms(ListInternalLBVMsCmd cmd) {
|
||||||
Pair<List<DomainRouterJoinVO>, Integer> result =
|
Pair<List<DomainRouterJoinVO>, Integer> result = searchForRoutersInternal(cmd, cmd.getId(), cmd.getRouterName(), cmd.getState(), cmd.getZoneId(), cmd.getPodId(), null, cmd.getHostId(),
|
||||||
searchForRoutersInternal(cmd, cmd.getId(), cmd.getRouterName(), cmd.getState(), cmd.getZoneId(), cmd.getPodId(), null, cmd.getHostId(), cmd.getKeyword(),
|
cmd.getKeyword(), cmd.getNetworkId(), cmd.getVpcId(), cmd.getForVpc(), cmd.getRole(), null);
|
||||||
cmd.getNetworkId(), cmd.getVpcId(), cmd.getForVpc(), cmd.getRole(), null);
|
|
||||||
ListResponse<DomainRouterResponse> response = new ListResponse<DomainRouterResponse>();
|
ListResponse<DomainRouterResponse> response = new ListResponse<DomainRouterResponse>();
|
||||||
|
|
||||||
List<DomainRouterResponse> routerResponses = ViewResponseHelper.createDomainRouterResponse(result.first().toArray(new DomainRouterJoinVO[result.first().size()]));
|
List<DomainRouterResponse> routerResponses = ViewResponseHelper.createDomainRouterResponse(result.first().toArray(new DomainRouterJoinVO[result.first().size()]));
|
||||||
@ -1173,21 +1143,18 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Pair<List<DomainRouterJoinVO>, Integer> searchForRoutersInternal(BaseListProjectAndAccountResourcesCmd cmd, Long id, String name, String state, Long zoneId,
|
private Pair<List<DomainRouterJoinVO>, Integer> searchForRoutersInternal(BaseListProjectAndAccountResourcesCmd cmd, Long id, String name, String state, Long zoneId, Long podId, Long clusterId,
|
||||||
Long podId, Long clusterId, Long hostId, String keyword, Long networkId, Long vpcId, Boolean forVpc, String role, String version) {
|
Long hostId, String keyword, Long networkId, Long vpcId, Boolean forVpc, String role, String version) {
|
||||||
|
|
||||||
Account caller = CallContext.current().getCallingAccount();
|
Account caller = CallContext.current().getCallingAccount();
|
||||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||||
|
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
Filter searchFilter = new Filter(DomainRouterJoinVO.class, "id", true, cmd.getStartIndex(),
|
Filter searchFilter = new Filter(DomainRouterJoinVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||||
cmd.getPageSizeVal());
|
|
||||||
|
|
||||||
SearchBuilder<DomainRouterJoinVO> sb = _routerJoinDao.createSearchBuilder();
|
SearchBuilder<DomainRouterJoinVO> sb = _routerJoinDao.createSearchBuilder();
|
||||||
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
|
sb.select(null, Func.DISTINCT, sb.entity().getId()); // select distinct
|
||||||
@ -1195,8 +1162,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
// number of
|
// number of
|
||||||
// records with
|
// records with
|
||||||
// pagination
|
// pagination
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
sb.and("name", sb.entity().getInstanceName(), SearchCriteria.Op.LIKE);
|
sb.and("name", sb.entity().getInstanceName(), SearchCriteria.Op.LIKE);
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
@ -1223,8 +1189,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
|
|
||||||
SearchCriteria<DomainRouterJoinVO> sc = sb.create();
|
SearchCriteria<DomainRouterJoinVO> sc = sb.create();
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
if (keyword != null) {
|
if (keyword != null) {
|
||||||
SearchCriteria<DomainRouterJoinVO> ssc = _routerJoinDao.createSearchCriteria();
|
SearchCriteria<DomainRouterJoinVO> ssc = _routerJoinDao.createSearchCriteria();
|
||||||
@ -1438,8 +1403,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
public ListResponse<ProjectInvitationResponse> listProjectInvitations(ListProjectInvitationsCmd cmd) {
|
public ListResponse<ProjectInvitationResponse> listProjectInvitations(ListProjectInvitationsCmd cmd) {
|
||||||
Pair<List<ProjectInvitationJoinVO>, Integer> invites = listProjectInvitationsInternal(cmd);
|
Pair<List<ProjectInvitationJoinVO>, Integer> invites = listProjectInvitationsInternal(cmd);
|
||||||
ListResponse<ProjectInvitationResponse> response = new ListResponse<ProjectInvitationResponse>();
|
ListResponse<ProjectInvitationResponse> response = new ListResponse<ProjectInvitationResponse>();
|
||||||
List<ProjectInvitationResponse> projectInvitationResponses =
|
List<ProjectInvitationResponse> projectInvitationResponses = ViewResponseHelper.createProjectInvitationResponse(invites.first().toArray(new ProjectInvitationJoinVO[invites.first().size()]));
|
||||||
ViewResponseHelper.createProjectInvitationResponse(invites.first().toArray(new ProjectInvitationJoinVO[invites.first().size()]));
|
|
||||||
|
|
||||||
response.setResponses(projectInvitationResponses, invites.second());
|
response.setResponses(projectInvitationResponses, invites.second());
|
||||||
return response;
|
return response;
|
||||||
@ -1460,18 +1424,15 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
Account caller = CallContext.current().getCallingAccount();
|
Account caller = CallContext.current().getCallingAccount();
|
||||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||||
|
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(domainId, isRecursive, null);
|
||||||
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();
|
domainId = domainIdRecursiveListProject.first();
|
||||||
isRecursive = domainIdRecursiveListProject.second();
|
isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
|
|
||||||
Filter searchFilter = new Filter(ProjectInvitationJoinVO.class, "id", true, startIndex, pageSizeVal);
|
Filter searchFilter = new Filter(ProjectInvitationJoinVO.class, "id", true, startIndex, pageSizeVal);
|
||||||
SearchBuilder<ProjectInvitationJoinVO> sb = _projectInvitationJoinDao.createSearchBuilder();
|
SearchBuilder<ProjectInvitationJoinVO> sb = _projectInvitationJoinDao.createSearchBuilder();
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
sb.and("projectId", sb.entity().getProjectId(), SearchCriteria.Op.EQ);
|
sb.and("projectId", sb.entity().getProjectId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ);
|
sb.and("state", sb.entity().getState(), SearchCriteria.Op.EQ);
|
||||||
@ -1479,8 +1440,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
|
|
||||||
SearchCriteria<ProjectInvitationJoinVO> sc = sb.create();
|
SearchCriteria<ProjectInvitationJoinVO> sc = sb.create();
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
if (projectId != null) {
|
if (projectId != null) {
|
||||||
sc.setParameters("projectId", projectId);
|
sc.setParameters("projectId", projectId);
|
||||||
@ -1507,8 +1467,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
public ListResponse<ProjectAccountResponse> listProjectAccounts(ListProjectAccountsCmd cmd) {
|
public ListResponse<ProjectAccountResponse> listProjectAccounts(ListProjectAccountsCmd cmd) {
|
||||||
Pair<List<ProjectAccountJoinVO>, Integer> projectAccounts = listProjectAccountsInternal(cmd);
|
Pair<List<ProjectAccountJoinVO>, Integer> projectAccounts = listProjectAccountsInternal(cmd);
|
||||||
ListResponse<ProjectAccountResponse> response = new ListResponse<ProjectAccountResponse>();
|
ListResponse<ProjectAccountResponse> response = new ListResponse<ProjectAccountResponse>();
|
||||||
List<ProjectAccountResponse> projectResponses =
|
List<ProjectAccountResponse> projectResponses = ViewResponseHelper.createProjectAccountResponse(projectAccounts.first().toArray(new ProjectAccountJoinVO[projectAccounts.first().size()]));
|
||||||
ViewResponseHelper.createProjectAccountResponse(projectAccounts.first().toArray(new ProjectAccountJoinVO[projectAccounts.first().size()]));
|
|
||||||
response.setResponses(projectResponses, projectAccounts.second());
|
response.setResponses(projectResponses, projectAccounts.second());
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -1703,8 +1662,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
respView = ResponseView.Full;
|
respView = ResponseView.Full;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<VolumeResponse> volumeResponses = ViewResponseHelper.createVolumeResponse(respView, result.first().toArray(
|
List<VolumeResponse> volumeResponses = ViewResponseHelper.createVolumeResponse(respView, result.first().toArray(new VolumeJoinVO[result.first().size()]));
|
||||||
new VolumeJoinVO[result.first().size()]));
|
|
||||||
|
|
||||||
for (VolumeResponse vr : volumeResponses) {
|
for (VolumeResponse vr : volumeResponses) {
|
||||||
String poolId = vr.getStoragePoolId();
|
String poolId = vr.getStoragePoolId();
|
||||||
@ -1743,7 +1701,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
String keyword = cmd.getKeyword();
|
String keyword = cmd.getKeyword();
|
||||||
String type = cmd.getType();
|
String type = cmd.getType();
|
||||||
Map<String, String> tags = cmd.getTags();
|
Map<String, String> tags = cmd.getTags();
|
||||||
Long storageId = cmd.getStorageId();
|
String storageId = cmd.getStorageId();
|
||||||
Long clusterId = cmd.getClusterId();
|
Long clusterId = cmd.getClusterId();
|
||||||
Long diskOffId = cmd.getDiskOfferingId();
|
Long diskOffId = cmd.getDiskOfferingId();
|
||||||
Boolean display = cmd.getDisplay();
|
Boolean display = cmd.getDisplay();
|
||||||
@ -1753,10 +1711,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
List<Long> ids = getIdsListFromCmd(cmd.getId(), cmd.getIds());
|
List<Long> ids = getIdsListFromCmd(cmd.getId(), cmd.getIds());
|
||||||
|
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
@ -1771,8 +1727,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
// number of
|
// number of
|
||||||
// records with
|
// records with
|
||||||
// pagination
|
// pagination
|
||||||
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
|
||||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||||
@ -1782,7 +1737,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
sb.and("instanceId", sb.entity().getVmId(), SearchCriteria.Op.EQ);
|
sb.and("instanceId", sb.entity().getVmId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
|
sb.and("dataCenterId", sb.entity().getDataCenterId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ);
|
sb.and("podId", sb.entity().getPodId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("storageId", sb.entity().getPoolId(), SearchCriteria.Op.EQ);
|
sb.and("storageId", sb.entity().getPoolUuid(), SearchCriteria.Op.EQ);
|
||||||
sb.and("diskOfferingId", sb.entity().getDiskOfferingId(), SearchCriteria.Op.EQ);
|
sb.and("diskOfferingId", sb.entity().getDiskOfferingId(), SearchCriteria.Op.EQ);
|
||||||
sb.and("display", sb.entity().isDisplayVolume(), SearchCriteria.Op.EQ);
|
sb.and("display", sb.entity().isDisplayVolume(), SearchCriteria.Op.EQ);
|
||||||
// Only return volumes that are not destroyed
|
// Only return volumes that are not destroyed
|
||||||
@ -1795,8 +1750,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
// now set the SC criteria...
|
// now set the SC criteria...
|
||||||
SearchCriteria<VolumeJoinVO> sc = sb.create();
|
SearchCriteria<VolumeJoinVO> sc = sb.create();
|
||||||
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts,
|
_accountMgr.buildACLViewSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
if (keyword != null) {
|
if (keyword != null) {
|
||||||
SearchCriteria<VolumeJoinVO> ssc = _volumeJoinDao.createSearchCriteria();
|
SearchCriteria<VolumeJoinVO> ssc = _volumeJoinDao.createSearchCriteria();
|
||||||
@ -1972,8 +1926,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
respView = ResponseView.Full;
|
respView = ResponseView.Full;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<AccountResponse> accountResponses = ViewResponseHelper.createAccountResponse(respView, result.first().toArray(
|
List<AccountResponse> accountResponses = ViewResponseHelper.createAccountResponse(respView, result.first().toArray(new AccountJoinVO[result.first().size()]));
|
||||||
new AccountJoinVO[result.first().size()]));
|
|
||||||
response.setResponses(accountResponses, result.second());
|
response.setResponses(accountResponses, result.second());
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -2017,9 +1970,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
// if they're looking for an account by name
|
// if they're looking for an account by name
|
||||||
account = _accountDao.findActiveAccount(accountName, domainId);
|
account = _accountDao.findActiveAccount(accountName, domainId);
|
||||||
if (account == null || account.getId() == Account.ACCOUNT_ID_SYSTEM) {
|
if (account == null || account.getId() == Account.ACCOUNT_ID_SYSTEM) {
|
||||||
throw new InvalidParameterValueException(
|
throw new InvalidParameterValueException("Unable to find account by name " + accountName + " in domain " + domainId);
|
||||||
"Unable to find account by name " + accountName + " in domain " + domainId
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_accountMgr.checkAccess(caller, null, true, account);
|
_accountMgr.checkAccess(caller, null, true, account);
|
||||||
} else {
|
} else {
|
||||||
@ -2030,11 +1981,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
account = _accountDao.findActiveAccountById(accountId, domainId);
|
account = _accountDao.findActiveAccountById(accountId, domainId);
|
||||||
}
|
}
|
||||||
if (account == null || account.getId() == Account.ACCOUNT_ID_SYSTEM) {
|
if (account == null || account.getId() == Account.ACCOUNT_ID_SYSTEM) {
|
||||||
throw new InvalidParameterValueException(
|
throw new InvalidParameterValueException("Unable to find account by id " + accountId + (domainId == null ? "" : " in domain " + domainId));
|
||||||
"Unable to find account by id "
|
|
||||||
+ accountId
|
|
||||||
+ (domainId == null ? "" : " in domain " + domainId)
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
_accountMgr.checkAccess(caller, null, true, account);
|
_accountMgr.checkAccess(caller, null, true, account);
|
||||||
}
|
}
|
||||||
@ -2124,10 +2071,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||||
|
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
Long domainId = domainIdRecursiveListProject.first();
|
||||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
@ -2540,8 +2485,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
public ListResponse<DiskOfferingResponse> searchForDiskOfferings(ListDiskOfferingsCmd cmd) {
|
public ListResponse<DiskOfferingResponse> searchForDiskOfferings(ListDiskOfferingsCmd cmd) {
|
||||||
Pair<List<DiskOfferingJoinVO>, Integer> result = searchForDiskOfferingsInternal(cmd);
|
Pair<List<DiskOfferingJoinVO>, Integer> result = searchForDiskOfferingsInternal(cmd);
|
||||||
ListResponse<DiskOfferingResponse> response = new ListResponse<DiskOfferingResponse>();
|
ListResponse<DiskOfferingResponse> response = new ListResponse<DiskOfferingResponse>();
|
||||||
List<DiskOfferingResponse> offeringResponses =
|
List<DiskOfferingResponse> offeringResponses = ViewResponseHelper.createDiskOfferingResponse(result.first().toArray(new DiskOfferingJoinVO[result.first().size()]));
|
||||||
ViewResponseHelper.createDiskOfferingResponse(result.first().toArray(new DiskOfferingJoinVO[result.first().size()]));
|
|
||||||
response.setResponses(offeringResponses, result.second());
|
response.setResponses(offeringResponses, result.second());
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -2590,11 +2534,11 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
List<Long> domainIds = null;
|
List<Long> domainIds = null;
|
||||||
// For non-root users, only return all offerings for the user's domain,
|
// For non-root users, only return all offerings for the user's domain,
|
||||||
// and everything above till root
|
// and everything above till root
|
||||||
if ((_accountMgr.isNormalUser(account.getId()) || _accountMgr.isDomainAdmin(account.getId()))
|
if ((_accountMgr.isNormalUser(account.getId()) || _accountMgr.isDomainAdmin(account.getId())) || account.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) {
|
||||||
|| account.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) {
|
|
||||||
if (isRecursive) { // domain + all sub-domains
|
if (isRecursive) { // domain + all sub-domains
|
||||||
if (account.getType() == Account.ACCOUNT_TYPE_NORMAL)
|
if (account.getType() == Account.ACCOUNT_TYPE_NORMAL) {
|
||||||
throw new InvalidParameterValueException("Only ROOT admins and Domain admins can list disk offerings with isrecursive=true");
|
throw new InvalidParameterValueException("Only ROOT admins and Domain admins can list disk offerings with isrecursive=true");
|
||||||
|
}
|
||||||
DomainVO domainRecord = _domainDao.findById(account.getDomainId());
|
DomainVO domainRecord = _domainDao.findById(account.getDomainId());
|
||||||
sc.addAnd("domainPath", SearchCriteria.Op.LIKE, domainRecord.getPath() + "%");
|
sc.addAnd("domainPath", SearchCriteria.Op.LIKE, domainRecord.getPath() + "%");
|
||||||
} else { // domain + all ancestors
|
} else { // domain + all ancestors
|
||||||
@ -2663,7 +2607,9 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
|
|
||||||
private List<ServiceOfferingJoinVO> filterOfferingsOnCurrentTags(List<ServiceOfferingJoinVO> offerings, ServiceOfferingVO currentVmOffering) {
|
private List<ServiceOfferingJoinVO> filterOfferingsOnCurrentTags(List<ServiceOfferingJoinVO> offerings, ServiceOfferingVO currentVmOffering) {
|
||||||
if(currentVmOffering == null) return offerings;
|
if (currentVmOffering == null) {
|
||||||
|
return offerings;
|
||||||
|
}
|
||||||
List<String> currentTagsList = StringUtils.csvTagsToList(currentVmOffering.getTags());
|
List<String> currentTagsList = StringUtils.csvTagsToList(currentVmOffering.getTags());
|
||||||
|
|
||||||
// New service offering should have all the tags of the current service offering.
|
// New service offering should have all the tags of the current service offering.
|
||||||
@ -2682,8 +2628,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
Pair<List<ServiceOfferingJoinVO>, Integer> result = searchForServiceOfferingsInternal(cmd);
|
Pair<List<ServiceOfferingJoinVO>, Integer> result = searchForServiceOfferingsInternal(cmd);
|
||||||
result.first();
|
result.first();
|
||||||
ListResponse<ServiceOfferingResponse> response = new ListResponse<ServiceOfferingResponse>();
|
ListResponse<ServiceOfferingResponse> response = new ListResponse<ServiceOfferingResponse>();
|
||||||
List<ServiceOfferingResponse> offeringResponses =
|
List<ServiceOfferingResponse> offeringResponses = ViewResponseHelper.createServiceOfferingResponse(result.first().toArray(new ServiceOfferingJoinVO[result.first().size()]));
|
||||||
ViewResponseHelper.createServiceOfferingResponse(result.first().toArray(new ServiceOfferingJoinVO[result.first().size()]));
|
|
||||||
response.setResponses(offeringResponses, result.second());
|
response.setResponses(offeringResponses, result.second());
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -2754,15 +2699,15 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
|
|
||||||
// boolean includePublicOfferings = false;
|
// boolean includePublicOfferings = false;
|
||||||
if ((_accountMgr.isNormalUser(caller.getId()) || _accountMgr.isDomainAdmin(caller.getId()))
|
if ((_accountMgr.isNormalUser(caller.getId()) || _accountMgr.isDomainAdmin(caller.getId())) || caller.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) {
|
||||||
|| caller.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) {
|
|
||||||
// For non-root users.
|
// For non-root users.
|
||||||
if (isSystem) {
|
if (isSystem) {
|
||||||
throw new InvalidParameterValueException("Only root admins can access system's offering");
|
throw new InvalidParameterValueException("Only root admins can access system's offering");
|
||||||
}
|
}
|
||||||
if (isRecursive) { // domain + all sub-domains
|
if (isRecursive) { // domain + all sub-domains
|
||||||
if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL)
|
if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL) {
|
||||||
throw new InvalidParameterValueException("Only ROOT admins and Domain admins can list service offerings with isrecursive=true");
|
throw new InvalidParameterValueException("Only ROOT admins and Domain admins can list service offerings with isrecursive=true");
|
||||||
|
}
|
||||||
DomainVO domainRecord = _domainDao.findById(caller.getDomainId());
|
DomainVO domainRecord = _domainDao.findById(caller.getDomainId());
|
||||||
sc.addAnd("domainPath", SearchCriteria.Op.LIKE, domainRecord.getPath() + "%");
|
sc.addAnd("domainPath", SearchCriteria.Op.LIKE, domainRecord.getPath() + "%");
|
||||||
} else { // domain + all ancestors
|
} else { // domain + all ancestors
|
||||||
@ -2847,8 +2792,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
respView = ResponseView.Full;
|
respView = ResponseView.Full;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<ZoneResponse> dcResponses = ViewResponseHelper.createDataCenterResponse(respView, cmd.getShowCapacities(), result
|
List<ZoneResponse> dcResponses = ViewResponseHelper.createDataCenterResponse(respView, cmd.getShowCapacities(), result.first().toArray(new DataCenterJoinVO[result.first().size()]));
|
||||||
.first().toArray(new DataCenterJoinVO[result.first().size()]));
|
|
||||||
response.setResponses(dcResponses, result.second());
|
response.setResponses(dcResponses, result.second());
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -2958,8 +2902,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
sdc.addAnd("id", SearchCriteria.Op.NIN, dedicatedZoneIds.toArray(new Object[dedicatedZoneIds.size()]));
|
sdc.addAnd("id", SearchCriteria.Op.NIN, dedicatedZoneIds.toArray(new Object[dedicatedZoneIds.size()]));
|
||||||
}
|
}
|
||||||
|
|
||||||
} else if (_accountMgr.isDomainAdmin(account.getId())
|
} else if (_accountMgr.isDomainAdmin(account.getId()) || account.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) {
|
||||||
|| account.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) {
|
|
||||||
// it was decided to return all zones for the domain admin, and
|
// it was decided to return all zones for the domain admin, and
|
||||||
// everything above till root, as well as zones till the domain
|
// everything above till root, as well as zones till the domain
|
||||||
// leaf
|
// leaf
|
||||||
@ -3084,13 +3027,11 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
respView = ResponseView.Full;
|
respView = ResponseView.Full;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<TemplateResponse> templateResponses = ViewResponseHelper.createTemplateResponse(respView, result.first().toArray(
|
List<TemplateResponse> templateResponses = ViewResponseHelper.createTemplateResponse(respView, result.first().toArray(new TemplateJoinVO[result.first().size()]));
|
||||||
new TemplateJoinVO[result.first().size()]));
|
|
||||||
response.setResponses(templateResponses, result.second());
|
response.setResponses(templateResponses, result.second());
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private Pair<List<TemplateJoinVO>, Integer> searchForTemplatesInternal(ListTemplatesCmd cmd) {
|
private Pair<List<TemplateJoinVO>, Integer> searchForTemplatesInternal(ListTemplatesCmd cmd) {
|
||||||
TemplateFilter templateFilter = TemplateFilter.valueOf(cmd.getTemplateFilter());
|
TemplateFilter templateFilter = TemplateFilter.valueOf(cmd.getTemplateFilter());
|
||||||
Long id = cmd.getId();
|
Long id = cmd.getId();
|
||||||
@ -3102,17 +3043,14 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
boolean listAll = false;
|
boolean listAll = false;
|
||||||
if (templateFilter != null && templateFilter == TemplateFilter.all) {
|
if (templateFilter != null && templateFilter == TemplateFilter.all) {
|
||||||
if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL) {
|
if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL) {
|
||||||
throw new InvalidParameterValueException("Filter " + TemplateFilter.all
|
throw new InvalidParameterValueException("Filter " + TemplateFilter.all + " can be specified by admin only");
|
||||||
+ " can be specified by admin only");
|
|
||||||
}
|
}
|
||||||
listAll = true;
|
listAll = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Long> permittedAccountIds = new ArrayList<Long>();
|
List<Long> permittedAccountIds = new ArrayList<Long>();
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
List<Account> permittedAccounts = new ArrayList<Account>();
|
List<Account> permittedAccounts = new ArrayList<Account>();
|
||||||
for (Long accountId : permittedAccountIds) {
|
for (Long accountId : permittedAccountIds) {
|
||||||
@ -3122,18 +3060,13 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
boolean showDomr = ((templateFilter != TemplateFilter.selfexecutable) && (templateFilter != TemplateFilter.featured));
|
boolean showDomr = ((templateFilter != TemplateFilter.selfexecutable) && (templateFilter != TemplateFilter.featured));
|
||||||
HypervisorType hypervisorType = HypervisorType.getType(cmd.getHypervisor());
|
HypervisorType hypervisorType = HypervisorType.getType(cmd.getHypervisor());
|
||||||
|
|
||||||
|
return searchForTemplatesInternal(id, cmd.getTemplateName(), cmd.getKeyword(), templateFilter, false, null, cmd.getPageSizeVal(), cmd.getStartIndex(), cmd.getZoneId(), hypervisorType,
|
||||||
return searchForTemplatesInternal(id, cmd.getTemplateName(), cmd.getKeyword(), templateFilter, false, null,
|
showDomr, cmd.listInReadyState(), permittedAccounts, caller, listProjectResourcesCriteria, tags, showRemovedTmpl, cmd.getIds(), parentTemplateId);
|
||||||
cmd.getPageSizeVal(), cmd.getStartIndex(), cmd.getZoneId(), hypervisorType, showDomr,
|
|
||||||
cmd.listInReadyState(), permittedAccounts, caller, listProjectResourcesCriteria, tags, showRemovedTmpl,
|
|
||||||
cmd.getIds(), parentTemplateId);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Pair<List<TemplateJoinVO>, Integer> searchForTemplatesInternal(Long templateId, String name,
|
private Pair<List<TemplateJoinVO>, Integer> searchForTemplatesInternal(Long templateId, String name, String keyword, TemplateFilter templateFilter, boolean isIso, Boolean bootable, Long pageSize,
|
||||||
String keyword, TemplateFilter templateFilter, boolean isIso, Boolean bootable, Long pageSize,
|
Long startIndex, Long zoneId, HypervisorType hyperType, boolean showDomr, boolean onlyReady, List<Account> permittedAccounts, Account caller,
|
||||||
Long startIndex, Long zoneId, HypervisorType hyperType, boolean showDomr, boolean onlyReady,
|
ListProjectResourcesCriteria listProjectResourcesCriteria, Map<String, String> tags, boolean showRemovedTmpl, List<Long> ids, Long parentTemplateId) {
|
||||||
List<Account> permittedAccounts, Account caller, ListProjectResourcesCriteria listProjectResourcesCriteria,
|
|
||||||
Map<String, String> tags, boolean showRemovedTmpl, List<Long> ids, Long parentTemplateId) {
|
|
||||||
|
|
||||||
// check if zone is configured, if not, just return empty list
|
// check if zone is configured, if not, just return empty list
|
||||||
List<HypervisorType> hypers = null;
|
List<HypervisorType> hypers = null;
|
||||||
@ -3166,15 +3099,13 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}// If ISO requested then it should be ISO.
|
}// If ISO requested then it should be ISO.
|
||||||
if (isIso && template.getFormat() != ImageFormat.ISO) {
|
if (isIso && template.getFormat() != ImageFormat.ISO) {
|
||||||
s_logger.error("Template Id " + templateId + " is not an ISO");
|
s_logger.error("Template Id " + templateId + " is not an ISO");
|
||||||
InvalidParameterValueException ex = new InvalidParameterValueException(
|
InvalidParameterValueException ex = new InvalidParameterValueException("Specified Template Id is not an ISO");
|
||||||
"Specified Template Id is not an ISO");
|
|
||||||
ex.addProxyObject(template.getUuid(), "templateId");
|
ex.addProxyObject(template.getUuid(), "templateId");
|
||||||
throw ex;
|
throw ex;
|
||||||
}// If ISO not requested then it shouldn't be an ISO.
|
}// If ISO not requested then it shouldn't be an ISO.
|
||||||
if (!isIso && template.getFormat() == ImageFormat.ISO) {
|
if (!isIso && template.getFormat() == ImageFormat.ISO) {
|
||||||
s_logger.error("Incorrect format of the template id " + templateId);
|
s_logger.error("Incorrect format of the template id " + templateId);
|
||||||
InvalidParameterValueException ex = new InvalidParameterValueException("Incorrect format "
|
InvalidParameterValueException ex = new InvalidParameterValueException("Incorrect format " + template.getFormat() + " of the specified template id");
|
||||||
+ template.getFormat() + " of the specified template id");
|
|
||||||
ex.addProxyObject(template.getUuid(), "templateId");
|
ex.addProxyObject(template.getUuid(), "templateId");
|
||||||
throw ex;
|
throw ex;
|
||||||
}
|
}
|
||||||
@ -3426,8 +3357,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
respView = ResponseView.Full;
|
respView = ResponseView.Full;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<TemplateResponse> templateResponses = ViewResponseHelper.createIsoResponse(respView, result.first().toArray(
|
List<TemplateResponse> templateResponses = ViewResponseHelper.createIsoResponse(respView, result.first().toArray(new TemplateJoinVO[result.first().size()]));
|
||||||
new TemplateJoinVO[result.first().size()]));
|
|
||||||
response.setResponses(templateResponses, result.second());
|
response.setResponses(templateResponses, result.second());
|
||||||
return response;
|
return response;
|
||||||
}
|
}
|
||||||
@ -3442,17 +3372,14 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
boolean listAll = false;
|
boolean listAll = false;
|
||||||
if (isoFilter != null && isoFilter == TemplateFilter.all) {
|
if (isoFilter != null && isoFilter == TemplateFilter.all) {
|
||||||
if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL) {
|
if (caller.getType() == Account.ACCOUNT_TYPE_NORMAL) {
|
||||||
throw new InvalidParameterValueException("Filter " + TemplateFilter.all
|
throw new InvalidParameterValueException("Filter " + TemplateFilter.all + " can be specified by admin only");
|
||||||
+ " can be specified by admin only");
|
|
||||||
}
|
}
|
||||||
listAll = true;
|
listAll = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Long> permittedAccountIds = new ArrayList<Long>();
|
List<Long> permittedAccountIds = new ArrayList<Long>();
|
||||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(
|
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||||
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();
|
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||||
List<Account> permittedAccounts = new ArrayList<Account>();
|
List<Account> permittedAccounts = new ArrayList<Account>();
|
||||||
for (Long accountId : permittedAccountIds) {
|
for (Long accountId : permittedAccountIds) {
|
||||||
@ -3461,10 +3388,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
HypervisorType hypervisorType = HypervisorType.getType(cmd.getHypervisor());
|
HypervisorType hypervisorType = HypervisorType.getType(cmd.getHypervisor());
|
||||||
|
|
||||||
return searchForTemplatesInternal(cmd.getId(), cmd.getIsoName(), cmd.getKeyword(), isoFilter, true,
|
return searchForTemplatesInternal(cmd.getId(), cmd.getIsoName(), cmd.getKeyword(), isoFilter, true, cmd.isBootable(), cmd.getPageSizeVal(), cmd.getStartIndex(), cmd.getZoneId(),
|
||||||
cmd.isBootable(), cmd.getPageSizeVal(), cmd.getStartIndex(), cmd.getZoneId(), hypervisorType, true,
|
hypervisorType, true, cmd.listInReadyState(), permittedAccounts, caller, listProjectResourcesCriteria, tags, showRemovedISO, null, null);
|
||||||
cmd.listInReadyState(), permittedAccounts, caller, listProjectResourcesCriteria, tags, showRemovedISO,
|
|
||||||
null, null);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -3513,8 +3438,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
Filter searchFilter = new Filter(AffinityGroupJoinVO.class, ID_FIELD, true, startIndex, pageSize);
|
Filter searchFilter = new Filter(AffinityGroupJoinVO.class, ID_FIELD, true, startIndex, pageSize);
|
||||||
|
|
||||||
SearchCriteria<AffinityGroupJoinVO> sc = buildAffinityGroupSearchCriteria(domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria, affinityGroupId,
|
SearchCriteria<AffinityGroupJoinVO> sc = buildAffinityGroupSearchCriteria(domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria, affinityGroupId, affinityGroupName,
|
||||||
affinityGroupName, affinityGroupType, keyword);
|
affinityGroupType, keyword);
|
||||||
|
|
||||||
Pair<List<AffinityGroupJoinVO>, Integer> uniqueGroupsPair = _affinityGroupJoinDao.searchAndCount(sc, searchFilter);
|
Pair<List<AffinityGroupJoinVO>, Integer> uniqueGroupsPair = _affinityGroupJoinDao.searchAndCount(sc, searchFilter);
|
||||||
|
|
||||||
@ -3535,23 +3460,23 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
if (!permittedAccounts.isEmpty()) {
|
if (!permittedAccounts.isEmpty()) {
|
||||||
// add domain level affinity groups
|
// add domain level affinity groups
|
||||||
if (domainId != null) {
|
if (domainId != null) {
|
||||||
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria,
|
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId,
|
||||||
affinityGroupId, affinityGroupName, affinityGroupType, keyword);
|
affinityGroupName, affinityGroupType, keyword);
|
||||||
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId));
|
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId));
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
for (Long permAcctId : permittedAccounts) {
|
for (Long permAcctId : permittedAccounts) {
|
||||||
Account permittedAcct = _accountDao.findById(permAcctId);
|
Account permittedAcct = _accountDao.findById(permAcctId);
|
||||||
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria,
|
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId,
|
||||||
affinityGroupId, affinityGroupName, affinityGroupType, keyword);
|
affinityGroupName, affinityGroupType, keyword);
|
||||||
|
|
||||||
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, permittedAcct.getDomainId()));
|
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, permittedAcct.getDomainId()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (((permittedAccounts.isEmpty()) && (domainId != null) && isRecursive)) {
|
} else if (((permittedAccounts.isEmpty()) && (domainId != null) && isRecursive)) {
|
||||||
// list all domain level affinity groups for the domain admin case
|
// list all domain level affinity groups for the domain admin case
|
||||||
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria,
|
SearchCriteria<AffinityGroupJoinVO> scDomain = buildAffinityGroupSearchCriteria(null, isRecursive, new ArrayList<Long>(), listProjectResourcesCriteria, affinityGroupId, affinityGroupName,
|
||||||
affinityGroupId, affinityGroupName, affinityGroupType, keyword);
|
affinityGroupType, keyword);
|
||||||
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId));
|
affinityGroups.addAll(listDomainLevelAffinityGroups(scDomain, searchFilter, domainId));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3559,8 +3484,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildAffinityGroupViewSearchBuilder(SearchBuilder<AffinityGroupJoinVO> sb, Long domainId,
|
private void buildAffinityGroupViewSearchBuilder(SearchBuilder<AffinityGroupJoinVO> sb, Long domainId, boolean isRecursive, List<Long> permittedAccounts,
|
||||||
boolean isRecursive, List<Long> permittedAccounts, ListProjectResourcesCriteria listProjectResourcesCriteria) {
|
ListProjectResourcesCriteria listProjectResourcesCriteria) {
|
||||||
|
|
||||||
sb.and("accountIdIN", sb.entity().getAccountId(), SearchCriteria.Op.IN);
|
sb.and("accountIdIN", sb.entity().getAccountId(), SearchCriteria.Op.IN);
|
||||||
sb.and("domainId", sb.entity().getDomainId(), SearchCriteria.Op.EQ);
|
sb.and("domainId", sb.entity().getDomainId(), SearchCriteria.Op.EQ);
|
||||||
@ -3581,8 +3506,8 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void buildAffinityGroupViewSearchCriteria(SearchCriteria<AffinityGroupJoinVO> sc,
|
private void buildAffinityGroupViewSearchCriteria(SearchCriteria<AffinityGroupJoinVO> sc, Long domainId, boolean isRecursive, List<Long> permittedAccounts,
|
||||||
Long domainId, boolean isRecursive, List<Long> permittedAccounts, ListProjectResourcesCriteria listProjectResourcesCriteria) {
|
ListProjectResourcesCriteria listProjectResourcesCriteria) {
|
||||||
|
|
||||||
if (listProjectResourcesCriteria != null) {
|
if (listProjectResourcesCriteria != null) {
|
||||||
sc.setParameters("accountType", Account.ACCOUNT_TYPE_PROJECT);
|
sc.setParameters("accountType", Account.ACCOUNT_TYPE_PROJECT);
|
||||||
@ -3604,8 +3529,7 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
ListProjectResourcesCriteria listProjectResourcesCriteria, Long affinityGroupId, String affinityGroupName, String affinityGroupType, String keyword) {
|
ListProjectResourcesCriteria listProjectResourcesCriteria, Long affinityGroupId, String affinityGroupName, String affinityGroupType, String keyword) {
|
||||||
|
|
||||||
SearchBuilder<AffinityGroupJoinVO> groupSearch = _affinityGroupJoinDao.createSearchBuilder();
|
SearchBuilder<AffinityGroupJoinVO> groupSearch = _affinityGroupJoinDao.createSearchBuilder();
|
||||||
buildAffinityGroupViewSearchBuilder(groupSearch, domainId, isRecursive, permittedAccounts,
|
buildAffinityGroupViewSearchBuilder(groupSearch, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||||
listProjectResourcesCriteria);
|
|
||||||
|
|
||||||
groupSearch.select(null, Func.DISTINCT, groupSearch.entity().getId()); // select
|
groupSearch.select(null, Func.DISTINCT, groupSearch.entity().getId()); // select
|
||||||
// distinct
|
// distinct
|
||||||
@ -3720,7 +3644,6 @@ public class QueryManagerImpl extends MutualExclusiveIdsManagerBase implements Q
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
List<? extends ResourceDetail> detailList = new ArrayList<ResourceDetail>();
|
List<? extends ResourceDetail> detailList = new ArrayList<ResourceDetail>();
|
||||||
ResourceDetail requestedDetail = null;
|
ResourceDetail requestedDetail = null;
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user