diff --git a/api/src/com/cloud/api/commands/ListHypervisorCapabilitiesCmd.java b/api/src/com/cloud/api/commands/ListHypervisorCapabilitiesCmd.java index fe06cd64baf..598fddcf8f1 100644 --- a/api/src/com/cloud/api/commands/ListHypervisorCapabilitiesCmd.java +++ b/api/src/com/cloud/api/commands/ListHypervisorCapabilitiesCmd.java @@ -77,7 +77,7 @@ public class ListHypervisorCapabilitiesCmd extends BaseListCmd { @Override public void execute(){ - List hpvCapabilities = _mgr.listHypervisorCapabilities(getId(), getHypervisor(), this.getStartIndex(), this.getPageSizeVal()); + List hpvCapabilities = _mgr.listHypervisorCapabilities(getId(), getHypervisor(), getKeyword(), this.getStartIndex(), this.getPageSizeVal()); ListResponse response = new ListResponse(); List hpvCapabilitiesResponses = new ArrayList(); for (HypervisorCapabilities capability : hpvCapabilities) { diff --git a/api/src/com/cloud/server/ManagementService.java b/api/src/com/cloud/server/ManagementService.java index 462ecb58261..a03ae2b7169 100755 --- a/api/src/com/cloud/server/ManagementService.java +++ b/api/src/com/cloud/server/ManagementService.java @@ -444,7 +444,7 @@ public interface ManagementService { String[] listEventTypes(); - List listHypervisorCapabilities(Long id, HypervisorType hypervisorType, Long startIndex, Long pageSizeVal); + List listHypervisorCapabilities(Long id, HypervisorType hypervisorType, String keyword, Long startIndex, Long pageSizeVal); HypervisorCapabilities updateHypervisorCapabilities(Long id, Long maxGuestsLimit, Boolean securityGroupEnabled); diff --git a/server/src/com/cloud/dc/dao/DataCenterDao.java b/server/src/com/cloud/dc/dao/DataCenterDao.java index ceae3071aa3..c23ce2f2ab0 100755 --- a/server/src/com/cloud/dc/dao/DataCenterDao.java +++ b/server/src/com/cloud/dc/dao/DataCenterDao.java @@ -58,9 +58,9 @@ public interface DataCenterDao extends GenericDao { List findZonesByDomainId(Long domainId); - List listPublicZones(); + List listPublicZones(String keyword); - List findChildZones(Object[] ids); + List findChildZones(Object[] ids, String keyword); void loadDetails(DataCenterVO zone); void saveDetails(DataCenterVO zone); @@ -75,4 +75,8 @@ public interface DataCenterDao extends GenericDao { void addVnet(long dcId, long physicalNetworkId, int start, int end); void deleteVnet(long physicalNetworkId); List listAllocatedVnets(long physicalNetworkId); + + List findZonesByDomainId(Long domainId, String keyword); + + List findByKeyword(String keyword); } diff --git a/server/src/com/cloud/dc/dao/DataCenterDaoImpl.java b/server/src/com/cloud/dc/dao/DataCenterDaoImpl.java index 71b757068d2..cfad01a61f5 100755 --- a/server/src/com/cloud/dc/dao/DataCenterDaoImpl.java +++ b/server/src/com/cloud/dc/dao/DataCenterDaoImpl.java @@ -96,19 +96,52 @@ public class DataCenterDaoImpl extends GenericDaoBase implem } @Override - public List findChildZones(Object[] ids){ + public List findZonesByDomainId(Long domainId, String keyword){ + SearchCriteria sc = ListZonesByDomainIdSearch.create(); + sc.setParameters("domainId", domainId); + if (keyword != null) { + SearchCriteria ssc = createSearchCriteria(); + ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + ssc.addOr("description", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + sc.addAnd("name", SearchCriteria.Op.SC, ssc); + } + return listBy(sc); + } + + @Override + public List findChildZones(Object[] ids, String keyword){ SearchCriteria sc = ChildZonesSearch.create(); sc.setParameters("domainid", ids); + if (keyword != null) { + SearchCriteria ssc = createSearchCriteria(); + ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + ssc.addOr("description", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + sc.addAnd("name", SearchCriteria.Op.SC, ssc); + } return listBy(sc); } @Override - public List listPublicZones(){ + public List listPublicZones(String keyword){ SearchCriteria sc = PublicZonesSearch.create(); + if (keyword != null) { + SearchCriteria ssc = createSearchCriteria(); + ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + ssc.addOr("description", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + sc.addAnd("name", SearchCriteria.Op.SC, ssc); + } //sc.setParameters("domainId", domainId); return listBy(sc); } + @Override + public List findByKeyword(String keyword){ + SearchCriteria ssc = createSearchCriteria(); + ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + ssc.addOr("description", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + return listBy(ssc); + } + @Override public void releaseVnet(String vnet, long dcId, long physicalNetworkId, long accountId, String reservationId) { _vnetAllocDao.release(vnet, physicalNetworkId, accountId, reservationId); diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index e61360884fd..24ec6adb0e6 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -421,12 +421,17 @@ public class ManagementServerImpl implements ManagementServer { Long domainId = cmd.getDomainId(); Long id = cmd.getId(); boolean removeDisabledZones = false; + String keyword = cmd.getKeyword(); if (domainId != null) { // for domainId != null // right now, we made the decision to only list zones associated with this domain - dcs = _dcDao.findZonesByDomainId(domainId); // private zones + dcs = _dcDao.findZonesByDomainId(domainId, keyword); // private zones } else if ((account == null || account.getType() == Account.ACCOUNT_TYPE_ADMIN)) { - dcs = _dcDao.listAll(); // all zones + if (keyword != null) { + dcs = _dcDao.findByKeyword(keyword); + } else { + dcs = _dcDao.listAll(); // all zones + } } else if (account.getType() == Account.ACCOUNT_TYPE_NORMAL) { // it was decided to return all zones for the user's domain, and everything above till root // list all zones belonging to this domain, and all of its parents @@ -435,7 +440,7 @@ public class ManagementServerImpl implements ManagementServer { DomainVO domainRecord = _domainDao.findById(account.getDomainId()); if (domainRecord != null) { while (true) { - dcs.addAll(_dcDao.findZonesByDomainId(domainRecord.getId())); + dcs.addAll(_dcDao.findZonesByDomainId(domainRecord.getId(), keyword)); if (domainRecord.getParent() != null) { domainRecord = _domainDao.findById(domainRecord.getParent()); } else { @@ -444,7 +449,7 @@ public class ManagementServerImpl implements ManagementServer { } } // add all public zones too - dcs.addAll(_dcDao.listPublicZones()); + dcs.addAll(_dcDao.listPublicZones(keyword)); removeDisabledZones = true; } else if (account.getType() == Account.ACCOUNT_TYPE_DOMAIN_ADMIN || account.getType() == Account.ACCOUNT_TYPE_RESOURCE_DOMAIN_ADMIN) { // it was decided to return all zones for the domain admin, and everything above till root @@ -454,7 +459,7 @@ public class ManagementServerImpl implements ManagementServer { if (domainRecord != null) { DomainVO localRecord = domainRecord; while (true) { - dcs.addAll(_dcDao.findZonesByDomainId(localRecord.getId())); + dcs.addAll(_dcDao.findZonesByDomainId(localRecord.getId(), keyword)); if (localRecord.getParent() != null) { localRecord = _domainDao.findById(localRecord.getParent()); } else { @@ -473,12 +478,12 @@ public class ManagementServerImpl implements ManagementServer { } // now make a search for zones based on this if (allChildDomainIds.size() > 0) { - List childZones = _dcDao.findChildZones((allChildDomainIds.toArray())); + List childZones = _dcDao.findChildZones((allChildDomainIds.toArray()), keyword); dcs.addAll(childZones); } } // add all public zones too - dcs.addAll(_dcDao.listPublicZones()); + dcs.addAll(_dcDao.listPublicZones(keyword)); removeDisabledZones = true; } @@ -810,6 +815,7 @@ public class ManagementServerImpl implements ManagementServer { Object hypervisorType = cmd.getHypervisorType(); Object clusterType = cmd.getClusterType(); Object allocationState = cmd.getAllocationState(); + String keyword = cmd.getKeyword(); zoneId = _accountMgr.checkAccessAndSpecifyAuthority(UserContext.current().getCaller(), zoneId); @@ -841,6 +847,13 @@ public class ManagementServerImpl implements ManagementServer { sc.addAnd("allocationState", SearchCriteria.Op.EQ, allocationState); } + if (keyword != null) { + SearchCriteria ssc = _clusterDao.createSearchCriteria(); + ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + ssc.addOr("hypervisorType", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + sc.addAnd("name", SearchCriteria.Op.SC, ssc); + } + return _clusterDao.search(sc, searchFilter); } @@ -3715,7 +3728,7 @@ public class ManagementServerImpl implements ManagementServer { } @Override - public List listHypervisorCapabilities(Long id, HypervisorType hypervisorType, Long startIndex, Long pageSizeVal){ + public List listHypervisorCapabilities(Long id, HypervisorType hypervisorType, String keyword, Long startIndex, Long pageSizeVal){ Filter searchFilter = new Filter(HypervisorCapabilitiesVO.class, "id", true, startIndex, pageSizeVal); SearchCriteria sc = _hypervisorCapabilitiesDao.createSearchCriteria(); @@ -3727,6 +3740,12 @@ public class ManagementServerImpl implements ManagementServer { sc.addAnd("hypervisorType", SearchCriteria.Op.EQ, hypervisorType); } + if (keyword != null) { + SearchCriteria ssc = _hypervisorCapabilitiesDao.createSearchCriteria(); + ssc.addOr("hypervisorType", SearchCriteria.Op.LIKE, "%" + keyword + "%"); + sc.addAnd("hypervisorType", SearchCriteria.Op.SC, ssc); + } + return _hypervisorCapabilitiesDao.search(sc, searchFilter); }