mirror of https://github.com/apache/cloudstack.git
bug 6023: Implemented the search by group
status 6023: resolved fixed
This commit is contained in:
parent
b0acdbcf8b
commit
9535dc8f4d
|
|
@ -1,5 +1,5 @@
|
|||
/**
|
||||
: * Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
|
||||
* Copyright (C) 2010 Cloud.com, Inc. All rights reserved.
|
||||
*
|
||||
* This software is licensed under the GNU General Public License v3 or later.
|
||||
*
|
||||
|
|
|
|||
|
|
@ -76,7 +76,8 @@ public class Criteria {
|
|||
public static final String TARGET_IQN = "targetiqn";
|
||||
public static final String SCOPE = "scope";
|
||||
public static final String NETWORKGROUP = "networkGroup";
|
||||
|
||||
public static final String GROUP = "group";
|
||||
public static final String EMPTY_GROUP = "emptyGroup";
|
||||
|
||||
public Criteria(String orderBy, Boolean ascending, Long offset, Long limit) {
|
||||
this.offset = offset;
|
||||
|
|
|
|||
|
|
@ -116,6 +116,8 @@ public class UserVmDaoImpl extends GenericDaoBase<UserVmVO, Long> implements Use
|
|||
DestroySearch.and("updateTime", DestroySearch.entity().getUpdateTime(), SearchCriteria.Op.LT);
|
||||
DestroySearch.done();
|
||||
|
||||
|
||||
|
||||
_updateTimeAttr = _allAttributes.get("updateTime");
|
||||
assert _updateTimeAttr != null : "Couldn't get this updateTime attribute";
|
||||
}
|
||||
|
|
|
|||
|
|
@ -53,6 +53,7 @@ public class ListVMsCmd extends BaseCmd {
|
|||
s_properties.add(new Pair<Enum, Boolean>(BaseCmd.Properties.STATE, Boolean.FALSE));
|
||||
s_properties.add(new Pair<Enum, Boolean>(BaseCmd.Properties.ZONE_ID, Boolean.FALSE));
|
||||
s_properties.add(new Pair<Enum, Boolean>(BaseCmd.Properties.POD_ID, Boolean.FALSE));
|
||||
s_properties.add(new Pair<Enum, Boolean>(BaseCmd.Properties.GROUP, Boolean.FALSE));
|
||||
s_properties.add(new Pair<Enum, Boolean>(BaseCmd.Properties.HOST_ID, Boolean.FALSE));
|
||||
s_properties.add(new Pair<Enum, Boolean>(BaseCmd.Properties.KEYWORD, Boolean.FALSE));
|
||||
s_properties.add(new Pair<Enum, Boolean>(BaseCmd.Properties.ACCOUNT, Boolean.FALSE));
|
||||
|
|
@ -82,6 +83,7 @@ public class ListVMsCmd extends BaseCmd {
|
|||
Long zoneId = (Long)params.get(BaseCmd.Properties.ZONE_ID.getName());
|
||||
Long podId = (Long)params.get(BaseCmd.Properties.POD_ID.getName());
|
||||
Long hostId = (Long)params.get(BaseCmd.Properties.HOST_ID.getName());
|
||||
String group = (String)params.get(BaseCmd.Properties.GROUP.getName());
|
||||
String keyword = (String)params.get(BaseCmd.Properties.KEYWORD.getName());
|
||||
Integer page = (Integer)params.get(BaseCmd.Properties.PAGE.getName());
|
||||
Integer pageSize = (Integer)params.get(BaseCmd.Properties.PAGESIZE.getName());
|
||||
|
|
@ -140,6 +142,14 @@ public class ListVMsCmd extends BaseCmd {
|
|||
if(zoneId != null)
|
||||
c.addCriteria(Criteria.DATACENTERID, zoneId);
|
||||
|
||||
if(group != null)
|
||||
{
|
||||
if(group.equals(""))
|
||||
c.addCriteria(Criteria.EMPTY_GROUP, group);
|
||||
else
|
||||
c.addCriteria(Criteria.GROUP, group);
|
||||
}
|
||||
|
||||
// ignore these search requests if it's not an admin
|
||||
if (isAdmin == true) {
|
||||
c.addCriteria(Criteria.DOMAINID, domainId);
|
||||
|
|
|
|||
|
|
@ -4989,7 +4989,6 @@ public class ManagementServerImpl implements ManagementServer {
|
|||
public List<UserVmVO> searchForUserVMs(Criteria c) {
|
||||
Filter searchFilter = new Filter(UserVmVO.class, c.getOrderBy(), c.getAscending(), c.getOffset(), c.getLimit());
|
||||
SearchBuilder<UserVmVO> sb = _userVmDao.createSearchBuilder();
|
||||
|
||||
// some criteria matter for generating the join condition
|
||||
Object[] accountIds = (Object[]) c.getCriteria(Criteria.ACCOUNTID);
|
||||
Object domainId = c.getCriteria(Criteria.DOMAINID);
|
||||
|
|
@ -5006,7 +5005,8 @@ public class ManagementServerImpl implements ManagementServer {
|
|||
Object keyword = c.getCriteria(Criteria.KEYWORD);
|
||||
Object isAdmin = c.getCriteria(Criteria.ISADMIN);
|
||||
Object ipAddress = c.getCriteria(Criteria.IPADDRESS);
|
||||
|
||||
Object vmGroup = c.getCriteria(Criteria.GROUP);
|
||||
Object emptyGroup = c.getCriteria(Criteria.EMPTY_GROUP);
|
||||
sb.and("displayName", sb.entity().getDisplayName(), SearchCriteria.Op.LIKE);
|
||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||
sb.and("accountIdEQ", sb.entity().getAccountId(), SearchCriteria.Op.EQ);
|
||||
|
|
@ -5020,7 +5020,8 @@ public class ManagementServerImpl implements ManagementServer {
|
|||
sb.and("hostIdEQ", sb.entity().getHostId(), SearchCriteria.Op.EQ);
|
||||
sb.and("hostIdIN", sb.entity().getHostId(), SearchCriteria.Op.IN);
|
||||
sb.and("guestIP", sb.entity().getGuestIpAddress(), SearchCriteria.Op.EQ);
|
||||
|
||||
sb.and("groupEQ", sb.entity().getGroup(),SearchCriteria.Op.EQ);
|
||||
|
||||
if ((accountIds == null) && (domainId != null)) {
|
||||
// if accountId isn't specified, we can do a domain match for the admin case
|
||||
SearchBuilder<DomainVO> domainSearch = _domainDao.createSearchBuilder();
|
||||
|
|
@ -5109,7 +5110,23 @@ public class ManagementServerImpl implements ManagementServer {
|
|||
if (ipAddress != null) {
|
||||
sc.setParameters("guestIP", ipAddress);
|
||||
}
|
||||
|
||||
if(vmGroup!=null)
|
||||
sc.setParameters("groupEQ", vmGroup);
|
||||
|
||||
if (emptyGroup!= null)
|
||||
{
|
||||
SearchBuilder<UserVmVO> emptyGroupSearch = _userVmDao.createSearchBuilder();
|
||||
emptyGroupSearch.and("group", emptyGroupSearch.entity().getGroup(), SearchCriteria.Op.EQ);
|
||||
emptyGroupSearch.or("null", emptyGroupSearch.entity().getGroup(), SearchCriteria.Op.NULL);
|
||||
|
||||
SearchCriteria<UserVmVO> sc1 = _userVmDao.createSearchCriteria();
|
||||
sc1 = emptyGroupSearch.create();
|
||||
sc1.setParameters("group", "");
|
||||
|
||||
sc.addAnd("group", SearchCriteria.Op.SC, sc1);
|
||||
}
|
||||
|
||||
return _userVmDao.search(sc, searchFilter);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue