Bug 6543: fix searching to include keyword and all other search criteria rather than just keyword whenever keyword is passed to the API. This prevents filtering of domainId when domain admins are searching for resources (VMs, volumes, events, alerts, etc.).

Status 6543: resolved fixed
This commit is contained in:
Kris McQueen 2010-10-13 14:09:05 -07:00
parent e94911f1fe
commit dec110408f
21 changed files with 119 additions and 181 deletions

View File

@ -109,15 +109,12 @@ public class ListAccountsCmd extends BaseCmd{
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
if (isAdmin == true) {
c.addCriteria(Criteria.ID, id);
if (keyword == null) {
c.addCriteria(Criteria.ACCOUNTNAME, accountName);
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.TYPE, type);
c.addCriteria(Criteria.STATE, state);
c.addCriteria(Criteria.ISCLEANUPREQUIRED, needCleanup);
} else {
c.addCriteria(Criteria.KEYWORD, keyword);
}
c.addCriteria(Criteria.ACCOUNTNAME, accountName);
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.TYPE, type);
c.addCriteria(Criteria.STATE, state);
c.addCriteria(Criteria.ISCLEANUPREQUIRED, needCleanup);
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ID, accountId);
}

View File

@ -73,9 +73,7 @@ public class ListAlertsCmd extends BaseCmd{
Criteria c = new Criteria ("lastSent", Boolean.FALSE, startIndex, Long.valueOf(pageSizeNum));
c.addCriteria(Criteria.KEYWORD, keyword);
if (keyword == null)
c.addCriteria(Criteria.TYPE, alertType);
c.addCriteria(Criteria.TYPE, alertType);
List<AlertVO> alerts = getManagementServer().searchForAlerts(c);

View File

@ -72,12 +72,9 @@ public class ListCfgsByCmd extends BaseCmd {
}
Criteria c = new Criteria ("name", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.CATEGORY, category);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.CATEGORY, category);
List<ConfigurationVO> configs = getManagementServer().searchForConfigurations(c, false);

View File

@ -76,13 +76,10 @@ public class ListDiskOfferingsCmd extends BaseCmd {
}
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
}else {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.DOMAINID, domainId);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.DOMAINID, domainId);
List<DiskOfferingVO> offerings = getManagementServer().searchForDiskOfferings(c);

View File

@ -95,16 +95,11 @@ public class ListDomainChildrenCmd extends BaseCmd {
c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
else
c = new Criteria("id", Boolean.TRUE, null, null);
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
}
else {
c.addCriteria(Criteria.ID, domainId);
c.addCriteria(Criteria.NAME, domainName);
c.addCriteria(Criteria.ISRECURSIVE, isRecursive);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, domainId);
c.addCriteria(Criteria.NAME, domainName);
c.addCriteria(Criteria.ISRECURSIVE, isRecursive);
// TODO : Recursive listing is not supported yet
List<DomainVO> domains = getManagementServer().searchForDomainChildren(c);

View File

@ -93,13 +93,10 @@ public class ListDomainsCmd extends BaseCmd {
else
c = new Criteria("id", Boolean.TRUE, null, null);
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ID, domainId);
c.addCriteria(Criteria.NAME, domainName);
c.addCriteria(Criteria.LEVEL, level);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, domainId);
c.addCriteria(Criteria.NAME, domainName);
c.addCriteria(Criteria.LEVEL, level);
List<DomainVO> domains = getManagementServer().searchForDomains(c);

View File

@ -122,17 +122,14 @@ public class ListEventsCmd extends BaseCmd {
}
Criteria c = new Criteria("createDate", Boolean.FALSE, startIndex, Long.valueOf(pageSizeNum));
c.addCriteria(Criteria.ACCOUNTID, accountIds);
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
if (isAdmin) {
c.addCriteria(Criteria.DOMAINID, domainId);
}
c.addCriteria(Criteria.TYPE, eventType);
c.addCriteria(Criteria.LEVEL, eventLevel);
c.addCriteria(Criteria.STARTDATE, startDate);
c.addCriteria(Criteria.ENDDATE, endDate);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.TYPE, eventType);
c.addCriteria(Criteria.LEVEL, eventLevel);
c.addCriteria(Criteria.STARTDATE, startDate);
c.addCriteria(Criteria.ENDDATE, endDate);
if (isAdmin) {
c.addCriteria(Criteria.DOMAINID, domainId);
}
List<EventVO> events;

