mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
CLOUDSTACK-1958: List GSLB response should have the GSLB site (zone load
balancer rule) details as well
This commit is contained in:
parent
ff7112a074
commit
f65f3b9d50
@ -17,6 +17,7 @@
|
||||
|
||||
package com.cloud.region.ha;
|
||||
|
||||
import com.cloud.network.rules.LoadBalancer;
|
||||
import org.apache.cloudstack.api.command.user.region.ha.gslb.*;
|
||||
|
||||
import java.util.List;
|
||||
@ -44,4 +45,6 @@ public interface GlobalLoadBalancingRulesService {
|
||||
|
||||
List<GlobalLoadBalancerRule> listGlobalLoadBalancerRule(ListGlobalLoadBalancerRuleCmd listGslbCmd);
|
||||
|
||||
List<LoadBalancer> listSiteLoadBalancers(long gslbRuleId);
|
||||
|
||||
}
|
||||
|
||||
@ -335,6 +335,7 @@ public class ApiConstants {
|
||||
public static final String LOAD_BALANCER_DEVICE_STATE = "lbdevicestate";
|
||||
public static final String LOAD_BALANCER_DEVICE_CAPACITY = "lbdevicecapacity";
|
||||
public static final String LOAD_BALANCER_DEVICE_DEDICATED = "lbdevicededicated";
|
||||
public static final String LOAD_BALANCER_RULE = "loadbalancerrule";
|
||||
public static final String LOAD_BALANCER_RULE_LIST = "loadbalancerrulelist";
|
||||
public static final String FIREWALL_DEVICE_ID = "fwdeviceid";
|
||||
public static final String FIREWALL_DEVICE_NAME = "fwdevicename";
|
||||
|
||||
@ -23,6 +23,8 @@ import org.apache.cloudstack.api.ApiConstants;
|
||||
import org.apache.cloudstack.api.BaseResponse;
|
||||
import org.apache.cloudstack.api.EntityReference;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@EntityReference(value= GlobalLoadBalancerRule.class)
|
||||
public class GlobalLoadBalancerResponse extends BaseResponse implements ControlledEntityResponse {
|
||||
|
||||
@ -76,6 +78,10 @@ public class GlobalLoadBalancerResponse extends BaseResponse implements Controll
|
||||
@Param(description = "the domain of the load balancer rule")
|
||||
private String domainName;
|
||||
|
||||
@SerializedName(ApiConstants.LOAD_BALANCER_RULE)
|
||||
@Param(description="List of load balancer rules that are part of GSLB rule", responseObject = LoadBalancerResponse.class)
|
||||
private List<LoadBalancerResponse> siteLoadBalancers;
|
||||
|
||||
public void setRegionIdId(Integer regionId) {
|
||||
this.regionId = regionId;
|
||||
}
|
||||
@ -130,4 +136,8 @@ public class GlobalLoadBalancerResponse extends BaseResponse implements Controll
|
||||
public void setDomainName(String domainName) {
|
||||
this.domainName = domainName;
|
||||
}
|
||||
|
||||
public void setSiteLoadBalancers(List<LoadBalancerResponse> siteLoadBalancers) {
|
||||
this.siteLoadBalancers = siteLoadBalancers;
|
||||
}
|
||||
}
|
||||
|
||||
@ -25,6 +25,8 @@ import java.util.Set;
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.inject.Inject;
|
||||
|
||||
import com.cloud.network.rules.LoadBalancer;
|
||||
import com.cloud.region.ha.GlobalLoadBalancingRulesService;
|
||||
import org.apache.cloudstack.affinity.AffinityGroup;
|
||||
import org.apache.cloudstack.affinity.AffinityGroupResponse;
|
||||
import org.apache.cloudstack.affinity.dao.AffinityGroupDao;
|
||||
@ -388,6 +390,7 @@ public class ApiDBUtils {
|
||||
static VpcProvisioningService _vpcProvSvc;
|
||||
static AffinityGroupDao _affinityGroupDao;
|
||||
static AffinityGroupJoinDao _affinityGroupJoinDao;
|
||||
static GlobalLoadBalancingRulesService _gslbService;
|
||||
|
||||
@Inject private ManagementServer ms;
|
||||
@Inject public AsyncJobManager asyncMgr;
|
||||
@ -494,6 +497,7 @@ public class ApiDBUtils {
|
||||
@Inject private VpcProvisioningService vpcProvSvc;
|
||||
@Inject private AffinityGroupDao affinityGroupDao;
|
||||
@Inject private AffinityGroupJoinDao affinityGroupJoinDao;
|
||||
@Inject private GlobalLoadBalancingRulesService gslbService;
|
||||
|
||||
@PostConstruct
|
||||
void init() {
|
||||
@ -599,6 +603,7 @@ public class ApiDBUtils {
|
||||
_vpcProvSvc = vpcProvSvc;
|
||||
_affinityGroupDao = affinityGroupDao;
|
||||
_affinityGroupJoinDao = affinityGroupJoinDao;
|
||||
_gslbService = gslbService;
|
||||
// Note: stats collector should already have been initialized by this time, otherwise a null instance is returned
|
||||
_statsCollector = StatsCollector.getInstance();
|
||||
}
|
||||
@ -1630,4 +1635,8 @@ public class ApiDBUtils {
|
||||
public static AffinityGroupResponse fillAffinityGroupDetails(AffinityGroupResponse resp, AffinityGroupJoinVO group) {
|
||||
return _affinityGroupJoinDao.setAffinityGroupResponse(resp, group);
|
||||
}
|
||||
|
||||
public static List<? extends LoadBalancer> listSiteLoadBalancers(long gslbRuleId) {
|
||||
return _gslbService.listSiteLoadBalancers(gslbRuleId);
|
||||
}
|
||||
}
|
||||
|
||||
@ -798,6 +798,14 @@ public class ApiResponseHelper implements ResponseGenerator {
|
||||
response.setId(globalLoadBalancerRule.getUuid());
|
||||
populateOwner(response, globalLoadBalancerRule);
|
||||
response.setObjectName("globalloadbalancer");
|
||||
|
||||
List<LoadBalancerResponse> siteLbResponses = new ArrayList<LoadBalancerResponse>();
|
||||
List<? extends LoadBalancer> siteLoadBalaners = ApiDBUtils.listSiteLoadBalancers(globalLoadBalancerRule.getId());
|
||||
for (LoadBalancer siteLb : siteLoadBalaners) {
|
||||
LoadBalancerResponse siteLbResponse = createLoadBalancerResponse(siteLb);
|
||||
siteLbResponses.add(siteLbResponse);
|
||||
}
|
||||
response.setSiteLoadBalancers(siteLbResponses);
|
||||
return response;
|
||||
}
|
||||
|
||||
|
||||
@ -511,6 +511,20 @@ public class GlobalLoadBalancingRulesServiceImpl implements GlobalLoadBalancingR
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<LoadBalancer> listSiteLoadBalancers(long gslbRuleId) {
|
||||
List<GlobalLoadBalancerLbRuleMapVO> gslbLbMapVos = _gslbLbMapDao.listByGslbRuleId(gslbRuleId);
|
||||
List<LoadBalancer> siteLoadBalancers = new ArrayList<LoadBalancer>();
|
||||
if (gslbLbMapVos != null) {
|
||||
for (GlobalLoadBalancerLbRuleMapVO gslbLbMapVo : gslbLbMapVos) {
|
||||
LoadBalancerVO loadBalancer = _lbDao.findById(gslbLbMapVo.getLoadBalancerId());
|
||||
siteLoadBalancers.add(loadBalancer);
|
||||
}
|
||||
return siteLoadBalancers;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
private boolean applyGlobalLoadBalancerRuleConfig(long gslbRuleId, boolean revoke) throws ResourceUnavailableException {
|
||||
|
||||
GlobalLoadBalancerRuleVO gslbRule = _gslbRuleDao.findById(gslbRuleId);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user