mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-6920 Support listing of LBHealthcheck policy with LBHealthcheck policy ID
This commit is contained in:
parent
15b348632d
commit
c7b23d0a10
@ -161,4 +161,6 @@ public interface LoadBalancingRulesService {
|
||||
HealthCheckPolicy updateLBHealthCheckPolicy(long id, String customId, Boolean forDisplay);
|
||||
|
||||
LoadBalancer findLbByStickinessId(long stickinessPolicyId);
|
||||
|
||||
Long findLBIdByHealtCheckPolicyId(long lbHealthCheckPolicy);
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -2263,15 +2263,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;
|
||||
}
|
||||
@ -2569,4 +2572,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;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user