View File

@ -124,16 +124,13 @@ public class ListLoadBalancerRulesCmd extends BaseCmd {
Criteria c = new Criteria("ipAddress", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
c.addCriteria(Criteria.ACCOUNTID, accountId);
if (keyword == null) {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.INSTANCEID, vmId);
c.addCriteria(Criteria.IPADDRESS, publicIp);
if (isAdmin) {
c.addCriteria(Criteria.DOMAINID, domainId);
}
} else {
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.INSTANCEID, vmId);
c.addCriteria(Criteria.IPADDRESS, publicIp);
c.addCriteria(Criteria.KEYWORD, keyword);
if (isAdmin) {
c.addCriteria(Criteria.DOMAINID, domainId);
}
// FIXME: this should be constrained by domain to search for all load balancers in a domain if an admin is searching

View File

@ -60,13 +60,10 @@ public class ListPodsByCmd extends BaseCmd {
Criteria c = new Criteria();
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.DATACENTERID, zoneId);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.DATACENTERID, zoneId);
List<HostPodVO> pods = getManagementServer().searchForPods(c);

View File

@ -95,11 +95,8 @@ public class ListPortForwardingServicesByVmCmd extends BaseCmd {
Criteria c = new Criteria("id", Boolean.TRUE, null, null);
c.addCriteria(Criteria.INSTANCEID, vmId);
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ADDRESS, ipAddress);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ADDRESS, ipAddress);
Map<String, List<SecurityGroupVO>> groups = getManagementServer().searchForSecurityGroupsByVM(c);

View File

@ -107,14 +107,11 @@ public class ListPortForwardingServicesCmd extends BaseCmd {
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
c.addCriteria(Criteria.ACCOUNTID, accountId);
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
if (isAdmin) {
c.addCriteria(Criteria.DOMAINID, domainId);
}
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
if (isAdmin) {
c.addCriteria(Criteria.DOMAINID, domainId);
}
List<SecurityGroupVO> groups = getManagementServer().searchForSecurityGroups(c);

View File

@ -130,16 +130,13 @@ public class ListPublicIpAddressesCmd extends BaseCmd {
c.addCriteria(Criteria.ISALLOCATED, allocatedOnly.booleanValue());
}
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
if (isAdmin) {
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.VLAN, vlanDbId);
}
c.addCriteria(Criteria.FOR_VIRTUAL_NETWORK, forVirtualNetwork);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.IPADDRESS, ip);
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.FOR_VIRTUAL_NETWORK, forVirtualNetwork);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.IPADDRESS, ip);
if (isAdmin) {
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.VLAN, vlanDbId);
}
List<IPAddressVO> result = getManagementServer().searchForIPAddresses(c);

View File

@ -113,16 +113,13 @@ public class ListRoutersCmd extends BaseCmd {
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
c.addCriteria(Criteria.ACCOUNTID, accountIds);
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.HOSTID, hostId);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.STATE, state);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.HOSTID, hostId);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.STATE, state);
List<DomainRouterVO> routers = getManagementServer().searchForRouters(c);

View File

@ -78,12 +78,9 @@ public class ListServiceOfferingsCmd extends BaseCmd {
}
}
Criteria c = new Criteria("created", Boolean.FALSE, startIndex, Long.valueOf(pageSizeNum));
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
//If vmId is present in the list of parameters, verify it
if (vmId != null) {

View File

@ -84,15 +84,12 @@ public class ListStoragePoolsCmd extends BaseCmd{
}
}
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.ADDRESS, ipAddress);
c.addCriteria(Criteria.PATH, path);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.ADDRESS, ipAddress);
c.addCriteria(Criteria.PATH, path);
List<? extends StoragePoolVO> pools = getManagementServer().searchForStoragePools(c);

View File

