From 335f165b5bc423065600473023033d33d70ced0a Mon Sep 17 00:00:00 2001 From: Jayapal Date: Tue, 17 Jun 2014 16:14:33 +0530 Subject: [PATCH] CLOUDSTACK-6923: updated listLBStickinessPolicies API to list using stickinesspolicy id (cherry picked from commit b0d726a872e2859a56ee677c15079cc3a59ab894) Conflicts: api/src/com/cloud/network/lb/LoadBalancingRulesService.java --- .../ListLBStickinessPoliciesCmd.java | 35 +++++++++++++++++-- .../lb/LoadBalancingRulesManagerImpl.java | 24 +++++++++++-- 2 files changed, 54 insertions(+), 5 deletions(-) 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 9905c0b1acc..80ae3ebed0f 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 spResponses = new ArrayList(); - LoadBalancer lb = _lbService.findById(getLbRuleId()); ListResponse response = new ListResponse(); if (lb != null) { diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 501902b3c0b..e29d8c39e79 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 extends ManagerBase implements public List searchForLBStickinessPolicies(ListLBStickinessPoliciesCmd cmd) throws PermissionDeniedException { Account caller = CallContext.current().getCallingAccount(); Long loadBalancerId = cmd.getLbRuleId(); - boolean forDisplay = cmd.getDisplay(); + 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 sDbpolicies = _lb2stickinesspoliciesDao.listByLoadBalancerIdAndDisplayFlag(cmd.getLbRuleId(), forDisplay); + List sDbpolicies = _lb2stickinesspoliciesDao.listByLoadBalancerIdAndDisplayFlag(loadBalancer.getId(), forDisplay); return sDbpolicies; } @@ -2365,6 +2373,16 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements return _lbDao.findById(lbId); } + @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