Repository: cloudstack Updated Branches: refs/heads/4.4-forward a5415d93e -> b0d726a87
CLOUDSTACK-6923: updated listLBStickinessPolicies API to list using stickinesspolicy id Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/b0d726a8 Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/b0d726a8 Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/b0d726a8 Branch: refs/heads/4.4-forward Commit: b0d726a872e2859a56ee677c15079cc3a59ab894 Parents: a5415d9 Author: Jayapal <jaya...@apache.org> Authored: Tue Jun 17 16:14:33 2014 +0530 Committer: Jayapal <jaya...@apache.org> Committed: Tue Jun 17 16:14:54 2014 +0530 ---------------------------------------------------------------------- .../network/lb/LoadBalancingRulesService.java | 2 ++ .../ListLBStickinessPoliciesCmd.java | 35 ++++++++++++++++++-- .../lb/LoadBalancingRulesManagerImpl.java | 22 ++++++++++-- 3 files changed, 55 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0d726a8/api/src/com/cloud/network/lb/LoadBalancingRulesService.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/network/lb/LoadBalancingRulesService.java b/api/src/com/cloud/network/lb/LoadBalancingRulesService.java index c497633..3e11014 100644 --- a/api/src/com/cloud/network/lb/LoadBalancingRulesService.java +++ b/api/src/com/cloud/network/lb/LoadBalancingRulesService.java @@ -159,4 +159,6 @@ public interface LoadBalancingRulesService { StickinessPolicy updateLBStickinessPolicy(long id, String customId, Boolean forDisplay); HealthCheckPolicy updateLBHealthCheckPolicy(long id, String customId, Boolean forDisplay); + + LoadBalancer findLbByStickinessId(long stickinessPolicyId); } http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0d726a8/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java ---------------------------------------------------------------------- diff --git a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java index 9905c0b..80ae3eb 100644 --- a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java +++ b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBStickinessPoliciesCmd.java @@ -19,6 +19,7 @@ package org.apache.cloudstack.api.command.user.loadbalancer; import java.util.ArrayList; import java.util.List; +import com.cloud.exception.InvalidParameterValueException; import org.apache.cloudstack.acl.RoleType; import org.apache.cloudstack.api.APICommand; import org.apache.cloudstack.api.ApiConstants; @@ -47,10 +48,16 @@ public class ListLBStickinessPoliciesCmd extends BaseListCmd { @Parameter(name = ApiConstants.LBID, type = CommandType.UUID, entityType = FirewallRuleResponse.class, - required = true, description = "the ID of the load balancer rule") private Long lbRuleId; + @Parameter(name = ApiConstants.ID, + type = CommandType.UUID, + entityType = LBStickinessResponse.class, + description = "the ID of the load balancer stickiness policy") + private Long id; + + @Parameter(name = ApiConstants.FOR_DISPLAY, type = CommandType.BOOLEAN, description = "list resources by display flag; only ROOT admin is eligible to pass this parameter", since = "4.4", authorized = {RoleType.Admin}) private Boolean display; @@ -61,6 +68,10 @@ public class ListLBStickinessPoliciesCmd extends BaseListCmd { return lbRuleId; } + public Long getId() { + return id; + } + public boolean getDisplay() { if (display != null) { return display; @@ -79,8 +90,28 @@ public class ListLBStickinessPoliciesCmd extends BaseListCmd { @Override public void execute() { + + LoadBalancer lb = null; + if (lbRuleId == null && id == null) { + throw new InvalidParameterValueException("LB rule id and stickiness policy id can't be null"); + } + + if (id != null) { + lb = _lbService.findLbByStickinessId(id); + if (lb == null) { + throw new InvalidParameterValueException("stickiness policy id doesn't exist"); + } + + if ((lbRuleId != null) && (lbRuleId != lb.getId())) { + throw new InvalidParameterValueException("stickiness policy id doesn't belong to lbId" + lbRuleId); + } + } + + if (lbRuleId != null && lb != null) { + lb = _lbService.findById(getLbRuleId()); + } + List<LBStickinessResponse> spResponses = new ArrayList<LBStickinessResponse>(); - LoadBalancer lb = _lbService.findById(getLbRuleId()); ListResponse<LBStickinessResponse> response = new ListResponse<LBStickinessResponse>(); if (lb != null) { http://git-wip-us.apache.org/repos/asf/cloudstack/blob/b0d726a8/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 8225243..6358252 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -2213,16 +2213,24 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements public List<LBStickinessPolicyVO> searchForLBStickinessPolicies(ListLBStickinessPoliciesCmd cmd) throws PermissionDeniedException { Account caller = CallContext.current().getCallingAccount(); Long loadBalancerId = cmd.getLbRuleId(); + Long stickinessId = cmd.getId(); + boolean forDisplay = cmd.getDisplay(); + LoadBalancerVO loadBalancer = null; + + if (loadBalancerId == null) { + loadBalancer = findLbByStickinessId(stickinessId); + } else { + loadBalancer = _lbDao.findById(loadBalancerId); + } - LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId); if (loadBalancer == null) { return null; } _accountMgr.checkAccess(caller, null, true, loadBalancer); - List<LBStickinessPolicyVO> sDbpolicies = _lb2stickinesspoliciesDao.listByLoadBalancerIdAndDisplayFlag(cmd.getLbRuleId(), forDisplay); + List<LBStickinessPolicyVO> sDbpolicies = _lb2stickinesspoliciesDao.listByLoadBalancerIdAndDisplayFlag(loadBalancer.getId(), forDisplay); return sDbpolicies; } @@ -2363,6 +2371,16 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements } @Override + public LoadBalancerVO findLbByStickinessId(long stickinessPolicyId) { + LBStickinessPolicyVO stickinessPolicy = _lb2stickinesspoliciesDao.findById(stickinessPolicyId); + + if (stickinessPolicy == null) { + return null; + } + return _lbDao.findById(stickinessPolicy.getLoadBalancerId()); + } + + @Override public void removeLBRule(LoadBalancer rule) { // remove the rule _lbDao.remove(rule.getId());