mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-332: intermediate checkin fixing count parameter in listCommands
Fixes the count in commands: listVolumes listVirtualMachines listSnapshots listRouters listFirewallRules listPortForwardingRules listLoadBalancerRules listIpForwardingRules listAccounts listUsers listDomains listDomainChildren listPublicIpAddresses listAlerts listAsyncJobs listRemoteAccessVpns listVpnUsers listTags listPrivateGateways listNetworkACLs listStaticRoutes Conflicts: api/src/com/cloud/api/commands/ListVMsCmd.java api/src/com/cloud/api/commands/ListVolumesCmd.java api/src/com/cloud/network/lb/LoadBalancingRulesService.java server/src/com/cloud/network/firewall/FirewallManagerImpl.java server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java server/src/com/cloud/network/rules/RulesManagerImpl.java server/src/com/cloud/network/vpc/NetworkACLManagerImpl.java server/src/com/cloud/network/vpc/VpcManagerImpl.java server/src/com/cloud/network/vpn/RemoteAccessVpnManagerImpl.java server/src/com/cloud/tags/TaggedResourceManagerImpl.java
This commit is contained in:
parent
6e60a07566
commit
8f2d9a09e5
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.AccountResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists accounts and provides detailed account information for listed accounts", responseObject=AccountResponse.class)
|
||||
public class ListAccountsCmd extends BaseListDomainResourcesCmd {
|
||||
@ -91,15 +92,15 @@ public class ListAccountsCmd extends BaseListDomainResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends Account> accounts = _accountService.searchForAccounts(this);
|
||||
Pair<List<? extends Account>, Integer> accounts = _accountService.searchForAccounts(this);
|
||||
ListResponse<AccountResponse> response = new ListResponse<AccountResponse>();
|
||||
List<AccountResponse> accountResponses = new ArrayList<AccountResponse>();
|
||||
for (Account account : accounts) {
|
||||
for (Account account : accounts.first()) {
|
||||
AccountResponse acctResponse = _responseGenerator.createAccountResponse(account);
|
||||
acctResponse.setObjectName("account");
|
||||
accountResponses.add(acctResponse);
|
||||
}
|
||||
response.setResponses(accountResponses);
|
||||
response.setResponses(accountResponses, accounts.second());
|
||||
response.setResponseName(getCommandName());
|
||||
|
||||
this.setResponseObject(response);
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Implementation;
|
||||
import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.AlertResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description = "Lists all alerts.", responseObject = AlertResponse.class)
|
||||
public class ListAlertsCmd extends BaseListCmd {
|
||||
@ -71,10 +72,10 @@ public class ListAlertsCmd extends BaseListCmd {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
List<? extends Alert> result = _mgr.searchForAlerts(this);
|
||||
Pair<List<? extends Alert>, Integer> result = _mgr.searchForAlerts(this);
|
||||
ListResponse<AlertResponse> response = new ListResponse<AlertResponse>();
|
||||
List<AlertResponse> alertResponseList = new ArrayList<AlertResponse>();
|
||||
for (Alert alert : result) {
|
||||
for (Alert alert : result.first()) {
|
||||
AlertResponse alertResponse = new AlertResponse();
|
||||
alertResponse.setId(alert.getId());
|
||||
alertResponse.setAlertType(alert.getType());
|
||||
@ -85,7 +86,7 @@ public class ListAlertsCmd extends BaseListCmd {
|
||||
alertResponseList.add(alertResponse);
|
||||
}
|
||||
|
||||
response.setResponses(alertResponseList);
|
||||
response.setResponses(alertResponseList, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -27,6 +27,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.AsyncJobResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.async.AsyncJob;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists all pending asynchronous jobs for the account.", responseObject=AsyncJobResponse.class)
|
||||
public class ListAsyncJobsCmd extends BaseListAccountResourcesCmd {
|
||||
@ -58,14 +59,14 @@ public class ListAsyncJobsCmd extends BaseListAccountResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends AsyncJob> result = _mgr.searchForAsyncJobs(this);
|
||||
Pair<List<? extends AsyncJob>, Integer> result = _mgr.searchForAsyncJobs(this);
|
||||
ListResponse<AsyncJobResponse> response = new ListResponse<AsyncJobResponse>();
|
||||
List<AsyncJobResponse> jobResponses = new ArrayList<AsyncJobResponse>();
|
||||
for (AsyncJob job : result) {
|
||||
for (AsyncJob job : result.first()) {
|
||||
jobResponses.add(_responseGenerator.createAsyncJobResponse(job));
|
||||
}
|
||||
|
||||
response.setResponses(jobResponses);
|
||||
response.setResponses(jobResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.DomainResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists all children domains belonging to a specified domain", responseObject=DomainResponse.class)
|
||||
public class ListDomainChildrenCmd extends BaseListCmd {
|
||||
@ -84,16 +85,16 @@ public class ListDomainChildrenCmd extends BaseListCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends Domain> result = _domainService.searchForDomainChildren(this);
|
||||
Pair<List<? extends Domain>, Integer> result = _domainService.searchForDomainChildren(this);
|
||||
ListResponse<DomainResponse> response = new ListResponse<DomainResponse>();
|
||||
List<DomainResponse> domainResponses = new ArrayList<DomainResponse>();
|
||||
for (Domain domain : result) {
|
||||
for (Domain domain : result.first()) {
|
||||
DomainResponse domainResponse = _responseGenerator.createDomainResponse(domain);
|
||||
domainResponse.setObjectName("domain");
|
||||
domainResponses.add(domainResponse);
|
||||
}
|
||||
|
||||
response.setResponses(domainResponses);
|
||||
response.setResponses(domainResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.DomainResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists domains and provides detailed information for listed domains", responseObject=DomainResponse.class)
|
||||
public class ListDomainsCmd extends BaseListCmd {
|
||||
@ -84,16 +85,16 @@ public class ListDomainsCmd extends BaseListCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends Domain> result = _domainService.searchForDomains(this);
|
||||
Pair<List<? extends Domain>, Integer> result = _domainService.searchForDomains(this);
|
||||
ListResponse<DomainResponse> response = new ListResponse<DomainResponse>();
|
||||
List<DomainResponse> domainResponses = new ArrayList<DomainResponse>();
|
||||
for (Domain domain : result) {
|
||||
for (Domain domain : result.first()) {
|
||||
DomainResponse domainResponse = _responseGenerator.createDomainResponse(domain);
|
||||
domainResponse.setObjectName("domain");
|
||||
domainResponses.add(domainResponse);
|
||||
}
|
||||
|
||||
response.setResponses(domainResponses);
|
||||
response.setResponses(domainResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.FirewallResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists all firewall rules for an IP address.", responseObject=FirewallResponse.class)
|
||||
public class ListFirewallRulesCmd extends BaseListTaggedResourcesCmd {
|
||||
@ -69,16 +70,16 @@ public class ListFirewallRulesCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends FirewallRule> result = _firewallService.listFirewallRules(this);
|
||||
Pair<List<? extends FirewallRule>, Integer> result = _firewallService.listFirewallRules(this);
|
||||
ListResponse<FirewallResponse> response = new ListResponse<FirewallResponse>();
|
||||
List<FirewallResponse> fwResponses = new ArrayList<FirewallResponse>();
|
||||
|
||||
for (FirewallRule fwRule : result) {
|
||||
for (FirewallRule fwRule : result.first()) {
|
||||
FirewallResponse ruleData = _responseGenerator.createFirewallResponse(fwRule);
|
||||
ruleData.setObjectName("firewallrule");
|
||||
fwResponses.add(ruleData);
|
||||
}
|
||||
response.setResponses(fwResponses);
|
||||
response.setResponses(fwResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -22,7 +22,6 @@ import java.util.List;
|
||||
import org.apache.log4j.Logger;
|
||||
|
||||
import com.cloud.api.ApiConstants;
|
||||
import com.cloud.api.BaseCmd.CommandType;
|
||||
import com.cloud.api.BaseListProjectAndAccountResourcesCmd;
|
||||
import com.cloud.api.IdentityMapper;
|
||||
import com.cloud.api.Implementation;
|
||||
@ -32,6 +31,7 @@ import com.cloud.api.response.IpForwardingRuleResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.network.rules.StaticNatRule;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="List the ip forwarding rules", responseObject=FirewallRuleResponse.class)
|
||||
public class ListIpForwardingRulesCmd extends BaseListProjectAndAccountResourcesCmd {
|
||||
@ -82,17 +82,18 @@ public class ListIpForwardingRulesCmd extends BaseListProjectAndAccountResources
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends FirewallRule> result = _rulesService.searchStaticNatRules(publicIpAddressId, id, vmId, this.getStartIndex(), this.getPageSizeVal(), this.getAccountName(), this.getDomainId(), this.getProjectId(), this.isRecursive(), this.listAll());
|
||||
Pair<List<? extends FirewallRule>, Integer> result = _rulesService.searchStaticNatRules(publicIpAddressId, id, vmId,
|
||||
this.getStartIndex(), this.getPageSizeVal(), this.getAccountName(), this.getDomainId(), this.getProjectId(), this.isRecursive(), this.listAll());
|
||||
ListResponse<IpForwardingRuleResponse> response = new ListResponse<IpForwardingRuleResponse>();
|
||||
List<IpForwardingRuleResponse> ipForwardingResponses = new ArrayList<IpForwardingRuleResponse>();
|
||||
for (FirewallRule rule : result) {
|
||||
for (FirewallRule rule : result.first()) {
|
||||
StaticNatRule staticNatRule = _rulesService.buildStaticNatRule(rule, false);
|
||||
IpForwardingRuleResponse resp = _responseGenerator.createIpForwardingRuleResponse(staticNatRule);
|
||||
if (resp != null) {
|
||||
ipForwardingResponses.add(resp);
|
||||
}
|
||||
}
|
||||
response.setResponses(ipForwardingResponses);
|
||||
response.setResponses(ipForwardingResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.LoadBalancerResponse;
|
||||
import com.cloud.network.rules.LoadBalancer;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description = "Lists load balancer rules.", responseObject = LoadBalancerResponse.class)
|
||||
public class ListLoadBalancerRulesCmd extends BaseListTaggedResourcesCmd {
|
||||
@ -94,17 +95,17 @@ public class ListLoadBalancerRulesCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
List<? extends LoadBalancer> loadBalancers = _lbService.searchForLoadBalancers(this);
|
||||
Pair<List<? extends LoadBalancer>, Integer> loadBalancers = _lbService.searchForLoadBalancers(this);
|
||||
ListResponse<LoadBalancerResponse> response = new ListResponse<LoadBalancerResponse>();
|
||||
List<LoadBalancerResponse> lbResponses = new ArrayList<LoadBalancerResponse>();
|
||||
if (loadBalancers != null) {
|
||||
for (LoadBalancer loadBalancer : loadBalancers) {
|
||||
for (LoadBalancer loadBalancer : loadBalancers.first()) {
|
||||
LoadBalancerResponse lbResponse = _responseGenerator.createLoadBalancerResponse(loadBalancer);
|
||||
lbResponse.setObjectName("loadbalancerrule");
|
||||
lbResponses.add(lbResponse);
|
||||
}
|
||||
}
|
||||
response.setResponses(lbResponses);
|
||||
response.setResponses(lbResponses, loadBalancers.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -31,6 +31,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.NetworkACLResponse;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists all network ACLs", responseObject=NetworkACLResponse.class)
|
||||
public class ListNetworkACLsCmd extends BaseListTaggedResourcesCmd {
|
||||
@ -79,15 +80,15 @@ public class ListNetworkACLsCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends FirewallRule> result = _networkACLService.listNetworkACLs(this);
|
||||
Pair<List<? extends FirewallRule>,Integer> result = _networkACLService.listNetworkACLs(this);
|
||||
ListResponse<NetworkACLResponse> response = new ListResponse<NetworkACLResponse>();
|
||||
List<NetworkACLResponse> aclResponses = new ArrayList<NetworkACLResponse>();
|
||||
|
||||
for (FirewallRule acl : result) {
|
||||
for (FirewallRule acl : result.first()) {
|
||||
NetworkACLResponse ruleData = _responseGenerator.createNetworkACLResponse(acl);
|
||||
aclResponses.add(ruleData);
|
||||
}
|
||||
response.setResponses(aclResponses);
|
||||
response.setResponses(aclResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.FirewallRuleResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.network.rules.PortForwardingRule;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists all port forwarding rules for an IP address.", responseObject=FirewallRuleResponse.class)
|
||||
public class ListPortForwardingRulesCmd extends BaseListTaggedResourcesCmd {
|
||||
@ -71,16 +72,16 @@ public class ListPortForwardingRulesCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends PortForwardingRule> result = _rulesService.listPortForwardingRules(this);
|
||||
Pair<List<? extends PortForwardingRule>, Integer> result = _rulesService.listPortForwardingRules(this);
|
||||
ListResponse<FirewallRuleResponse> response = new ListResponse<FirewallRuleResponse>();
|
||||
List<FirewallRuleResponse> fwResponses = new ArrayList<FirewallRuleResponse>();
|
||||
|
||||
for (PortForwardingRule fwRule : result) {
|
||||
for (PortForwardingRule fwRule : result.first()) {
|
||||
FirewallRuleResponse ruleData = _responseGenerator.createPortForwardingRuleResponse(fwRule);
|
||||
ruleData.setObjectName("portforwardingrule");
|
||||
fwResponses.add(ruleData);
|
||||
}
|
||||
response.setResponses(fwResponses);
|
||||
response.setResponses(fwResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.PrivateGatewayResponse;
|
||||
import com.cloud.network.vpc.PrivateGateway;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="List private gateways", responseObject=PrivateGatewayResponse.class)
|
||||
public class ListPrivateGatewaysCmd extends BaseListProjectAndAccountResourcesCmd{
|
||||
@ -91,14 +92,14 @@ public class ListPrivateGatewaysCmd extends BaseListProjectAndAccountResourcesCm
|
||||
|
||||
@Override
|
||||
public void execute() {
|
||||
List<PrivateGateway> gateways = _vpcService.listPrivateGateway(this);
|
||||
Pair<List<PrivateGateway>, Integer> gateways = _vpcService.listPrivateGateway(this);
|
||||
ListResponse<PrivateGatewayResponse> response = new ListResponse<PrivateGatewayResponse>();
|
||||
List<PrivateGatewayResponse> projectResponses = new ArrayList<PrivateGatewayResponse>();
|
||||
for (PrivateGateway gateway : gateways) {
|
||||
for (PrivateGateway gateway : gateways.first()) {
|
||||
PrivateGatewayResponse gatewayResponse = _responseGenerator.createPrivateGatewayResponse(gateway);
|
||||
projectResponses.add(gatewayResponse);
|
||||
}
|
||||
response.setResponses(projectResponses);
|
||||
response.setResponses(projectResponses, gateways.second());
|
||||
response.setResponseName(getCommandName());
|
||||
|
||||
this.setResponseObject(response);
|
||||
|
||||
@ -30,6 +30,7 @@ import com.cloud.api.response.IPAddressResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.async.AsyncJob;
|
||||
import com.cloud.network.IpAddress;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
|
||||
@Implementation(description="Lists all public ip addresses", responseObject=IPAddressResponse.class)
|
||||
@ -141,16 +142,16 @@ public class ListPublicIpAddressesCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends IpAddress> result = _mgr.searchForIPAddresses(this);
|
||||
Pair<List<? extends IpAddress>, Integer> result = _mgr.searchForIPAddresses(this);
|
||||
ListResponse<IPAddressResponse> response = new ListResponse<IPAddressResponse>();
|
||||
List<IPAddressResponse> ipAddrResponses = new ArrayList<IPAddressResponse>();
|
||||
for (IpAddress ipAddress : result) {
|
||||
for (IpAddress ipAddress : result.first()) {
|
||||
IPAddressResponse ipResponse = _responseGenerator.createIPAddressResponse(ipAddress);
|
||||
ipResponse.setObjectName("publicipaddress");
|
||||
ipAddrResponses.add(ipResponse);
|
||||
}
|
||||
|
||||
response.setResponses(ipAddrResponses);
|
||||
response.setResponses(ipAddrResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.RemoteAccessVpnResponse;
|
||||
import com.cloud.network.RemoteAccessVpn;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists remote access vpns", responseObject=RemoteAccessVpnResponse.class)
|
||||
public class ListRemoteAccessVpnsCmd extends BaseListProjectAndAccountResourcesCmd {
|
||||
@ -64,15 +65,15 @@ public class ListRemoteAccessVpnsCmd extends BaseListProjectAndAccountResourcesC
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends RemoteAccessVpn> vpns = _ravService.searchForRemoteAccessVpns(this);
|
||||
Pair<List<? extends RemoteAccessVpn>, Integer> vpns = _ravService.searchForRemoteAccessVpns(this);
|
||||
ListResponse<RemoteAccessVpnResponse> response = new ListResponse<RemoteAccessVpnResponse>();
|
||||
List<RemoteAccessVpnResponse> vpnResponses = new ArrayList<RemoteAccessVpnResponse>();
|
||||
if (vpns != null && !vpns.isEmpty()) {
|
||||
for (RemoteAccessVpn vpn : vpns) {
|
||||
if (vpns.first() != null && !vpns.first().isEmpty()) {
|
||||
for (RemoteAccessVpn vpn : vpns.first()) {
|
||||
vpnResponses.add(_responseGenerator.createRemoteAccessVpnResponse(vpn));
|
||||
}
|
||||
}
|
||||
response.setResponses(vpnResponses);
|
||||
response.setResponses(vpnResponses, vpns.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ import com.cloud.api.response.DomainRouterResponse;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.async.AsyncJob;
|
||||
import com.cloud.network.router.VirtualRouter;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="List routers.", responseObject=DomainRouterResponse.class)
|
||||
public class ListRoutersCmd extends BaseListProjectAndAccountResourcesCmd {
|
||||
@ -129,16 +130,16 @@ public class ListRoutersCmd extends BaseListProjectAndAccountResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends VirtualRouter> result = _mgr.searchForRouters(this);
|
||||
Pair<List<? extends VirtualRouter>, Integer> result = _mgr.searchForRouters(this);
|
||||
ListResponse<DomainRouterResponse> response = new ListResponse<DomainRouterResponse>();
|
||||
List<DomainRouterResponse> routerResponses = new ArrayList<DomainRouterResponse>();
|
||||
for (VirtualRouter router : result) {
|
||||
for (VirtualRouter router : result.first()) {
|
||||
DomainRouterResponse routerResponse = _responseGenerator.createDomainRouterResponse(router);
|
||||
routerResponse.setObjectName("router");
|
||||
routerResponses.add(routerResponse);
|
||||
}
|
||||
|
||||
response.setResponses(routerResponses);
|
||||
response.setResponses(routerResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.SnapshotResponse;
|
||||
import com.cloud.async.AsyncJob;
|
||||
import com.cloud.storage.Snapshot;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
|
||||
@Implementation(description="Lists all available snapshots for the account.", responseObject=SnapshotResponse.class)
|
||||
@ -98,15 +99,15 @@ public class ListSnapshotsCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends Snapshot> result = _snapshotService.listSnapshots(this);
|
||||
Pair<List<? extends Snapshot>, Integer> result = _snapshotService.listSnapshots(this);
|
||||
ListResponse<SnapshotResponse> response = new ListResponse<SnapshotResponse>();
|
||||
List<SnapshotResponse> snapshotResponses = new ArrayList<SnapshotResponse>();
|
||||
for (Snapshot snapshot : result) {
|
||||
for (Snapshot snapshot : result.first()) {
|
||||
SnapshotResponse snapshotResponse = _responseGenerator.createSnapshotResponse(snapshot);
|
||||
snapshotResponse.setObjectName("snapshot");
|
||||
snapshotResponses.add(snapshotResponse);
|
||||
}
|
||||
response.setResponses(snapshotResponses);
|
||||
response.setResponses(snapshotResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
|
||||
this.setResponseObject(response);
|
||||
|
||||
@ -26,6 +26,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.StaticRouteResponse;
|
||||
import com.cloud.network.vpc.StaticRoute;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists all static routes", responseObject=StaticRouteResponse.class)
|
||||
public class ListStaticRoutesCmd extends BaseListTaggedResourcesCmd {
|
||||
@ -68,15 +69,15 @@ public class ListStaticRoutesCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends StaticRoute> result = _vpcService.listStaticRoutes(this);
|
||||
Pair<List<? extends StaticRoute>, Integer> result = _vpcService.listStaticRoutes(this);
|
||||
ListResponse<StaticRouteResponse> response = new ListResponse<StaticRouteResponse>();
|
||||
List<StaticRouteResponse> routeResponses = new ArrayList<StaticRouteResponse>();
|
||||
|
||||
for (StaticRoute route : result) {
|
||||
for (StaticRoute route : result.first()) {
|
||||
StaticRouteResponse ruleData = _responseGenerator.createStaticRouteResponse(route);
|
||||
routeResponses.add(ruleData);
|
||||
}
|
||||
response.setResponses(routeResponses);
|
||||
response.setResponses(routeResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -27,6 +27,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.ResourceTagResponse;
|
||||
import com.cloud.server.ResourceTag;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description = "List resource tag(s)", responseObject = ResourceTagResponse.class, since = "Burbank")
|
||||
public class ListTagsCmd extends BaseListProjectAndAccountResourcesCmd{
|
||||
@ -55,14 +56,14 @@ public class ListTagsCmd extends BaseListProjectAndAccountResourcesCmd{
|
||||
@Override
|
||||
public void execute() {
|
||||
|
||||
List<? extends ResourceTag> tags = _taggedResourceService.listTags(this);
|
||||
Pair<List<? extends ResourceTag>, Integer> tags = _taggedResourceService.listTags(this);
|
||||
ListResponse<ResourceTagResponse> response = new ListResponse<ResourceTagResponse>();
|
||||
List<ResourceTagResponse> tagResponses = new ArrayList<ResourceTagResponse>();
|
||||
for (ResourceTag tag : tags) {
|
||||
for (ResourceTag tag : tags.first()) {
|
||||
ResourceTagResponse tagResponse = _responseGenerator.createResourceTagResponse(tag, false);
|
||||
tagResponses.add(tagResponse);
|
||||
}
|
||||
response.setResponses(tagResponses);
|
||||
response.setResponses(tagResponses, tags.second());
|
||||
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.UserResponse;
|
||||
import com.cloud.user.UserAccount;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists user accounts", responseObject=UserResponse.class)
|
||||
public class ListUsersCmd extends BaseListAccountResourcesCmd {
|
||||
@ -85,14 +86,14 @@ public class ListUsersCmd extends BaseListAccountResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends UserAccount> result = _accountService.searchForUsers(this);
|
||||
Pair<List<? extends UserAccount>, Integer> result = _accountService.searchForUsers(this);
|
||||
ListResponse<UserResponse> response = new ListResponse<UserResponse>();
|
||||
List<UserResponse> userResponses = new ArrayList<UserResponse>();
|
||||
for (UserAccount user : result) {
|
||||
for (UserAccount user : result.first()) {
|
||||
UserResponse userResponse = _responseGenerator.createUserResponse(user);
|
||||
userResponses.add(userResponse);
|
||||
}
|
||||
response.setResponses(userResponses);
|
||||
response.setResponses(userResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -33,6 +33,8 @@ import com.cloud.api.response.UserVmResponse;
|
||||
import com.cloud.async.AsyncJob;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.uservm.UserVm;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
|
||||
@Implementation(description="List the virtual machines owned by the account.", responseObject=UserVmResponse.class)
|
||||
public class ListVMsCmd extends BaseListTaggedResourcesCmd {
|
||||
@ -197,17 +199,17 @@ public class ListVMsCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends UserVm> result = _userVmService.searchForUserVMs(this);
|
||||
Pair<List<? extends UserVm>, Integer> result = _userVmService.searchForUserVMs(this);
|
||||
ListResponse<UserVmResponse> response = new ListResponse<UserVmResponse>();
|
||||
EnumSet<VMDetails> details = getDetails();
|
||||
List<UserVmResponse> vmResponses;
|
||||
if (details.contains(VMDetails.all)){ // for all use optimized version
|
||||
vmResponses = _responseGenerator.createUserVmResponse("virtualmachine", result.toArray(new UserVm[result.size()]));
|
||||
vmResponses = _responseGenerator.createUserVmResponse("virtualmachine", result.first().toArray(new UserVm[result.first().size()]));
|
||||
}
|
||||
else {
|
||||
vmResponses = _responseGenerator.createUserVmResponse("virtualmachine", getDetails(), result.toArray(new UserVm[result.size()]));
|
||||
vmResponses = _responseGenerator.createUserVmResponse("virtualmachine", getDetails(), result.first().toArray(new UserVm[result.first().size()]));
|
||||
}
|
||||
response.setResponses(vmResponses);
|
||||
response.setResponses(vmResponses, result.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -30,6 +30,7 @@ import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.VolumeResponse;
|
||||
import com.cloud.async.AsyncJob;
|
||||
import com.cloud.storage.Volume;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
|
||||
@Implementation(description="Lists all volumes.", responseObject=VolumeResponse.class)
|
||||
@ -117,17 +118,17 @@ public class ListVolumesCmd extends BaseListTaggedResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends Volume> volumes = _storageService.searchForVolumes(this);
|
||||
Pair<List<? extends Volume>, Integer> volumes = _storageService.searchForVolumes(this);
|
||||
|
||||
ListResponse<VolumeResponse> response = new ListResponse<VolumeResponse>();
|
||||
List<VolumeResponse> volResponses = new ArrayList<VolumeResponse>();
|
||||
for (Volume volume : volumes) {
|
||||
for (Volume volume : volumes.first()) {
|
||||
VolumeResponse volResponse = _responseGenerator.createVolumeResponse(volume);
|
||||
volResponse.setObjectName("volume");
|
||||
volResponses.add(volResponse);
|
||||
}
|
||||
|
||||
response.setResponses(volResponses);
|
||||
response.setResponses(volResponses, volumes.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.api.Parameter;
|
||||
import com.cloud.api.response.ListResponse;
|
||||
import com.cloud.api.response.VpnUsersResponse;
|
||||
import com.cloud.network.VpnUser;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Implementation(description="Lists vpn users", responseObject=VpnUsersResponse.class)
|
||||
public class ListVpnUsersCmd extends BaseListProjectAndAccountResourcesCmd {
|
||||
@ -69,15 +70,15 @@ public class ListVpnUsersCmd extends BaseListProjectAndAccountResourcesCmd {
|
||||
|
||||
@Override
|
||||
public void execute(){
|
||||
List<? extends VpnUser> vpnUsers = _ravService.searchForVpnUsers(this);
|
||||
Pair<List<? extends VpnUser>, Integer> vpnUsers = _ravService.searchForVpnUsers(this);
|
||||
|
||||
ListResponse<VpnUsersResponse> response = new ListResponse<VpnUsersResponse>();
|
||||
List<VpnUsersResponse> vpnResponses = new ArrayList<VpnUsersResponse>();
|
||||
for (VpnUser vpnUser : vpnUsers) {
|
||||
for (VpnUser vpnUser : vpnUsers.first()) {
|
||||
vpnResponses.add(_responseGenerator.createVpnUserResponse(vpnUser));
|
||||
}
|
||||
|
||||
response.setResponses(vpnResponses);
|
||||
response.setResponses(vpnResponses, vpnUsers.second());
|
||||
response.setResponseName(getCommandName());
|
||||
this.setResponseObject(response);
|
||||
}
|
||||
|
||||
@ -22,6 +22,7 @@ import com.cloud.api.ResponseObject;
|
||||
|
||||
public class ListResponse<T extends ResponseObject> extends BaseResponse {
|
||||
List<T> responses;
|
||||
private transient Integer count;
|
||||
|
||||
public List<T> getResponses() {
|
||||
return responses;
|
||||
@ -30,12 +31,22 @@ public class ListResponse<T extends ResponseObject> extends BaseResponse {
|
||||
public void setResponses(List<T> responses) {
|
||||
this.responses = responses;
|
||||
}
|
||||
|
||||
public void setResponses(List<T> responses, Integer count) {
|
||||
this.responses = responses;
|
||||
this.count = count;
|
||||
}
|
||||
|
||||
|
||||
public Integer getCount() {
|
||||
if (count != null) {
|
||||
return count;
|
||||
}
|
||||
|
||||
if (responses != null) {
|
||||
return responses.size();
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
// under the License.
|
||||
package com.cloud.network.firewall;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.api.commands.ListFirewallRulesCmd;
|
||||
@ -23,11 +24,12 @@ import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface FirewallService {
|
||||
FirewallRule createFirewallRule(FirewallRule rule) throws NetworkRuleConflictException;
|
||||
|
||||
List<? extends FirewallRule> listFirewallRules(ListFirewallRulesCmd cmd);
|
||||
Pair<List<? extends FirewallRule>, Integer> listFirewallRules(ListFirewallRulesCmd cmd);
|
||||
|
||||
/**
|
||||
* Revokes a firewall rule
|
||||
|
||||
@ -16,6 +16,7 @@
|
||||
// under the License.
|
||||
package com.cloud.network.firewall;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.api.commands.ListNetworkACLsCmd;
|
||||
@ -23,6 +24,7 @@ import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.rules.FirewallRule;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface NetworkACLService {
|
||||
FirewallRule getNetworkACL(long ruleId);
|
||||
@ -43,6 +45,6 @@ public interface NetworkACLService {
|
||||
* @param listNetworkACLsCmd
|
||||
* @return
|
||||
*/
|
||||
List<? extends FirewallRule> listNetworkACLs(ListNetworkACLsCmd cmd);
|
||||
Pair<List<? extends FirewallRule>, Integer> listNetworkACLs(ListNetworkACLsCmd cmd);
|
||||
|
||||
}
|
||||
|
||||
@ -30,6 +30,8 @@ import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.rules.LoadBalancer;
|
||||
import com.cloud.network.rules.StickinessPolicy;
|
||||
import com.cloud.uservm.UserVm;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
|
||||
public interface LoadBalancingRulesService {
|
||||
/**
|
||||
@ -90,7 +92,7 @@ public interface LoadBalancingRulesService {
|
||||
* by id, name, public ip, and vm instance id
|
||||
* @return list of load balancers that match the criteria
|
||||
*/
|
||||
List<? extends LoadBalancer> searchForLoadBalancers(ListLoadBalancerRulesCmd cmd);
|
||||
Pair<List<? extends LoadBalancer>, Integer> searchForLoadBalancers(ListLoadBalancerRulesCmd cmd);
|
||||
|
||||
/**
|
||||
* List stickiness policies based on the given criteria
|
||||
@ -105,4 +107,4 @@ public interface LoadBalancingRulesService {
|
||||
|
||||
LoadBalancer findById(long LoadBalancer);
|
||||
|
||||
}
|
||||
}
|
||||
@ -23,9 +23,10 @@ import com.cloud.exception.InsufficientAddressCapacityException;
|
||||
import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface RulesService {
|
||||
List<? extends FirewallRule> searchStaticNatRules(Long ipId, Long id, Long vmId, Long start, Long size, String accountName, Long domainId, Long projectId, boolean isRecursive, boolean listAll);
|
||||
Pair<List<? extends FirewallRule>, Integer> searchStaticNatRules(Long ipId, Long id, Long vmId, Long start, Long size, String accountName, Long domainId, Long projectId, boolean isRecursive, boolean listAll);
|
||||
|
||||
/**
|
||||
* Creates a port forwarding rule between two ip addresses or between
|
||||
@ -60,7 +61,7 @@ public interface RulesService {
|
||||
* the command object holding the criteria for listing port forwarding rules (the ipAddress)
|
||||
* @return list of port forwarding rules on the given address, empty list if no rules exist
|
||||
*/
|
||||
public List<? extends PortForwardingRule> listPortForwardingRules(ListPortForwardingRulesCmd cmd);
|
||||
public Pair<List<? extends PortForwardingRule>, Integer> listPortForwardingRules(ListPortForwardingRulesCmd cmd);
|
||||
|
||||
boolean applyPortForwardingRules(long ipAdddressId, Account caller) throws ResourceUnavailableException;
|
||||
|
||||
|
||||
@ -18,13 +18,13 @@ package com.cloud.network.security;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import com.cloud.api.commands.AuthorizeSecurityGroupIngressCmd;
|
||||
import com.cloud.api.commands.AuthorizeSecurityGroupEgressCmd;
|
||||
import com.cloud.api.commands.AuthorizeSecurityGroupIngressCmd;
|
||||
import com.cloud.api.commands.CreateSecurityGroupCmd;
|
||||
import com.cloud.api.commands.DeleteSecurityGroupCmd;
|
||||
import com.cloud.api.commands.ListSecurityGroupsCmd;
|
||||
import com.cloud.api.commands.RevokeSecurityGroupIngressCmd;
|
||||
import com.cloud.api.commands.RevokeSecurityGroupEgressCmd;
|
||||
import com.cloud.api.commands.RevokeSecurityGroupIngressCmd;
|
||||
import com.cloud.exception.InvalidParameterValueException;
|
||||
import com.cloud.exception.PermissionDeniedException;
|
||||
import com.cloud.exception.ResourceInUseException;
|
||||
|
||||
@ -34,6 +34,7 @@ import com.cloud.network.Network.Provider;
|
||||
import com.cloud.network.Network.Service;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.User;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface VpcService {
|
||||
|
||||
@ -190,7 +191,7 @@ public interface VpcService {
|
||||
* @param listPrivateGatewaysCmd
|
||||
* @return
|
||||
*/
|
||||
public List<PrivateGateway> listPrivateGateway(ListPrivateGatewaysCmd listPrivateGatewaysCmd);
|
||||
public Pair<List<PrivateGateway>, Integer> listPrivateGateway(ListPrivateGatewaysCmd listPrivateGatewaysCmd);
|
||||
|
||||
/**
|
||||
* @param routeId
|
||||
@ -223,7 +224,7 @@ public interface VpcService {
|
||||
* @param listStaticRoutesCmd
|
||||
* @return
|
||||
*/
|
||||
public List<? extends StaticRoute> listStaticRoutes(ListStaticRoutesCmd cmd);
|
||||
public Pair<List<? extends StaticRoute>, Integer> listStaticRoutes(ListStaticRoutesCmd cmd);
|
||||
|
||||
/**
|
||||
* @param id
|
||||
|
||||
@ -24,6 +24,7 @@ import com.cloud.exception.NetworkRuleConflictException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.network.RemoteAccessVpn;
|
||||
import com.cloud.network.VpnUser;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface RemoteAccessVpnService {
|
||||
|
||||
@ -37,8 +38,8 @@ public interface RemoteAccessVpnService {
|
||||
List<? extends VpnUser> listVpnUsers(long vpnOwnerId, String userName);
|
||||
boolean applyVpnUsers(long vpnOwnerId, String userName);
|
||||
|
||||
List<? extends RemoteAccessVpn> searchForRemoteAccessVpns(ListRemoteAccessVpnsCmd cmd);
|
||||
List<? extends VpnUser> searchForVpnUsers(ListVpnUsersCmd cmd);
|
||||
Pair<List<? extends RemoteAccessVpn>, Integer> searchForRemoteAccessVpns(ListRemoteAccessVpnsCmd cmd);
|
||||
Pair<List<? extends VpnUser>, Integer> searchForVpnUsers(ListVpnUsersCmd cmd);
|
||||
|
||||
List<? extends RemoteAccessVpn> listRemoteAccessVpns(long networkId);
|
||||
|
||||
|
||||
@ -184,7 +184,7 @@ public interface ManagementService {
|
||||
* @param cmd
|
||||
* @return List of DomainRouters.
|
||||
*/
|
||||
List<? extends VirtualRouter> searchForRouters(ListRoutersCmd cmd);
|
||||
Pair<List<? extends VirtualRouter>, Integer> searchForRouters(ListRoutersCmd cmd);
|
||||
|
||||
/**
|
||||
* Obtains a list of IP Addresses by the specified search criteria. Can search by: "userId", "dataCenterId",
|
||||
@ -194,7 +194,7 @@ public interface ManagementService {
|
||||
* the command that wraps the search criteria
|
||||
* @return List of IPAddresses
|
||||
*/
|
||||
List<? extends IpAddress> searchForIPAddresses(ListPublicIpAddressesCmd cmd);
|
||||
Pair<List<? extends IpAddress>, Integer> searchForIPAddresses(ListPublicIpAddressesCmd cmd);
|
||||
|
||||
/**
|
||||
* Obtains a list of all guest OS.
|
||||
@ -235,7 +235,7 @@ public interface ManagementService {
|
||||
* @param c
|
||||
* @return List of Alerts
|
||||
*/
|
||||
List<? extends Alert> searchForAlerts(ListAlertsCmd cmd);
|
||||
Pair<List<? extends Alert>, Integer> searchForAlerts(ListAlertsCmd cmd);
|
||||
|
||||
/**
|
||||
* list all the capacity rows in capacity operations table
|
||||
@ -363,7 +363,7 @@ public interface ManagementService {
|
||||
* the command specifying the account and start date parameters
|
||||
* @return the list of async jobs that match the criteria
|
||||
*/
|
||||
List<? extends AsyncJob> searchForAsyncJobs(ListAsyncJobsCmd cmd);
|
||||
Pair<List<? extends AsyncJob>, Integer> searchForAsyncJobs(ListAsyncJobsCmd cmd);
|
||||
|
||||
/**
|
||||
* Generates a random password that will be used (initially) by newly created and started virtual machines
|
||||
|
||||
@ -21,6 +21,7 @@ import java.util.Map;
|
||||
|
||||
import com.cloud.api.commands.ListTagsCmd;
|
||||
import com.cloud.server.ResourceTag.TaggedResourceType;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface TaggedResourceService {
|
||||
|
||||
@ -46,7 +47,7 @@ public interface TaggedResourceService {
|
||||
* @param listTagsCmd
|
||||
* @return
|
||||
*/
|
||||
List<? extends ResourceTag> listTags(ListTagsCmd listTagsCmd);
|
||||
Pair<List<? extends ResourceTag>, Integer> listTags(ListTagsCmd listTagsCmd);
|
||||
|
||||
/**
|
||||
* @param resourceIds
|
||||
|
||||
@ -32,6 +32,7 @@ import com.cloud.exception.PermissionDeniedException;
|
||||
import com.cloud.exception.ResourceAllocationException;
|
||||
import com.cloud.exception.ResourceInUseException;
|
||||
import com.cloud.exception.ResourceUnavailableException;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface StorageService{
|
||||
/**
|
||||
@ -114,7 +115,7 @@ public interface StorageService{
|
||||
|
||||
Volume migrateVolume(Long volumeId, Long storagePoolId) throws ConcurrentOperationException;
|
||||
|
||||
List<? extends Volume> searchForVolumes(ListVolumesCmd cmd);
|
||||
Pair<List<? extends Volume>, Integer> searchForVolumes(ListVolumesCmd cmd);
|
||||
|
||||
/**
|
||||
* Uploads the volume to secondary storage
|
||||
|
||||
@ -28,6 +28,7 @@ import com.cloud.exception.ResourceAllocationException;
|
||||
import com.cloud.storage.Snapshot;
|
||||
import com.cloud.storage.Volume;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface SnapshotService {
|
||||
|
||||
@ -39,7 +40,7 @@ public interface SnapshotService {
|
||||
* @return list of snapshots
|
||||
* @throws PermissionDeniedException
|
||||
*/
|
||||
List<? extends Snapshot> listSnapshots(ListSnapshotsCmd cmd);
|
||||
Pair<List<? extends Snapshot>, Integer> listSnapshots(ListSnapshotsCmd cmd);
|
||||
|
||||
/**
|
||||
* Delete specified snapshot from the specified. If no other policies are assigned it calls destroy snapshot. This
|
||||
|
||||
@ -191,9 +191,9 @@ public interface AccountService {
|
||||
|
||||
public String[] createApiKeyAndSecretKey(RegisterCmd cmd);
|
||||
|
||||
List<? extends Account> searchForAccounts(ListAccountsCmd cmd);
|
||||
Pair<List<? extends Account>, Integer> searchForAccounts(ListAccountsCmd cmd);
|
||||
|
||||
List<? extends UserAccount> searchForUsers(ListUsersCmd cmd)
|
||||
Pair<List<? extends UserAccount>, Integer> searchForUsers(ListUsersCmd cmd)
|
||||
throws PermissionDeniedException;
|
||||
|
||||
UserAccount getUserByApiKey(String apiKey);
|
||||
|
||||
@ -22,6 +22,7 @@ import com.cloud.api.commands.ListDomainChildrenCmd;
|
||||
import com.cloud.api.commands.ListDomainsCmd;
|
||||
import com.cloud.domain.Domain;
|
||||
import com.cloud.exception.PermissionDeniedException;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
public interface DomainService {
|
||||
|
||||
@ -39,10 +40,10 @@ public interface DomainService {
|
||||
|
||||
boolean deleteDomain(long domainId, Boolean cleanup);
|
||||
|
||||
List<? extends Domain> searchForDomains(ListDomainsCmd cmd)
|
||||
Pair<List<? extends Domain>, Integer> searchForDomains(ListDomainsCmd cmd)
|
||||
throws PermissionDeniedException;
|
||||
|
||||
List<? extends Domain> searchForDomainChildren(ListDomainChildrenCmd cmd)
|
||||
Pair<List<? extends Domain>, Integer> searchForDomainChildren(ListDomainChildrenCmd cmd)
|
||||
throws PermissionDeniedException;
|
||||
|
||||
}
|
||||
|
||||
@ -53,6 +53,7 @@ import com.cloud.storage.Volume;
|
||||
import com.cloud.template.VirtualMachineTemplate;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.uservm.UserVm;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.exception.ExecutionException;
|
||||
|
||||
public interface UserVmService {
|
||||
@ -378,7 +379,7 @@ public interface UserVmService {
|
||||
* the API command that wraps the search criteria
|
||||
* @return List of UserVMs.
|
||||
*/
|
||||
List<? extends UserVm> searchForUserVMs(ListVMsCmd cmd);
|
||||
Pair<List<? extends UserVm>, Integer> searchForUserVMs(ListVMsCmd cmd);
|
||||
|
||||
HypervisorType getHypervisorTypeOfUserVM(long vmid);
|
||||
|
||||
|
||||
@ -322,7 +322,8 @@ public class ApiDBUtils {
|
||||
}
|
||||
|
||||
public static List<UserVmVO> searchForUserVMs(Criteria c, List<Long> permittedAccounts) {
|
||||
return _userVmMgr.searchForUserVMs(c, _accountDao.findById(Account.ACCOUNT_ID_SYSTEM), null, false, permittedAccounts, false, null, null);
|
||||
return _userVmMgr.searchForUserVMs(c, _accountDao.findById(Account.ACCOUNT_ID_SYSTEM),
|
||||
null, false, permittedAccounts, false, null, null).first();
|
||||
}
|
||||
|
||||
public static List<? extends StoragePoolVO> searchForStoragePools(Criteria c) {
|
||||
|
||||
@ -80,9 +80,9 @@ public class ApiResponseSerializer {
|
||||
jsonStr = unescape(jsonStr);
|
||||
|
||||
if (count != null && count != 0) {
|
||||
sb.append("{ \"" + ApiConstants.COUNT + "\":" + ((ListResponse) result).getCount() + " ,\"" + responses.get(0).getObjectName() + "\" : [ " + jsonStr);
|
||||
sb.append("{ \"" + ApiConstants.COUNT + "\":" + count + " ,\"" + responses.get(0).getObjectName() + "\" : [ " + jsonStr);
|
||||
}
|
||||
for (int i = 1; i < count; i++) {
|
||||
for (int i = 1; i < ((ListResponse) result).getResponses().size(); i++) {
|
||||
jsonStr = gson.toJson(responses.get(i));
|
||||
jsonStr = unescape(jsonStr);
|
||||
sb.append(", " + jsonStr);
|
||||
|
||||
@ -66,6 +66,8 @@ import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountManager;
|
||||
import com.cloud.user.DomainManager;
|
||||
import com.cloud.user.UserContext;
|
||||
import com.cloud.utils.IdentityProxy;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.Ternary;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.component.Manager;
|
||||
@ -206,7 +208,7 @@ public class FirewallManagerImpl implements FirewallService, FirewallManager, Ma
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends FirewallRule> listFirewallRules(ListFirewallRulesCmd cmd) {
|
||||
public Pair<List<? extends FirewallRule>, Integer> listFirewallRules(ListFirewallRulesCmd cmd) {
|
||||
Long ipId = cmd.getIpAddressId();
|
||||
Long id = cmd.getId();
|
||||
Map<String, String> tags = cmd.getTags();
|
||||
@ -272,7 +274,8 @@ public class FirewallManagerImpl implements FirewallService, FirewallManager, Ma
|
||||
|
||||
sc.setParameters("purpose", Purpose.Firewall);
|
||||
|
||||
return _firewallDao.search(sc, filter);
|
||||
Pair<List<FirewallRuleVO>, Integer> result = _firewallDao.searchAndCount(sc, filter);
|
||||
return new Pair<List<? extends FirewallRule>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -95,6 +95,8 @@ import com.cloud.user.DomainService;
|
||||
import com.cloud.user.UserContext;
|
||||
import com.cloud.user.dao.AccountDao;
|
||||
import com.cloud.uservm.UserVm;
|
||||
import com.cloud.utils.IdentityProxy;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.Ternary;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.component.Manager;
|
||||
@ -1237,7 +1239,7 @@ public class LoadBalancingRulesManagerImpl<Type> implements LoadBalancingRulesMa
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LoadBalancerVO> searchForLoadBalancers(ListLoadBalancerRulesCmd cmd) {
|
||||
public Pair<List<? extends LoadBalancer>, Integer> searchForLoadBalancers(ListLoadBalancerRulesCmd cmd) {
|
||||
Long ipId = cmd.getPublicIpId();
|
||||
Long zoneId = cmd.getZoneId();
|
||||
Long id = cmd.getId();
|
||||
@ -1328,7 +1330,8 @@ public class LoadBalancingRulesManagerImpl<Type> implements LoadBalancingRulesMa
|
||||
}
|
||||
}
|
||||
|
||||
return _lbDao.search(sc, searchFilter);
|
||||
Pair<List<LoadBalancerVO>, Integer> result = _lbDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends LoadBalancer>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -61,6 +61,8 @@ import com.cloud.user.AccountManager;
|
||||
import com.cloud.user.DomainManager;
|
||||
import com.cloud.user.UserContext;
|
||||
import com.cloud.uservm.UserVm;
|
||||
import com.cloud.utils.IdentityProxy;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.Ternary;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.component.Manager;
|
||||
@ -686,7 +688,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends PortForwardingRule> listPortForwardingRules(ListPortForwardingRulesCmd cmd) {
|
||||
public Pair<List<? extends PortForwardingRule>, Integer> listPortForwardingRules(ListPortForwardingRulesCmd cmd) {
|
||||
Long ipId = cmd.getIpAddressId();
|
||||
Long id = cmd.getId();
|
||||
Map<String, String> tags = cmd.getTags();
|
||||
@ -752,7 +754,8 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
|
||||
|
||||
sc.setParameters("purpose", Purpose.PortForwarding);
|
||||
|
||||
return _portForwardingDao.search(sc, filter);
|
||||
Pair<List<PortForwardingRuleVO>, Integer> result = _portForwardingDao.searchAndCount(sc, filter);
|
||||
return new Pair<List<? extends PortForwardingRule>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -902,7 +905,7 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends FirewallRule> searchStaticNatRules(Long ipId, Long id, Long vmId, Long start, Long size, String accountName, Long domainId, Long projectId, boolean isRecursive, boolean listAll) {
|
||||
public Pair<List<? extends FirewallRule>, Integer> searchStaticNatRules(Long ipId, Long id, Long vmId, Long start, Long size, String accountName, Long domainId, Long projectId, boolean isRecursive, boolean listAll) {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||
|
||||
@ -950,7 +953,8 @@ public class RulesManagerImpl implements RulesManager, RulesService, Manager {
|
||||
sc.setJoinParameters("ipSearch", "associatedWithVmId", vmId);
|
||||
}
|
||||
|
||||
return _firewallDao.search(sc, filter);
|
||||
Pair<List<FirewallRuleVO>, Integer> result = _firewallDao.searchAndCount(sc, filter);
|
||||
return new Pair<List<? extends FirewallRule>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -51,6 +51,8 @@ import com.cloud.tags.dao.ResourceTagDao;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.AccountManager;
|
||||
import com.cloud.user.UserContext;
|
||||
import com.cloud.utils.IdentityProxy;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.Ternary;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.component.Manager;
|
||||
@ -346,7 +348,7 @@ public class NetworkACLManagerImpl implements Manager,NetworkACLManager{
|
||||
|
||||
|
||||
@Override
|
||||
public List<? extends FirewallRule> listNetworkACLs(ListNetworkACLsCmd cmd) {
|
||||
public Pair<List<? extends FirewallRule>,Integer> listNetworkACLs(ListNetworkACLsCmd cmd) {
|
||||
Long networkId = cmd.getNetworkId();
|
||||
Long id = cmd.getId();
|
||||
String trafficType = cmd.getTrafficType();
|
||||
@ -411,7 +413,8 @@ public class NetworkACLManagerImpl implements Manager,NetworkACLManager{
|
||||
|
||||
sc.setParameters("purpose", Purpose.NetworkACL);
|
||||
|
||||
return _firewallDao.search(sc, filter);
|
||||
Pair<List<FirewallRuleVO>, Integer> result = _firewallDao.searchAndCount(sc, filter);
|
||||
return new Pair<List<? extends FirewallRule>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -95,6 +95,7 @@ import com.cloud.user.ResourceLimitService;
|
||||
import com.cloud.user.User;
|
||||
import com.cloud.user.UserContext;
|
||||
import com.cloud.utils.NumbersUtil;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.Ternary;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
import com.cloud.utils.component.Inject;
|
||||
@ -1387,7 +1388,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<PrivateGateway> listPrivateGateway(ListPrivateGatewaysCmd cmd) {
|
||||
public Pair<List<PrivateGateway>, Integer> listPrivateGateway(ListPrivateGatewaysCmd cmd) {
|
||||
String ipAddress = cmd.getIpAddress();
|
||||
String vlan = cmd.getVlan();
|
||||
Long vpcId = cmd.getVpcId();
|
||||
@ -1441,14 +1442,14 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
||||
if (vlan != null) {
|
||||
sc.setJoinParameters("networkSearch", "vlan", BroadcastDomainType.Vlan.toUri(vlan));
|
||||
}
|
||||
|
||||
List<VpcGatewayVO> vos = _vpcGatewayDao.search(sc, searchFilter);
|
||||
List<PrivateGateway> privateGtws = new ArrayList<PrivateGateway>(vos.size());
|
||||
for (VpcGateway vo : vos) {
|
||||
|
||||
Pair<List<VpcGatewayVO>, Integer> vos = _vpcGatewayDao.searchAndCount(sc, searchFilter);
|
||||
List<PrivateGateway> privateGtws = new ArrayList<PrivateGateway>(vos.first().size());
|
||||
for (VpcGateway vo : vos.first()) {
|
||||
privateGtws.add(getPrivateGatewayProfile(vo));
|
||||
}
|
||||
|
||||
return privateGtws;
|
||||
|
||||
return new Pair<List<PrivateGateway>, Integer>(privateGtws, vos.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -1608,7 +1609,7 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends StaticRoute> listStaticRoutes(ListStaticRoutesCmd cmd) {
|
||||
public Pair<List<? extends StaticRoute>, Integer> listStaticRoutes(ListStaticRoutesCmd cmd) {
|
||||
Long id = cmd.getId();
|
||||
Long gatewayId = cmd.getGatewayId();
|
||||
Long vpcId = cmd.getVpcId();
|
||||
@ -1673,10 +1674,11 @@ public class VpcManagerImpl implements VpcManager, Manager{
|
||||
count++;
|
||||
}
|
||||
}
|
||||
|
||||
return _staticRouteDao.search(sc, searchFilter);
|
||||
|
||||
Pair<List<StaticRouteVO>, Integer> result = _staticRouteDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends StaticRoute>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
|
||||
protected void detectRoutesConflict(StaticRoute newRoute) throws NetworkRuleConflictException {
|
||||
List<? extends StaticRoute> routes = _staticRouteDao.listByGatewayIdAndNotRevoked(newRoute.getVpcGatewayId());
|
||||
assert (routes.size() >= 1) : "For static routes, we now always first persist the route and then check for " +
|
||||
|
||||
@ -497,10 +497,9 @@ public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manag
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VpnUserVO> searchForVpnUsers(ListVpnUsersCmd cmd) {
|
||||
public Pair<List<? extends VpnUser>, Integer> searchForVpnUsers(ListVpnUsersCmd cmd) {
|
||||
String username = cmd.getUsername();
|
||||
Long id = cmd.getId();
|
||||
|
||||
Account caller = UserContext.current().getCaller();
|
||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||
|
||||
@ -532,11 +531,12 @@ public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manag
|
||||
sc.setParameters("username", username);
|
||||
}
|
||||
|
||||
return _vpnUsersDao.search(sc, searchFilter);
|
||||
Pair<List<VpnUserVO>, Integer> result = _vpnUsersDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends VpnUser>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<RemoteAccessVpnVO> searchForRemoteAccessVpns(ListRemoteAccessVpnsCmd cmd) {
|
||||
public Pair<List<? extends RemoteAccessVpn>, Integer> searchForRemoteAccessVpns(ListRemoteAccessVpnsCmd cmd) {
|
||||
// do some parameter validation
|
||||
Account caller = UserContext.current().getCaller();
|
||||
Long ipAddressId = cmd.getPublicIpId();
|
||||
@ -579,7 +579,8 @@ public class RemoteAccessVpnManagerImpl implements RemoteAccessVpnService, Manag
|
||||
sc.setParameters("serverAddressId", ipAddressId);
|
||||
}
|
||||
|
||||
return _remoteAccessVpnDao.search(sc, filter);
|
||||
Pair<List<RemoteAccessVpnVO>, Integer> result = _remoteAccessVpnDao.searchAndCount(sc, filter);
|
||||
return new Pair<List<? extends RemoteAccessVpn>, Integer> (result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -98,6 +98,7 @@ import com.cloud.api.commands.UpdateVMGroupCmd;
|
||||
import com.cloud.api.commands.UpgradeSystemVMCmd;
|
||||
import com.cloud.api.commands.UploadCustomCertificateCmd;
|
||||
import com.cloud.api.response.ExtractResponse;
|
||||
import com.cloud.async.AsyncJob;
|
||||
import com.cloud.async.AsyncJobExecutor;
|
||||
import com.cloud.async.AsyncJobManager;
|
||||
import com.cloud.async.AsyncJobResult;
|
||||
@ -159,11 +160,13 @@ import com.cloud.hypervisor.dao.HypervisorCapabilitiesDao;
|
||||
import com.cloud.info.ConsoleProxyInfo;
|
||||
import com.cloud.keystore.KeystoreManager;
|
||||
import com.cloud.network.IPAddressVO;
|
||||
import com.cloud.network.IpAddress;
|
||||
import com.cloud.network.LoadBalancerVO;
|
||||
import com.cloud.network.NetworkVO;
|
||||
import com.cloud.network.dao.IPAddressDao;
|
||||
import com.cloud.network.dao.LoadBalancerDao;
|
||||
import com.cloud.network.dao.NetworkDao;
|
||||
import com.cloud.network.router.VirtualRouter;
|
||||
import com.cloud.org.Cluster;
|
||||
import com.cloud.org.Grouping.AllocationState;
|
||||
import com.cloud.projects.Project;
|
||||
@ -1612,7 +1615,7 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DomainRouterVO> searchForRouters(ListRoutersCmd cmd) {
|
||||
public Pair<List<? extends VirtualRouter>, Integer> searchForRouters(ListRoutersCmd cmd) {
|
||||
Long id = cmd.getId();
|
||||
String name = cmd.getRouterName();
|
||||
String state = cmd.getState();
|
||||
@ -1707,11 +1710,12 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
sc.setParameters("vpcId", vpcId);
|
||||
}
|
||||
|
||||
return _routerDao.search(sc, searchFilter);
|
||||
Pair<List<DomainRouterVO>, Integer> result = _routerDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends VirtualRouter>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<IPAddressVO> searchForIPAddresses(ListPublicIpAddressesCmd cmd) {
|
||||
public Pair<List<? extends IpAddress>, Integer> searchForIPAddresses(ListPublicIpAddressesCmd cmd) {
|
||||
Object keyword = cmd.getKeyword();
|
||||
Long physicalNetworkId = cmd.getPhysicalNetworkId();
|
||||
Long associatedNetworkId = cmd.getAssociatedNetworkId();
|
||||
@ -1858,7 +1862,8 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
sc.setParameters("associatedNetworkIdEq", associatedNetworkId);
|
||||
}
|
||||
|
||||
return _publicIpAddressDao.search(sc, searchFilter);
|
||||
Pair<List<IPAddressVO>, Integer> result = _publicIpAddressDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends IpAddress>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -2076,7 +2081,7 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Alert> searchForAlerts(ListAlertsCmd cmd) {
|
||||
public Pair<List<? extends Alert>, Integer> searchForAlerts(ListAlertsCmd cmd) {
|
||||
Filter searchFilter = new Filter(AlertVO.class, "lastSent", false, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||
SearchCriteria<AlertVO> sc = _alertDao.createSearchCriteria();
|
||||
|
||||
@ -2103,7 +2108,8 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
sc.addAnd("type", SearchCriteria.Op.EQ, type);
|
||||
}
|
||||
|
||||
return _alertDao.search(sc, searchFilter);
|
||||
Pair<List<AlertVO>, Integer> result =_alertDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends Alert>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -2539,7 +2545,7 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AsyncJobVO> searchForAsyncJobs(ListAsyncJobsCmd cmd) {
|
||||
public Pair<List<? extends AsyncJob>, Integer> searchForAsyncJobs(ListAsyncJobsCmd cmd) {
|
||||
|
||||
Account caller = UserContext.current().getCaller();
|
||||
|
||||
@ -2609,7 +2615,8 @@ public class ManagementServerImpl implements ManagementServer {
|
||||
sc.addAnd("created", SearchCriteria.Op.GTEQ, startDate);
|
||||
}
|
||||
|
||||
return _jobDao.search(sc, searchFilter);
|
||||
Pair<List<AsyncJobVO>, Integer> result = _jobDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends AsyncJob>, Integer> (result.first(), result.second());
|
||||
}
|
||||
|
||||
@ActionEvent(eventType = EventTypes.EVENT_SSVM_START, eventDescription = "starting secondary storage Vm", async = true)
|
||||
|
||||
@ -3825,7 +3825,7 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<VolumeVO> searchForVolumes(ListVolumesCmd cmd) {
|
||||
public Pair<List<? extends Volume>, Integer> searchForVolumes(ListVolumesCmd cmd) {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||
|
||||
@ -3937,8 +3937,10 @@ public class StorageManagerImpl implements StorageManager, Manager, ClusterManag
|
||||
|
||||
// Only return volumes that are not destroyed
|
||||
sc.setParameters("state", Volume.State.Destroy);
|
||||
|
||||
Pair<List<VolumeVO>, Integer> volumes = _volumeDao.searchAndCount(sc, searchFilter);
|
||||
|
||||
return _volumeDao.search(sc, searchFilter);
|
||||
return new Pair<List<? extends Volume>, Integer>(volumes.first(), volumes.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -853,7 +853,7 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<SnapshotVO> listSnapshots(ListSnapshotsCmd cmd) {
|
||||
public Pair<List<? extends Snapshot>, Integer> listSnapshots(ListSnapshotsCmd cmd) {
|
||||
Long volumeId = cmd.getVolumeId();
|
||||
String name = cmd.getSnapshotName();
|
||||
Long id = cmd.getId();
|
||||
@ -954,7 +954,8 @@ public class SnapshotManagerImpl implements SnapshotManager, SnapshotService, Ma
|
||||
sc.setParameters("snapshotTypeNEQ", Snapshot.Type.TEMPLATE.ordinal());
|
||||
}
|
||||
|
||||
return _snapshotDao.search(sc, searchFilter);
|
||||
Pair<List<SnapshotVO>, Integer> result = _snapshotDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends Snapshot>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
|
||||
|
||||
@ -322,7 +322,7 @@ public class TaggedResourceManagerImpl implements TaggedResourceService, Manager
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends ResourceTag> listTags(ListTagsCmd cmd) {
|
||||
public Pair<List<? extends ResourceTag>, Integer> listTags(ListTagsCmd cmd) {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||
String key = cmd.getKey();
|
||||
@ -334,54 +334,56 @@ public class TaggedResourceManagerImpl implements TaggedResourceService, Manager
|
||||
|
||||
Ternary<Long, Boolean, ListProjectResourcesCriteria> domainIdRecursiveListProject =
|
||||
new Ternary<Long, Boolean, ListProjectResourcesCriteria>(cmd.getDomainId(), cmd.isRecursive(), null);
|
||||
_accountMgr.buildACLSearchParameters(caller, null, cmd.getAccountName(),
|
||||
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, listAll, false);
|
||||
Long domainId = domainIdRecursiveListProject.first();
|
||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||
Filter searchFilter = new Filter(ResourceTagVO.class, "resourceType", false, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||
|
||||
SearchBuilder<ResourceTagVO> sb = _resourceTagDao.createSearchBuilder();
|
||||
_accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||
|
||||
sb.and("key", sb.entity().getKey(), SearchCriteria.Op.EQ);
|
||||
sb.and("value", sb.entity().getValue(), SearchCriteria.Op.EQ);
|
||||
|
||||
if (resourceId != null) {
|
||||
sb.and().op("resourceId", sb.entity().getResourceId(), SearchCriteria.Op.EQ);
|
||||
sb.or("resourceUuid", sb.entity().getResourceUuid(), SearchCriteria.Op.EQ);
|
||||
sb.cp();
|
||||
}
|
||||
|
||||
sb.and("resourceType", sb.entity().getResourceType(), SearchCriteria.Op.EQ);
|
||||
sb.and("customer", sb.entity().getCustomer(), SearchCriteria.Op.EQ);
|
||||
|
||||
// now set the SC criteria...
|
||||
SearchCriteria<ResourceTagVO> sc = sb.create();
|
||||
_accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||
|
||||
if (key != null) {
|
||||
sc.setParameters("key", key);
|
||||
}
|
||||
|
||||
if (value != null) {
|
||||
sc.setParameters("value", value);
|
||||
}
|
||||
|
||||
if (resourceId != null) {
|
||||
sc.setParameters("resourceId", resourceId);
|
||||
sc.setParameters("resourceUuid", resourceId);
|
||||
}
|
||||
|
||||
if (resourceType != null) {
|
||||
sc.setParameters("resourceType", resourceType);
|
||||
}
|
||||
|
||||
if (customerName != null) {
|
||||
sc.setParameters("customer", customerName);
|
||||
}
|
||||
|
||||
return _resourceTagDao.search(sc, searchFilter);
|
||||
_accountMgr.buildACLSearchParameters(caller, null, cmd.getAccountName(),
|
||||
cmd.getProjectId(), permittedAccounts, domainIdRecursiveListProject, listAll, false);
|
||||
Long domainId = domainIdRecursiveListProject.first();
|
||||
Boolean isRecursive = domainIdRecursiveListProject.second();
|
||||
ListProjectResourcesCriteria listProjectResourcesCriteria = domainIdRecursiveListProject.third();
|
||||
Filter searchFilter = new Filter(ResourceTagVO.class, "resourceType", false, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||
|
||||
SearchBuilder<ResourceTagVO> sb = _resourceTagDao.createSearchBuilder();
|
||||
_accountMgr.buildACLSearchBuilder(sb, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||
|
||||
sb.and("key", sb.entity().getKey(), SearchCriteria.Op.EQ);
|
||||
sb.and("value", sb.entity().getValue(), SearchCriteria.Op.EQ);
|
||||
|
||||
if (resourceId != null) {
|
||||
sb.and().op("resourceId", sb.entity().getResourceId(), SearchCriteria.Op.EQ);
|
||||
sb.or("resourceUuid", sb.entity().getResourceUuid(), SearchCriteria.Op.EQ);
|
||||
sb.cp();
|
||||
}
|
||||
|
||||
sb.and("resourceType", sb.entity().getResourceType(), SearchCriteria.Op.EQ);
|
||||
sb.and("customer", sb.entity().getCustomer(), SearchCriteria.Op.EQ);
|
||||
|
||||
// now set the SC criteria...
|
||||
SearchCriteria<ResourceTagVO> sc = sb.create();
|
||||
_accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
|
||||
|
||||
if (key != null) {
|
||||
sc.setParameters("key", key);
|
||||
}
|
||||
|
||||
if (value != null) {
|
||||
sc.setParameters("value", value);
|
||||
}
|
||||
|
||||
if (resourceId != null) {
|
||||
sc.setParameters("resourceId", resourceId);
|
||||
sc.setParameters("resourceUuid", resourceId);
|
||||
}
|
||||
|
||||
if (resourceType != null) {
|
||||
sc.setParameters("resourceType", resourceType);
|
||||
}
|
||||
|
||||
if (customerName != null) {
|
||||
sc.setParameters("customer", customerName);
|
||||
}
|
||||
|
||||
Pair<List<ResourceTagVO>, Integer> result = _resourceTagDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends ResourceTag>, Integer> (result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -1980,7 +1980,7 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<AccountVO> searchForAccounts(ListAccountsCmd cmd) {
|
||||
public Pair<List<? extends Account>, Integer> searchForAccounts(ListAccountsCmd cmd) {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
Long domainId = cmd.getDomainId();
|
||||
Long accountId = cmd.getId();
|
||||
@ -2095,11 +2095,12 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
|
||||
}
|
||||
}
|
||||
|
||||
return _accountDao.search(sc, searchFilter);
|
||||
Pair<List<AccountVO>, Integer> result = _accountDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends Account>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserAccountVO> searchForUsers(ListUsersCmd cmd) throws PermissionDeniedException {
|
||||
public Pair<List<? extends UserAccount>, Integer> searchForUsers(ListUsersCmd cmd) throws PermissionDeniedException {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
|
||||
Long domainId = cmd.getDomainId();
|
||||
@ -2129,7 +2130,7 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
|
||||
if (id != null && id == 1) {
|
||||
// system user should NOT be searchable
|
||||
List<UserAccountVO> emptyList = new ArrayList<UserAccountVO>();
|
||||
return emptyList;
|
||||
return new Pair<List<? extends UserAccount>, Integer>(emptyList, 0);
|
||||
} else if (id != null) {
|
||||
sb.and("id", sb.entity().getId(), SearchCriteria.Op.EQ);
|
||||
} else {
|
||||
@ -2192,7 +2193,8 @@ public class AccountManagerImpl implements AccountManager, AccountService, Manag
|
||||
sc.setParameters("state", state);
|
||||
}
|
||||
|
||||
return _userAccountDao.search(sc, searchFilter);
|
||||
Pair<List<UserAccountVO>, Integer> result = _userAccountDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends UserAccount>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -47,6 +47,7 @@ import com.cloud.service.dao.ServiceOfferingDao;
|
||||
import com.cloud.storage.DiskOfferingVO;
|
||||
import com.cloud.storage.dao.DiskOfferingDao;
|
||||
import com.cloud.user.dao.AccountDao;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.component.Inject;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.utils.db.DB;
|
||||
@ -349,7 +350,7 @@ public class DomainManagerImpl implements DomainManager, DomainService, Manager
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DomainVO> searchForDomains(ListDomainsCmd cmd) {
|
||||
public Pair<List<? extends Domain>, Integer> searchForDomains(ListDomainsCmd cmd) {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
Long domainId = cmd.getId();
|
||||
boolean listAll = cmd.listAll();
|
||||
@ -407,11 +408,12 @@ public class DomainManagerImpl implements DomainManager, DomainService, Manager
|
||||
// return only Active domains to the API
|
||||
sc.setParameters("state", Domain.State.Active);
|
||||
|
||||
return _domainDao.search(sc, searchFilter);
|
||||
Pair<List<DomainVO>, Integer> result = _domainDao.searchAndCount(sc, searchFilter);
|
||||
return new Pair<List<? extends Domain>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<DomainVO> searchForDomainChildren(ListDomainChildrenCmd cmd) throws PermissionDeniedException {
|
||||
public Pair<List<? extends Domain>, Integer> searchForDomainChildren(ListDomainChildrenCmd cmd) throws PermissionDeniedException {
|
||||
Long domainId = cmd.getId();
|
||||
String domainName = cmd.getDomainName();
|
||||
Boolean isRecursive = cmd.isRecursive();
|
||||
@ -433,12 +435,12 @@ public class DomainManagerImpl implements DomainManager, DomainService, Manager
|
||||
}
|
||||
|
||||
Filter searchFilter = new Filter(DomainVO.class, "id", true, cmd.getStartIndex(), cmd.getPageSizeVal());
|
||||
List<DomainVO> domainList = searchForDomainChildren(searchFilter, domainId, domainName, keyword, path, true);
|
||||
Pair<List<DomainVO>, Integer> result = searchForDomainChildren(searchFilter, domainId, domainName, keyword, path, true);
|
||||
|
||||
return domainList;
|
||||
return new Pair<List<? extends Domain>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
private List<DomainVO> searchForDomainChildren(Filter searchFilter, Long domainId, String domainName, Object keyword, String path, boolean listActiveOnly) {
|
||||
private Pair<List<DomainVO>, Integer> searchForDomainChildren(Filter searchFilter, Long domainId, String domainName, Object keyword, String path, boolean listActiveOnly) {
|
||||
SearchCriteria<DomainVO> sc = _domainDao.createSearchCriteria();
|
||||
|
||||
if (keyword != null) {
|
||||
@ -465,7 +467,7 @@ public class DomainManagerImpl implements DomainManager, DomainService, Manager
|
||||
sc.addAnd("state", SearchCriteria.Op.EQ, Domain.State.Active);
|
||||
}
|
||||
|
||||
return _domainDao.search(sc, searchFilter);
|
||||
return _domainDao.searchAndCount(sc, searchFilter);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -96,9 +96,9 @@ public interface UserVmManager extends VirtualMachineGuru<UserVmVO>, UserVmServi
|
||||
* @param listAll TODO
|
||||
* @param listProjectResourcesCriteria TODO
|
||||
* @param tags TODO
|
||||
* @return List of UserVMs.
|
||||
* @return List of UserVMs + count
|
||||
*/
|
||||
List<UserVmVO> searchForUserVMs(Criteria c, Account caller, Long domainId, boolean isRecursive, List<Long> permittedAccounts, boolean listAll, ListProjectResourcesCriteria listProjectResourcesCriteria, Map<String, String> tags);
|
||||
Pair<List<UserVmVO>, Integer> searchForUserVMs(Criteria c, Account caller, Long domainId, boolean isRecursive, List<Long> permittedAccounts, boolean listAll, ListProjectResourcesCriteria listProjectResourcesCriteria, Map<String, String> tags);
|
||||
|
||||
String getChecksum(Long hostId, String templatePath);
|
||||
|
||||
|
||||
@ -2996,7 +2996,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserVmVO> searchForUserVMs(ListVMsCmd cmd) {
|
||||
public Pair<List<? extends UserVm>, Integer> searchForUserVMs(ListVMsCmd cmd) {
|
||||
Account caller = UserContext.current().getCaller();
|
||||
List<Long> permittedAccounts = new ArrayList<Long>();
|
||||
String hypervisor = cmd.getHypervisor();
|
||||
@ -3045,11 +3045,13 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
}
|
||||
c.addCriteria(Criteria.ISADMIN, _accountMgr.isAdmin(caller.getType()));
|
||||
|
||||
return searchForUserVMs(c, caller, domainId, isRecursive, permittedAccounts, listAll, listProjectResourcesCriteria, tags);
|
||||
Pair<List<UserVmVO>, Integer> result = searchForUserVMs(c, caller, domainId, isRecursive,
|
||||
permittedAccounts, listAll, listProjectResourcesCriteria, tags);
|
||||
return new Pair<List<? extends UserVm>, Integer>(result.first(), result.second());
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserVmVO> searchForUserVMs(Criteria c, Account caller, Long domainId, boolean isRecursive,
|
||||
public Pair<List<UserVmVO>, Integer> searchForUserVMs(Criteria c, Account caller, Long domainId, boolean isRecursive,
|
||||
List<Long> permittedAccounts, boolean listAll, ListProjectResourcesCriteria listProjectResourcesCriteria, Map<String, String> tags) {
|
||||
Filter searchFilter = new Filter(UserVmVO.class, c.getOrderBy(), c.getAscending(), c.getOffset(), c.getLimit());
|
||||
|
||||
@ -3240,7 +3242,7 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
}
|
||||
sc.setParameters("hostIdIN", (Object[]) hostIds);
|
||||
} else {
|
||||
return new ArrayList<UserVmVO>();
|
||||
return new Pair<List<UserVmVO>, Integer>(new ArrayList<UserVmVO>(), 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3248,8 +3250,8 @@ public class UserVmManagerImpl implements UserVmManager, UserVmService, Manager
|
||||
if (storageId != null) {
|
||||
sc.setJoinParameters("volumeSearch", "poolId", storageId);
|
||||
}
|
||||
s_logger.debug("THE WHERE CLAUSE IS:" + sc.getWhereClause());
|
||||
return _vmDao.search(sc, searchFilter);
|
||||
|
||||
return _vmDao.searchAndCount(sc, searchFilter);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -298,13 +298,13 @@ public class MockAccountManagerImpl implements Manager, AccountManager, AccountS
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Account> searchForAccounts(ListAccountsCmd cmd) {
|
||||
public Pair<List<? extends Account>, Integer> searchForAccounts(ListAccountsCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends UserAccount> searchForUsers(ListUsersCmd cmd) throws PermissionDeniedException {
|
||||
public Pair<List<? extends UserAccount>, Integer> searchForUsers(ListUsersCmd cmd) throws PermissionDeniedException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -29,6 +29,7 @@ import com.cloud.domain.Domain;
|
||||
import com.cloud.domain.DomainVO;
|
||||
import com.cloud.exception.PermissionDeniedException;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
@Local(value = { DomainManager.class })
|
||||
public class MockDomainManagerImpl implements Manager, DomainManager {
|
||||
@ -58,14 +59,14 @@ public class MockDomainManagerImpl implements Manager, DomainManager {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Domain> searchForDomains(ListDomainsCmd cmd)
|
||||
public Pair<List<? extends Domain>, Integer> searchForDomains(ListDomainsCmd cmd)
|
||||
throws PermissionDeniedException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends Domain> searchForDomainChildren(
|
||||
public Pair<List<? extends Domain>, Integer> searchForDomainChildren(
|
||||
ListDomainChildrenCmd cmd) throws PermissionDeniedException {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
|
||||
@ -192,7 +192,7 @@ public class MockUserVmManagerImpl implements UserVmManager, UserVmService, Mana
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<UserVmVO> searchForUserVMs(Criteria c, Account caller, Long domainId, boolean isRecursive, List<Long> permittedAccounts, boolean listAll, ListProjectResourcesCriteria listProjectResourcesCriteria, Map<String, String> tags) {
|
||||
public Pair<List<UserVmVO>, Integer> searchForUserVMs(Criteria c, Account caller, Long domainId, boolean isRecursive, List<Long> permittedAccounts, boolean listAll, ListProjectResourcesCriteria listProjectResourcesCriteria, Map<String, String> tags) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
@ -401,7 +401,7 @@ public class MockUserVmManagerImpl implements UserVmManager, UserVmService, Mana
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<? extends UserVm> searchForUserVMs(ListVMsCmd cmd) {
|
||||
public Pair<List<? extends UserVm>, Integer> searchForUserVMs(ListVMsCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -49,6 +49,7 @@ import com.cloud.network.vpc.VpcService;
|
||||
import com.cloud.offering.NetworkOffering;
|
||||
import com.cloud.user.Account;
|
||||
import com.cloud.user.User;
|
||||
import com.cloud.utils.Pair;
|
||||
import com.cloud.utils.component.ComponentLocator;
|
||||
import com.cloud.utils.component.Manager;
|
||||
import com.cloud.vm.DomainRouterVO;
|
||||
@ -244,7 +245,7 @@ public class MockVpcManagerImpl implements VpcManager, Manager{
|
||||
* @see com.cloud.network.vpc.VpcService#listPrivateGateway(com.cloud.api.commands.ListPrivateGatewaysCmd)
|
||||
*/
|
||||
@Override
|
||||
public List<PrivateGateway> listPrivateGateway(ListPrivateGatewaysCmd listPrivateGatewaysCmd) {
|
||||
public Pair<List<PrivateGateway>, Integer> listPrivateGateway(ListPrivateGatewaysCmd listPrivateGatewaysCmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
@ -289,7 +290,7 @@ public class MockVpcManagerImpl implements VpcManager, Manager{
|
||||
* @see com.cloud.network.vpc.VpcService#listStaticRoutes(com.cloud.api.commands.ListStaticRoutesCmd)
|
||||
*/
|
||||
@Override
|
||||
public List<? extends StaticRoute> listStaticRoutes(ListStaticRoutesCmd cmd) {
|
||||
public Pair<List<? extends StaticRoute>, Integer> listStaticRoutes(ListStaticRoutesCmd cmd) {
|
||||
// TODO Auto-generated method stub
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -22,6 +22,8 @@ import java.util.Map;
|
||||
|
||||
import javax.naming.ConfigurationException;
|
||||
|
||||
import com.cloud.utils.Pair;
|
||||
|
||||
/**
|
||||
* a uniform method for persisting and finding db entities.
|
||||
**/
|
||||
@ -260,4 +262,11 @@ public interface GenericDao<T, ID extends Serializable> {
|
||||
* @return
|
||||
*/
|
||||
Class<T> getEntityBeanType();
|
||||
|
||||
/**
|
||||
* @param sc
|
||||
* @param filter
|
||||
* @return
|
||||
*/
|
||||
Pair<List<T>, Integer> searchAndCount(SearchCriteria<T> sc, Filter filter);
|
||||
}
|
||||
|
||||
@ -130,6 +130,7 @@ public abstract class GenericDaoBase<T, ID extends Serializable> implements Gene
|
||||
protected StringBuilder _discriminatorClause;
|
||||
protected Map<String, Object> _discriminatorValues;
|
||||
protected String _selectByIdSql;
|
||||
protected String _count;
|
||||
|
||||
protected Field _idField;
|
||||
|
||||
@ -201,6 +202,7 @@ public abstract class GenericDaoBase<T, ID extends Serializable> implements Gene
|
||||
|
||||
final SqlGenerator generator = new SqlGenerator(_entityBeanType);
|
||||
_partialSelectSql = generator.buildSelectSql(false);
|
||||
_count = generator.buildCountSql();
|
||||
_partialQueryCacheSelectSql = generator.buildSelectSql(true);
|
||||
_embeddedFields = generator.getEmbeddedFields();
|
||||
_insertSqls = generator.buildInsertSqls();
|
||||
@ -1211,6 +1213,13 @@ public abstract class GenericDaoBase<T, ID extends Serializable> implements Gene
|
||||
public List<T> search(final SearchCriteria<T> sc, final Filter filter) {
|
||||
return search(sc, filter, null, false);
|
||||
}
|
||||
|
||||
@Override @DB(txn=false)
|
||||
public Pair<List<T>, Integer> searchAndCount(final SearchCriteria<T> sc, final Filter filter) {
|
||||
List<T> objects = search(sc, filter, null, false);
|
||||
Integer count = getCount(sc);
|
||||
return new Pair<List<T>, Integer>(objects, count);
|
||||
}
|
||||
|
||||
@Override @DB(txn=false)
|
||||
public List<T> search(final SearchCriteria<T> sc, final Filter filter, final boolean enable_query_cache) {
|
||||
@ -1769,4 +1778,71 @@ public abstract class GenericDaoBase<T, ID extends Serializable> implements Gene
|
||||
factory.setCallback(0, sc);
|
||||
return sc;
|
||||
}
|
||||
|
||||
public Integer getCount(SearchCriteria<T> sc) {
|
||||
String clause = sc != null ? sc.getWhereClause() : null;
|
||||
if (clause != null && clause.length() == 0) {
|
||||
clause = null;
|
||||
}
|
||||
|
||||
final StringBuilder str = createCountSelect(sc, clause != null);
|
||||
if (clause != null) {
|
||||
str.append(clause);
|
||||
}
|
||||
|
||||
Collection<JoinBuilder<SearchCriteria<?>>> joins = null;
|
||||
if (sc != null) {
|
||||
joins = sc.getJoins();
|
||||
if (joins != null) {
|
||||
addJoins(str, joins);
|
||||
}
|
||||
}
|
||||
|
||||
List<Object> groupByValues = addGroupBy(str, sc);
|
||||
final Transaction txn = Transaction.currentTxn();
|
||||
final String sql = str.toString();
|
||||
|
||||
PreparedStatement pstmt = null;
|
||||
try {
|
||||
pstmt = txn.prepareAutoCloseStatement(sql);
|
||||
int i = 0;
|
||||
if (clause != null) {
|
||||
for (final Pair<Attribute, Object> value : sc.getValues()) {
|
||||
prepareAttribute(++i, pstmt, value.first(), value.second());
|
||||
}
|
||||
}
|
||||
|
||||
if (joins != null) {
|
||||
i = addJoinAttributes(i, pstmt, joins);
|
||||
}
|
||||
|
||||
if (groupByValues != null) {
|
||||
for (Object value : groupByValues) {
|
||||
pstmt.setObject(i++, value);
|
||||
}
|
||||
}
|
||||
|
||||
final ResultSet rs = pstmt.executeQuery();
|
||||
while (rs.next()) {
|
||||
return rs.getInt(1);
|
||||
}
|
||||
return 0;
|
||||
} catch (final SQLException e) {
|
||||
throw new CloudRuntimeException("DB Exception on: " + pstmt, e);
|
||||
} catch (final Throwable e) {
|
||||
throw new CloudRuntimeException("Caught: " + pstmt, e);
|
||||
}
|
||||
}
|
||||
|
||||
@DB(txn=false)
|
||||
protected StringBuilder createCountSelect(SearchCriteria<?> sc, final boolean whereClause) {
|
||||
StringBuilder sql = new StringBuilder(_count);
|
||||
|
||||
if (!whereClause) {
|
||||
sql.delete(sql.length() - (_discriminatorClause == null ? 6 : 4), sql.length());
|
||||
}
|
||||
|
||||
return sql;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -659,4 +659,11 @@ public class SqlGenerator {
|
||||
public Field[] getEmbeddedFields() {
|
||||
return _embeddeds.toArray(new Field[_embeddeds.size()]);
|
||||
}
|
||||
|
||||
public String buildCountSql() {
|
||||
StringBuilder sql = new StringBuilder();
|
||||
|
||||
return sql.append("SELECT COUNT(*) FROM ").append(buildTableReferences()).
|
||||
append(" WHERE ").append(buildDiscriminatorClause().first()).toString();
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user