Repository: cloudstack
Updated Branches:
refs/heads/4.4 56c2a094f -> 6b9ac8be8
CLOUDSTACK-6920 Support listing of LBHealthcheck policy with LBHealthcheck
policy ID
(cherry picked from commit 21e452ff4f0459422f0612f2ddf7033a963b0a19)
Conflicts:
api/src/com/cloud/network/lb/LoadBalancingRulesService.java
Project: http://git-wip-us.apache.org/repos/asf/cloudstack/repo
Commit: http://git-wip-us.apache.org/repos/asf/cloudstack/commit/6b9ac8be
Tree: http://git-wip-us.apache.org/repos/asf/cloudstack/tree/6b9ac8be
Diff: http://git-wip-us.apache.org/repos/asf/cloudstack/diff/6b9ac8be
Branch: refs/heads/4.4
Commit: 6b9ac8be8b38f67c3372fcfd589ee057f362bb78
Parents: 56c2a09
Author: Rajesh Battala <[email protected]>
Authored: Wed Jun 18 15:42:23 2014 +0530
Committer: Daan Hoogland <[email protected]>
Committed: Wed Jun 18 13:21:32 2014 +0200
----------------------------------------------------------------------
.../network/lb/LoadBalancingRulesService.java | 4 ++++
.../ListLBHealthCheckPoliciesCmd.java | 21 ++++++++++++++++++--
.../lb/LoadBalancingRulesManagerImpl.java | 16 +++++++++++++--
3 files changed, 37 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6b9ac8be/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..50b39d2 100644
--- a/api/src/com/cloud/network/lb/LoadBalancingRulesService.java
+++ b/api/src/com/cloud/network/lb/LoadBalancingRulesService.java
@@ -159,4 +159,8 @@ public interface LoadBalancingRulesService {
StickinessPolicy updateLBStickinessPolicy(long id, String customId,
Boolean forDisplay);
HealthCheckPolicy updateLBHealthCheckPolicy(long id, String customId,
Boolean forDisplay);
+
+ LoadBalancer findLbByStickinessId(long stickinessPolicyId);
+
+ Long findLBIdByHealtCheckPolicyId(long lbHealthCheckPolicy);
}
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6b9ac8be/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java
----------------------------------------------------------------------
diff --git
a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java
b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java
index 7f78da64..3f2082a 100644
---
a/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java
+++
b/api/src/org/apache/cloudstack/api/command/user/loadbalancer/ListLBHealthCheckPoliciesCmd.java
@@ -29,6 +29,8 @@ import
org.apache.cloudstack.api.response.LBHealthCheckResponse;
import org.apache.cloudstack.api.response.ListResponse;
import org.apache.log4j.Logger;
+
+import com.cloud.exception.InvalidParameterValueException;
import com.cloud.network.rules.HealthCheckPolicy;
import com.cloud.network.rules.LoadBalancer;
@@ -45,13 +47,15 @@ public class ListLBHealthCheckPoliciesCmd 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.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;
+ @Parameter(name = ApiConstants.ID, type = CommandType.UUID, entityType =
LBHealthCheckResponse.class, description = "the ID of the healthcheck policy",
since = "4.4")
+ private Long id;
+
// ///////////////////////////////////////////////////
// ///////////////// Accessors ///////////////////////
// ///////////////////////////////////////////////////
@@ -59,6 +63,10 @@ public class ListLBHealthCheckPoliciesCmd extends
BaseListCmd {
return lbRuleId;
}
+ public Long getId() {
+ return id;
+ }
+
public boolean getDisplay() {
if (display != null) {
return display;
@@ -78,9 +86,18 @@ public class ListLBHealthCheckPoliciesCmd extends
BaseListCmd {
@Override
public void execute() {
List<LBHealthCheckResponse> hcpResponses = new
ArrayList<LBHealthCheckResponse>();
- LoadBalancer lb = _lbService.findById(getLbRuleId());
ListResponse<LBHealthCheckResponse> response = new
ListResponse<LBHealthCheckResponse>();
+ Long lbRuleId = getLbRuleId();
+ Long hId = getId();
+ if(lbRuleId == null) {
+ if(hId != null) {
+ lbRuleId = _lbService.findLBIdByHealtCheckPolicyId(hId);
+ } else {
+ throw new InvalidParameterValueException("Either LB Ruleid or
HealthCheckpolicy Id should be specified");
+ }
+ }
+ LoadBalancer lb = _lbService.findById(lbRuleId);
if (lb != null) {
List<? extends HealthCheckPolicy> healthCheckPolicies =
_lbService.searchForLBHealthCheckPolicies(this);
LBHealthCheckResponse spResponse =
_responseGenerator.createLBHealthCheckPolicyResponse(healthCheckPolicies, lb);
http://git-wip-us.apache.org/repos/asf/cloudstack/blob/6b9ac8be/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..501902b 100755
--- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
+++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java
@@ -2231,15 +2231,18 @@ public class LoadBalancingRulesManagerImpl<Type>
extends ManagerBase implements
public List<LBHealthCheckPolicyVO>
searchForLBHealthCheckPolicies(ListLBHealthCheckPoliciesCmd cmd) throws
PermissionDeniedException {
Account caller = CallContext.current().getCallingAccount();
Long loadBalancerId = cmd.getLbRuleId();
+ Long policyId = cmd.getId();
boolean forDisplay = cmd.getDisplay();
-
+ if(loadBalancerId == null) {
+ loadBalancerId = findLBIdByHealtCheckPolicyId(policyId);
+ }
LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId);
if (loadBalancer == null) {
return null;
}
_accountMgr.checkAccess(caller, null, true, loadBalancer);
- List<LBHealthCheckPolicyVO> hcDbpolicies =
_lb2healthcheckDao.listByLoadBalancerIdAndDisplayFlag(cmd.getLbRuleId(),
forDisplay);
+ List<LBHealthCheckPolicyVO> hcDbpolicies =
_lb2healthcheckDao.listByLoadBalancerIdAndDisplayFlag(loadBalancerId,
forDisplay);
return hcDbpolicies;
}
@@ -2527,4 +2530,13 @@ public class LoadBalancingRulesManagerImpl<Type> extends
ManagerBase implements
return _lb2healthcheckDao.findById(id);
}
+ @Override
+ public Long findLBIdByHealtCheckPolicyId(long lbHealthCheckPolicy) {
+ LBHealthCheckPolicyVO policy=
_lb2healthcheckDao.findById(lbHealthCheckPolicy);
+ if(policy != null) {
+ return policy.getLoadBalancerId();
+ }
+ return null;
+ }
+
}