@ -84,16 +84,13 @@ public class ListSystemVMsCmd extends BaseCmd {
}
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.HOSTID, hostId);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.STATE, state);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.HOSTID, hostId);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.STATE, state);
List<ConsoleProxyVO> proxies = getManagementServer().searchForConsoleProxy(c);
List<SecondaryStorageVmVO> ssVms = getManagementServer().searchForSecondaryStorageVm(c);

View File

@ -91,18 +91,16 @@ public class ListUsersCmd extends BaseCmd {
startIndex = Long.valueOf(pageSizeNum * (pageNum-1));
}
}
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
}
else {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.ACCOUNTNAME, accountName);
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.USERNAME, userName);
c.addCriteria(Criteria.TYPE, type);
c.addCriteria(Criteria.STATE, state);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.ACCOUNTNAME, accountName);
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.USERNAME, userName);
c.addCriteria(Criteria.TYPE, type);
c.addCriteria(Criteria.STATE, state);
List<UserAccountVO> users = getManagementServer().searchForUsers(c);
List<Pair<String, Object>> userTags = new ArrayList<Pair<String, Object>>();

View File

@ -130,24 +130,20 @@ public class ListVMsCmd extends BaseCmd {
}
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.STATE, state);
c.addCriteria(Criteria.DATACENTERID, zoneId);
// ignore these search requests if it's not an admin
if (isAdmin == true) {
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.HOSTID, hostId);
}
}
c.addCriteria(Criteria.ACCOUNTID, accountIds);
c.addCriteria(Criteria.ISADMIN, isAdmin);
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.NAME, name);
c.addCriteria(Criteria.STATE, state);
c.addCriteria(Criteria.DATACENTERID, zoneId);
// ignore these search requests if it's not an admin
if (isAdmin == true) {
c.addCriteria(Criteria.DOMAINID, domainId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.HOSTID, hostId);
}
List<? extends UserVm> virtualMachines = getManagementServer().searchForUserVMs(c);

View File

@ -97,19 +97,16 @@ public class ListVlanIpRangesCmd extends BaseCmd {
accountId = account.getId();
}
}
Criteria c = new Criteria("id", Boolean.TRUE, startIndex, Long.valueOf(pageSizeNum));
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.VLAN, vlanId);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.ACCOUNTID, accountId);
c.addCriteria(Criteria.PODID, podId);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.VLAN, vlanId);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.ACCOUNTID, accountId);
c.addCriteria(Criteria.PODID, podId);
List<? extends VlanVO> vlans = getManagementServer().searchForVlans(c);
if (vlans == null) {

View File

@ -123,19 +123,16 @@ public class ListVolumesCmd extends BaseCmd{
Criteria c = new Criteria("created", Boolean.FALSE, startIndex, Long.valueOf(pageSizeNum));
c.addCriteria(Criteria.ACCOUNTID, accountIds);
if (keyword != null) {
c.addCriteria(Criteria.KEYWORD, keyword);
} else {
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.INSTANCEID, vmId);
c.addCriteria(Criteria.NAME, name);
if (isAdmin) {
c.addCriteria(Criteria.VTYPE, type);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.HOSTID, hostId);
c.addCriteria(Criteria.DOMAINID, domainId);
}
c.addCriteria(Criteria.KEYWORD, keyword);
c.addCriteria(Criteria.ID, id);
c.addCriteria(Criteria.INSTANCEID, vmId);
c.addCriteria(Criteria.NAME, name);
if (isAdmin) {
c.addCriteria(Criteria.VTYPE, type);
c.addCriteria(Criteria.DATACENTERID, zoneId);
c.addCriteria(Criteria.PODID, podId);
c.addCriteria(Criteria.HOSTID, hostId);
c.addCriteria(Criteria.DOMAINID, domainId);
}
List<VolumeVO> volumes = getManagementServer().searchForVolumes(c);

View File

@ -5496,7 +5496,6 @@ public class ManagementServerImpl implements ManagementServer {
if (keyword != null) {
SearchCriteria ssc = _volumeDao.createSearchCriteria();
ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%");
ssc.addOr("nameLabel", SearchCriteria.Op.LIKE, "%" + keyword + "%");
ssc.addOr("volumeType", SearchCriteria.Op.LIKE, "%" + keyword + "%");
sc.addAnd("name", SearchCriteria.Op.SC, ssc);