VPC: added "forVpc" (boolean) parameter to listRouters call - filter by the fact if router belongs to VPC or not
Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/83f566cf Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/83f566cf Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/83f566cf Branch: refs/heads/vpc Commit: 83f566cfe72ad45631426e18f689b4d160da3e8e Parents: 234ae44 Author: Alena Prokharchyk <[email protected]> Authored: Thu Jul 5 14:04:34 2012 -0700 Committer: Alena Prokharchyk <[email protected]> Committed: Fri Jul 6 11:08:48 2012 -0700 ---------------------------------------------------------------------- api/src/com/cloud/api/commands/ListRoutersCmd.java | 7 +++++++ .../src/com/cloud/server/ManagementServerImpl.java | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/83f566cf/api/src/com/cloud/api/commands/ListRoutersCmd.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/api/commands/ListRoutersCmd.java b/api/src/com/cloud/api/commands/ListRoutersCmd.java index 867b455..72a9144 100644 --- a/api/src/com/cloud/api/commands/ListRoutersCmd.java +++ b/api/src/com/cloud/api/commands/ListRoutersCmd.java @@ -70,6 +70,9 @@ public class ListRoutersCmd extends BaseListProjectAndAccountResourcesCmd { @IdentityMapper(entityTableName="vpc") @Parameter(name=ApiConstants.VPC_ID, type=CommandType.LONG, description="List networks by VPC") private Long vpcId; + + @Parameter(name=ApiConstants.FOR_VPC, type=CommandType.BOOLEAN, description="if true is passed for this parameter, list only VPC routers") + private Boolean forVpc; ///////////////////////////////////////////////////// /////////////////// Accessors /////////////////////// @@ -106,6 +109,10 @@ public class ListRoutersCmd extends BaseListProjectAndAccountResourcesCmd { public Long getVpcId() { return vpcId; } + + public Boolean getForVpc() { + return forVpc; + } ///////////////////////////////////////////////////// /////////////// API Implementation/////////////////// http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/83f566cf/server/src/com/cloud/server/ManagementServerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/server/ManagementServerImpl.java b/server/src/com/cloud/server/ManagementServerImpl.java index 61c3a38..d4bf750 100755 --- a/server/src/com/cloud/server/ManagementServerImpl.java +++ b/server/src/com/cloud/server/ManagementServerImpl.java @@ -1596,6 +1596,7 @@ public class ManagementServerImpl implements ManagementServer { String keyword = cmd.getKeyword(); Long networkId = cmd.getNetworkId(); Long vpcId = cmd.getVpcId(); + Boolean forVpc = cmd.getForVpc(); Account caller = UserContext.current().getCaller(); List<Long> permittedAccounts = new ArrayList<Long>(); @@ -1617,6 +1618,14 @@ public class ManagementServerImpl implements ManagementServer { sb.and("podId", sb.entity().getPodIdToDeployIn(), SearchCriteria.Op.EQ); sb.and("hostId", sb.entity().getHostId(), SearchCriteria.Op.EQ); sb.and("vpcId", sb.entity().getVpcId(), SearchCriteria.Op.EQ); + + if (forVpc != null) { + if (forVpc) { + sb.and("forVpc", sb.entity().getVpcId(), SearchCriteria.Op.NNULL); + } else { + sb.and("forVpc", sb.entity().getVpcId(), SearchCriteria.Op.NULL); + } + } if (networkId != null) { SearchBuilder<NicVO> nicSearch = _nicDao.createSearchBuilder(); @@ -1627,7 +1636,7 @@ public class ManagementServerImpl implements ManagementServer { sb.join("nicSearch", nicSearch, sb.entity().getId(), nicSearch.entity().getInstanceId(), JoinBuilder.JoinType.INNER); } - + SearchCriteria<DomainRouterVO> sc = sb.create(); _accountMgr.buildACLSearchCriteria(sc, domainId, isRecursive, permittedAccounts, listProjectResourcesCriteria);
