You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ja...@apache.org on 2014/06/17 12:45:14 UTC

git commit: updated refs/heads/4.4-forward to b0d726a

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 <ja...@apache.org>
Authored: Tue Jun 17 16:14:33 2014 +0530
Committer: Jayapal <ja...@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());