mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
Add logs to listLoadBalancerRuleInstances API (#8094)
This commit is contained in:
parent
2993c99363
commit
4e46f5ad17
@ -97,52 +97,44 @@ public class ListLoadBalancerRuleInstancesCmd extends BaseListCmd implements Use
|
|||||||
public void execute() {
|
public void execute() {
|
||||||
Pair<List<? extends UserVm>, List<String>> vmServiceMap = _lbService.listLoadBalancerInstances(this);
|
Pair<List<? extends UserVm>, List<String>> vmServiceMap = _lbService.listLoadBalancerInstances(this);
|
||||||
List<? extends UserVm> result = vmServiceMap.first();
|
List<? extends UserVm> result = vmServiceMap.first();
|
||||||
|
s_logger.debug(String.format("A total of [%s] user VMs were obtained when listing the load balancer instances: [%s].", result.size(), result));
|
||||||
|
|
||||||
List<String> serviceStates = vmServiceMap.second();
|
List<String> serviceStates = vmServiceMap.second();
|
||||||
|
s_logger.debug(String.format("A total of [%s] service states were obtained when listing the load balancer instances: [%s].", serviceStates.size(), serviceStates));
|
||||||
|
|
||||||
if (!isListLbVmip()) {
|
if (!isListLbVmip()) {
|
||||||
// list lb instances
|
ListResponse<UserVmResponse> response = new ListResponse<>();
|
||||||
ListResponse<UserVmResponse> response = new ListResponse<UserVmResponse>();
|
List<UserVmResponse> vmResponses = _responseGenerator.createUserVmResponse(ResponseView.Restricted, "loadbalancerruleinstance", result.toArray(new UserVm[0]));
|
||||||
List<UserVmResponse> vmResponses = new ArrayList<UserVmResponse>();
|
|
||||||
if (result != null) {
|
|
||||||
vmResponses = _responseGenerator.createUserVmResponse(ResponseView.Restricted, "loadbalancerruleinstance", result.toArray(new UserVm[result.size()]));
|
|
||||||
|
|
||||||
|
for (int i = 0; i < result.size(); i++) {
|
||||||
for (int i = 0; i < result.size(); i++) {
|
vmResponses.get(i).setServiceState(serviceStates.get(i));
|
||||||
vmResponses.get(i).setServiceState(serviceStates.get(i));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
response.setResponses(vmResponses);
|
response.setResponses(vmResponses);
|
||||||
response.setResponseName(getCommandName());
|
response.setResponseName(getCommandName());
|
||||||
setResponseObject(response);
|
setResponseObject(response);
|
||||||
|
return;
|
||||||
|
|
||||||
} else {
|
|
||||||
ListResponse<LoadBalancerRuleVmMapResponse> lbRes = new ListResponse<LoadBalancerRuleVmMapResponse>();
|
|
||||||
|
|
||||||
List<UserVmResponse> vmResponses = new ArrayList<UserVmResponse>();
|
|
||||||
List<LoadBalancerRuleVmMapResponse> listlbVmRes = new ArrayList<LoadBalancerRuleVmMapResponse>();
|
|
||||||
|
|
||||||
if (result != null) {
|
|
||||||
vmResponses = _responseGenerator.createUserVmResponse(getResponseView(), "loadbalancerruleinstance", result.toArray(new UserVm[result.size()]));
|
|
||||||
|
|
||||||
|
|
||||||
List<String> ipaddr = null;
|
|
||||||
|
|
||||||
for (int i=0;i<result.size(); i++) {
|
|
||||||
LoadBalancerRuleVmMapResponse lbRuleVmIpResponse = new LoadBalancerRuleVmMapResponse();
|
|
||||||
vmResponses.get(i).setServiceState(serviceStates.get(i));
|
|
||||||
lbRuleVmIpResponse.setUserVmResponse(vmResponses.get(i));
|
|
||||||
//get vm id from the uuid
|
|
||||||
VirtualMachine lbvm = _entityMgr.findByUuid(VirtualMachine.class, vmResponses.get(i).getId());
|
|
||||||
lbRuleVmIpResponse.setIpAddr(_lbService.listLbVmIpAddress(getId(), lbvm.getId()));
|
|
||||||
lbRuleVmIpResponse.setObjectName("lbrulevmidip");
|
|
||||||
listlbVmRes.add(lbRuleVmIpResponse);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lbRes.setResponseName(getCommandName());
|
|
||||||
lbRes.setResponses(listlbVmRes);
|
|
||||||
setResponseObject(lbRes);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ListResponse<LoadBalancerRuleVmMapResponse> lbRes = new ListResponse<>();
|
||||||
|
|
||||||
|
List<UserVmResponse> vmResponses = _responseGenerator.createUserVmResponse(getResponseView(), "loadbalancerruleinstance", result.toArray(new UserVm[0]));
|
||||||
|
List<LoadBalancerRuleVmMapResponse> lbRuleVmMapList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (int i=0; i<result.size(); i++) {
|
||||||
|
LoadBalancerRuleVmMapResponse lbRuleVmIpResponse = new LoadBalancerRuleVmMapResponse();
|
||||||
|
UserVmResponse userVmResponse = vmResponses.get(i);
|
||||||
|
userVmResponse.setServiceState(serviceStates.get(i));
|
||||||
|
lbRuleVmIpResponse.setUserVmResponse(userVmResponse);
|
||||||
|
|
||||||
|
VirtualMachine lbVm = _entityMgr.findByUuid(VirtualMachine.class, userVmResponse.getId());
|
||||||
|
lbRuleVmIpResponse.setIpAddr(_lbService.listLbVmIpAddress(getId(), lbVm.getId()));
|
||||||
|
lbRuleVmIpResponse.setObjectName("lbrulevmidip");
|
||||||
|
lbRuleVmMapList.add(lbRuleVmIpResponse);
|
||||||
|
}
|
||||||
|
|
||||||
|
lbRes.setResponseName(getCommandName());
|
||||||
|
lbRes.setResponses(lbRuleVmMapList);
|
||||||
|
setResponseObject(lbRes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -49,6 +49,7 @@ import org.apache.cloudstack.engine.orchestration.service.NetworkOrchestrationSe
|
|||||||
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
|
||||||
import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO;
|
import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO;
|
||||||
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
|
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
|
||||||
|
import org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
@ -2322,33 +2323,37 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
|
|||||||
Boolean applied = cmd.isApplied();
|
Boolean applied = cmd.isApplied();
|
||||||
|
|
||||||
if (applied == null) {
|
if (applied == null) {
|
||||||
|
s_logger.info(String.format("The [%s] parameter was not passed. Using the default value [%s].", ApiConstants.APPLIED, Boolean.TRUE));
|
||||||
applied = Boolean.TRUE;
|
applied = Boolean.TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId);
|
LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId);
|
||||||
if (loadBalancer == null) {
|
if (loadBalancer == null) {
|
||||||
return null;
|
String msg = String.format("Unable to find the load balancer with ID [%s].", cmd.getId());
|
||||||
}
|
|
||||||
|
|
||||||
_accountMgr.checkAccess(caller, null, true, loadBalancer);
|
|
||||||
|
|
||||||
List<UserVmVO> loadBalancerInstances = new ArrayList<UserVmVO>();
|
|
||||||
List<String> serviceStates = new ArrayList<String>();
|
|
||||||
List<LoadBalancerVMMapVO> vmLoadBalancerMappings = null;
|
|
||||||
vmLoadBalancerMappings = _lb2VmMapDao.listByLoadBalancerId(loadBalancerId);
|
|
||||||
if(vmLoadBalancerMappings == null) {
|
|
||||||
String msg = "no VM Loadbalancer Mapping found";
|
|
||||||
s_logger.error(msg);
|
s_logger.error(msg);
|
||||||
throw new CloudRuntimeException(msg);
|
throw new CloudRuntimeException(msg);
|
||||||
}
|
}
|
||||||
Map<Long, String> vmServiceState = new HashMap<Long, String>(vmLoadBalancerMappings.size());
|
|
||||||
List<Long> appliedInstanceIdList = new ArrayList<Long>();
|
|
||||||
|
|
||||||
if ((vmLoadBalancerMappings != null) && !vmLoadBalancerMappings.isEmpty()) {
|
String loadBalancerAsString = ReflectionToStringBuilderUtils.reflectOnlySelectedFields(loadBalancer, "uuid", "name");
|
||||||
for (LoadBalancerVMMapVO vmLoadBalancerMapping : vmLoadBalancerMappings) {
|
|
||||||
appliedInstanceIdList.add(vmLoadBalancerMapping.getInstanceId());
|
_accountMgr.checkAccess(caller, null, true, loadBalancer);
|
||||||
vmServiceState.put(vmLoadBalancerMapping.getInstanceId(), vmLoadBalancerMapping.getState());
|
|
||||||
}
|
List<UserVmVO> loadBalancerInstances = new ArrayList<>();
|
||||||
|
List<String> serviceStates = new ArrayList<>();
|
||||||
|
List<LoadBalancerVMMapVO> vmLoadBalancerMappings = _lb2VmMapDao.listByLoadBalancerId(loadBalancerId);
|
||||||
|
|
||||||
|
if (vmLoadBalancerMappings == null) {
|
||||||
|
String msg = String.format("Unable to find map of VMs related to load balancer [%s].", loadBalancerAsString);
|
||||||
|
s_logger.error(msg);
|
||||||
|
throw new CloudRuntimeException(msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map<Long, String> vmServiceState = new HashMap<>(vmLoadBalancerMappings.size());
|
||||||
|
List<Long> appliedInstanceIdList = new ArrayList<>();
|
||||||
|
|
||||||
|
for (LoadBalancerVMMapVO vmLoadBalancerMapping : vmLoadBalancerMappings) {
|
||||||
|
appliedInstanceIdList.add(vmLoadBalancerMapping.getInstanceId());
|
||||||
|
vmServiceState.put(vmLoadBalancerMapping.getInstanceId(), vmLoadBalancerMapping.getState());
|
||||||
}
|
}
|
||||||
|
|
||||||
List<UserVmVO> userVms = _vmDao.listByIds(appliedInstanceIdList);
|
List<UserVmVO> userVms = _vmDao.listByIds(appliedInstanceIdList);
|
||||||
@ -2364,13 +2369,25 @@ public class LoadBalancingRulesManagerImpl<Type> extends ManagerBase implements
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String userVmAsString = ReflectionToStringBuilderUtils.reflectOnlySelectedFields(userVm, "uuid", "name");
|
||||||
|
|
||||||
boolean isApplied = appliedInstanceIdList.contains(userVm.getId());
|
boolean isApplied = appliedInstanceIdList.contains(userVm.getId());
|
||||||
if ((isApplied && applied) || (!isApplied && !applied)) {
|
String isAppliedMsg = isApplied ? "is applied" : "is not applied";
|
||||||
loadBalancerInstances.add(userVm);
|
s_logger.debug(String.format("The user VM [%s] %s to a rule of the load balancer [%s].", userVmAsString, isAppliedMsg, loadBalancerAsString));
|
||||||
serviceStates.add(vmServiceState.get(userVm.getId()));
|
|
||||||
|
if (isApplied != applied) {
|
||||||
|
s_logger.debug(String.format("Skipping adding service state from the user VM [%s] to the service state list. This happens because the VM %s to the load "
|
||||||
|
+ "balancer rule and the [%s] parameter was passed as [%s].", userVmAsString, isAppliedMsg, ApiConstants.APPLIED, applied));
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
loadBalancerInstances.add(userVm);
|
||||||
|
String serviceState = vmServiceState.get(userVm.getId());
|
||||||
|
s_logger.debug(String.format("Adding the service state [%s] from the user VM [%s] to the service state list.", serviceState, userVmAsString));
|
||||||
|
serviceStates.add(serviceState);
|
||||||
}
|
}
|
||||||
return new Pair<List<? extends UserVm>, List<String>>(loadBalancerInstances, serviceStates);
|
|
||||||
|
return new Pair<>(loadBalancerInstances, serviceStates);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user