Search in sources :

Example 56 with Filter

use of com.cloud.utils.db.Filter in project cloudstack by apache.

the class ApplicationLoadBalancerManagerImpl method listApplicationLoadBalancers.

@Override
public Pair<List<? extends ApplicationLoadBalancerRule>, Integer> listApplicationLoadBalancers(ListApplicationLoadBalancersCmd cmd) {
    Long id = cmd.getId();
    String name = cmd.getLoadBalancerRuleName();
    String ip = cmd.getSourceIp();
    Long ipNtwkId = cmd.getSourceIpNetworkId();
    String keyword = cmd.getKeyword();
    Scheme scheme = cmd.getScheme();
    Long networkId = cmd.getNetworkId();
    Boolean display = cmd.getDisplay();
    Map<String, String> tags = cmd.getTags();
    Account caller = CallContext.current().getCallingAccount();
    List<Long> permittedAccounts = new ArrayList<Long>();
    Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject = new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
    _accountMgr.buildACLSearchParameters(caller, id, cmd.getAccountName(), cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, cmd.listAll(), false);
    Long domainId = domainIdRecursiveListProject.first();
    Boolean isRecursive = domainIdRecursiveListProject.second();
    ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
    Filter searchFilter = new Filter(ApplicationLoadBalancerRuleVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
    SearchBuilder<ApplicationLoadBalancerRuleVO> sb = _lbDao.createSearchBuilder();
    _accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
    sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
    sb.and("name", sb.entity().getName(), SearchCriteria.Op.EQ);
    sb.and("sourceIpAddress", sb.entity().getSourceIp(), SearchCriteria.Op.EQ);
    sb.and("sourceIpAddressNetworkId", sb.entity().getSourceIpNetworkId(), SearchCriteria.Op.EQ);
    sb.and("scheme", sb.entity().getScheme(), SearchCriteria.Op.EQ);
    sb.and("networkId", sb.entity().getNetworkId(), SearchCriteria.Op.EQ);
    sb.and("display", sb.entity().isDisplay(), SearchCriteria.Op.EQ);
    //list only load balancers having not null sourceIp/sourceIpNtwkId
    sb.and("sourceIpAddress", sb.entity().getSourceIp(), SearchCriteria.Op.NNULL);
    sb.and("sourceIpAddressNetworkId", sb.entity().getSourceIpNetworkId(), SearchCriteria.Op.NNULL);
    if (tags != null && !tags.isEmpty()) {
        SearchBuilder<ResourceTagVO> tagSearch = _resourceTagDao.createSearchBuilder();
        for (int count = 0; count < tags.size(); count++) {
            tagSearch.or().op("key" + String.valueOf(count), tagSearch.entity().getKey(), SearchCriteria.Op.EQ);
            tagSearch.and("value" + String.valueOf(count), tagSearch.entity().getValue(), SearchCriteria.Op.EQ);
            tagSearch.cp();
        }
        tagSearch.and("resourceType", tagSearch.entity().getResourceType(), SearchCriteria.Op.EQ);
        sb.groupBy(sb.entity().getId());
        sb.join("tagSearch", tagSearch, sb.entity().getId(), tagSearch.entity().getResourceId(), JoinBuilder.JoinType.INNER);
    }
    SearchCriteria<ApplicationLoadBalancerRuleVO> sc = sb.create();
    _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
    if (keyword != null) {
        SearchCriteria<ApplicationLoadBalancerRuleVO> ssc = _lbDao.createSearchCriteria();
        ssc.addOr("name", SearchCriteria.Op.LIKE, "%" + keyword + "%");
        ssc.addOr("description", SearchCriteria.Op.LIKE, "%" + keyword + "%");
        sc.addAnd("name", SearchCriteria.Op.SC, ssc);
    }
    if (name != null) {
        sc.setParameters("name", name);
    }
    if (id != null) {
        sc.setParameters("id", id);
    }
    if (ip != null) {
        sc.setParameters("sourceIpAddress", ip);
    }
    if (ipNtwkId != null) {
        sc.setParameters("sourceIpAddressNetworkId", ipNtwkId);
    }
    if (scheme != null) {
        sc.setParameters("scheme", scheme);
    }
    if (networkId != null) {
        sc.setParameters("networkId", networkId);
    }
    if (tags != null && !tags.isEmpty()) {
        int count = 0;
        sc.setJoinParameters("tagSearch", "resourceType", ResourceObjectType.LoadBalancer.toString());
        for (String key : tags.keySet()) {
            sc.setJoinParameters("tagSearch", "key" + String.valueOf(count), key);
            sc.setJoinParameters("tagSearch", "value" + String.valueOf(count), tags.get(key));
            count++;
        }
    }
    if (display != null) {
        sc.setParameters("display", display);
    }
    Pair<List<ApplicationLoadBalancerRuleVO>, Integer> result = _lbDao.searchAndCount(sc, searchFilter);
    return new Pair<List<? extends ApplicationLoadBalancerRule>, Integer>(result.first(), result.second());
}
Also used : Account(com.cloud.user.Account) ApplicationLoadBalancerRuleVO(org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO) Scheme(com.cloud.network.rules.LoadBalancerContainer.Scheme) Ternary(com.cloud.utils.Ternary) ArrayList(java.util.ArrayList) ListProjectResourcesCriteria(com.cloud.projects.Project.ListProjectResourcesCriteria) Filter(com.cloud.utils.db.Filter) ResourceTagVO(com.cloud.tags.ResourceTagVO) List(java.util.List) ArrayList(java.util.ArrayList) Pair(com.cloud.utils.Pair)

Example 57 with Filter

use of com.cloud.utils.db.Filter in project cloudstack by apache.

the class NetworkServiceImpl method listDedicatedGuestVlanRanges.

@Override
public Pair<List<? extends GuestVlan>, Integer> listDedicatedGuestVlanRanges(ListDedicatedGuestVlanRangesCmd cmd) {
    Long id = cmd.getId();
    String accountName = cmd.getAccountName();
    Long domainId = cmd.getDomainId();
    Long projectId = cmd.getProjectId();
    String guestVlanRange = cmd.getGuestVlanRange();
    Long physicalNetworkId = cmd.getPhysicalNetworkId();
    Long zoneId = cmd.getZoneId();
    Long accountId = null;
    if (accountName != null && domainId != null) {
        if (projectId != null) {
            throw new InvalidParameterValueException("Account and projectId can't be specified together");
        }
        Account account = _accountDao.findActiveAccount(accountName, domainId);
        if (account == null) {
            InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find account " + accountName);
            DomainVO domain = ApiDBUtils.findDomainById(domainId);
            String domainUuid = domainId.toString();
            if (domain != null) {
                domainUuid = domain.getUuid();
            }
            ex.addProxyObject(domainUuid, "domainId");
            throw ex;
        } else {
            accountId = account.getId();
        }
    }
    // set project information
    if (projectId != null) {
        Project project = _projectMgr.getProject(projectId);
        if (project == null) {
            InvalidParameterValueException ex = new InvalidParameterValueException("Unable to find project by id " + projectId);
            ex.addProxyObject(projectId.toString(), "projectId");
            throw ex;
        }
        accountId = project.getProjectAccountId();
    }
    SearchBuilder<AccountGuestVlanMapVO> sb = _accountGuestVlanMapDao.createSearchBuilder();
    sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
    sb.and("accountId", sb.entity().getAccountId(), SearchCriteria.Op.EQ);
    sb.and("guestVlanRange", sb.entity().getGuestVlanRange(), SearchCriteria.Op.EQ);
    sb.and("physicalNetworkId", sb.entity().getPhysicalNetworkId(), SearchCriteria.Op.EQ);
    if (zoneId != null) {
        SearchBuilder<PhysicalNetworkVO> physicalnetworkSearch = _physicalNetworkDao.createSearchBuilder();
        physicalnetworkSearch.and("zoneId", physicalnetworkSearch.entity().getDataCenterId(), SearchCriteria.Op.EQ);
        sb.join("physicalnetworkSearch", physicalnetworkSearch, sb.entity().getPhysicalNetworkId(), physicalnetworkSearch.entity().getId(), JoinBuilder.JoinType.INNER);
    }
    SearchCriteria<AccountGuestVlanMapVO> sc = sb.create();
    if (id != null) {
        sc.setParameters("id", id);
    }
    if (accountId != null) {
        sc.setParameters("accountId", accountId);
    }
    if (guestVlanRange != null) {
        sc.setParameters("guestVlanRange", guestVlanRange);
    }
    if (physicalNetworkId != null) {
        sc.setParameters("physicalNetworkId", physicalNetworkId);
    }
    if (zoneId != null) {
        sc.setJoinParameters("physicalnetworkSearch", "zoneId", zoneId);
    }
    Filter searchFilter = new Filter(AccountGuestVlanMapVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
    Pair<List<AccountGuestVlanMapVO>, Integer> result = _accountGuestVlanMapDao.searchAndCount(sc, searchFilter);
    return new Pair<List<? extends GuestVlan>, Integer>(result.first(), result.second());
}
Also used : Account(com.cloud.user.Account) AccountGuestVlanMapVO(com.cloud.network.dao.AccountGuestVlanMapVO) NetworkDomainVO(com.cloud.network.dao.NetworkDomainVO) DomainVO(com.cloud.domain.DomainVO) Project(com.cloud.projects.Project) InvalidParameterValueException(com.cloud.exception.InvalidParameterValueException) Filter(com.cloud.utils.db.Filter) PhysicalNetworkVO(com.cloud.network.dao.PhysicalNetworkVO) ArrayList(java.util.ArrayList) List(java.util.List) Pair(com.cloud.utils.Pair)

Example 58 with Filter

use of com.cloud.utils.db.Filter in project cloudstack by apache.

the class AutoScaleManagerImpl method listCounters.

@Override
public List<? extends Counter> listCounters(ListCountersCmd cmd) {
    String name = cmd.getName();
    Long id = cmd.getId();
    String source = cmd.getSource();
    if (source != null)
        source = source.toLowerCase();
    Filter searchFilter = new Filter(CounterVO.class, "created", false, cmd.getStartIndex(), cmd.getPageSizeVal());
    List<CounterVO> counters = _counterDao.listCounters(id, name, source, cmd.getKeyword(), searchFilter);
    return counters;
}
Also used : Filter(com.cloud.utils.db.Filter)

Example 59 with Filter

use of com.cloud.utils.db.Filter in project cloudstack by apache.

the class UsageEventDaoImpl method listLatestEvents.

@Override
public List<UsageEventVO> listLatestEvents(Date endDate) {
    Filter filter = new Filter(UsageEventVO.class, "createDate", Boolean.TRUE, null, null);
    SearchCriteria<UsageEventVO> sc = latestEventsSearch.create();
    sc.setParameters("processed", false);
    sc.setParameters("enddate", endDate);
    return listBy(sc, filter);
}
Also used : Filter(com.cloud.utils.db.Filter) UsageEventVO(com.cloud.event.UsageEventVO)

Example 60 with Filter

use of com.cloud.utils.db.Filter in project cloudstack by apache.

the class OutOfBandManagementDaoImpl method findAllByManagementServer.

@Override
public List<OutOfBandManagementVO> findAllByManagementServer(long serverId) {
    SearchCriteria<OutOfBandManagementVO> sc = OutOfBandManagementOwnerSearch.create();
    sc.setParameters("server", serverId);
    return listBy(sc, new Filter(OutOfBandManagementVO.class, "updateTime", true, null, null));
}
Also used : Filter(com.cloud.utils.db.Filter) OutOfBandManagementVO(org.apache.cloudstack.outofbandmanagement.OutOfBandManagementVO)

Aggregations

Filter (com.cloud.utils.db.Filter)114 ArrayList (java.util.ArrayList)68 List (java.util.List)64 Pair (com.cloud.utils.Pair)58 Account (com.cloud.user.Account)46 InvalidParameterValueException (com.cloud.exception.InvalidParameterValueException)33 ListProjectResourcesCriteria (com.cloud.projects.Project.ListProjectResourcesCriteria)30 Ternary (com.cloud.utils.Ternary)30 TemplateFilter (com.cloud.template.VirtualMachineTemplate.TemplateFilter)27 DomainVO (com.cloud.domain.DomainVO)13 ExcludeList (com.cloud.deploy.DeploymentPlanner.ExcludeList)12 SSHKeyPair (com.cloud.user.SSHKeyPair)12 ResourceTagVO (com.cloud.tags.ResourceTagVO)11 Date (java.util.Date)10 PermissionDeniedException (com.cloud.exception.PermissionDeniedException)9 IPAddressVO (com.cloud.network.dao.IPAddressVO)8 VMTemplateVO (com.cloud.storage.VMTemplateVO)5 SearchCriteria (com.cloud.utils.db.SearchCriteria)5 CloudRuntimeException (com.cloud.utils.exception.CloudRuntimeException)5 CloudAuthenticationException (com.cloud.exception.CloudAuthenticationException)4