Skip to content

Commit 4e46f5a

Browse files
authored
Add logs to listLoadBalancerRuleInstances API (#8094)
1 parent 2993c99 commit 4e46f5a

File tree

2 files changed

+61
-52
lines changed

2 files changed

+61
-52
lines changed

api/src/main/java/org/apache/cloudstack/api/command/user/loadbalancer/ListLoadBalancerRuleInstancesCmd.java

Lines changed: 26 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -97,52 +97,44 @@ public String getCommandName() {
9797
public void execute() {
9898
Pair<List<? extends UserVm>, List<String>> vmServiceMap = _lbService.listLoadBalancerInstances(this);
9999
List<? extends UserVm> result = vmServiceMap.first();
100+
s_logger.debug(String.format("A total of [%s] user VMs were obtained when listing the load balancer instances: [%s].", result.size(), result));
101+
100102
List<String> serviceStates = vmServiceMap.second();
103+
s_logger.debug(String.format("A total of [%s] service states were obtained when listing the load balancer instances: [%s].", serviceStates.size(), serviceStates));
101104

102105
if (!isListLbVmip()) {
103-
// list lb instances
104-
ListResponse<UserVmResponse> response = new ListResponse<UserVmResponse>();
105-
List<UserVmResponse> vmResponses = new ArrayList<UserVmResponse>();
106-
if (result != null) {
107-
vmResponses = _responseGenerator.createUserVmResponse(ResponseView.Restricted, "loadbalancerruleinstance", result.toArray(new UserVm[result.size()]));
108-
106+
ListResponse<UserVmResponse> response = new ListResponse<>();
107+
List<UserVmResponse> vmResponses = _responseGenerator.createUserVmResponse(ResponseView.Restricted, "loadbalancerruleinstance", result.toArray(new UserVm[0]));
109108

110-
for (int i = 0; i < result.size(); i++) {
111-
vmResponses.get(i).setServiceState(serviceStates.get(i));
112-
}
109+
for (int i = 0; i < result.size(); i++) {
110+
vmResponses.get(i).setServiceState(serviceStates.get(i));
113111
}
112+
114113
response.setResponses(vmResponses);
115114
response.setResponseName(getCommandName());
116115
setResponseObject(response);
116+
return;
117+
}
117118

119+
ListResponse<LoadBalancerRuleVmMapResponse> lbRes = new ListResponse<>();
118120

119-
} else {
120-
ListResponse<LoadBalancerRuleVmMapResponse> lbRes = new ListResponse<LoadBalancerRuleVmMapResponse>();
121-
122-
List<UserVmResponse> vmResponses = new ArrayList<UserVmResponse>();
123-
List<LoadBalancerRuleVmMapResponse> listlbVmRes = new ArrayList<LoadBalancerRuleVmMapResponse>();
124-
125-
if (result != null) {
126-
vmResponses = _responseGenerator.createUserVmResponse(getResponseView(), "loadbalancerruleinstance", result.toArray(new UserVm[result.size()]));
127-
121+
List<UserVmResponse> vmResponses = _responseGenerator.createUserVmResponse(getResponseView(), "loadbalancerruleinstance", result.toArray(new UserVm[0]));
122+
List<LoadBalancerRuleVmMapResponse> lbRuleVmMapList = new ArrayList<>();
128123

129-
List<String> ipaddr = null;
124+
for (int i=0; i<result.size(); i++) {
125+
LoadBalancerRuleVmMapResponse lbRuleVmIpResponse = new LoadBalancerRuleVmMapResponse();
126+
UserVmResponse userVmResponse = vmResponses.get(i);
127+
userVmResponse.setServiceState(serviceStates.get(i));
128+
lbRuleVmIpResponse.setUserVmResponse(userVmResponse);
130129

131-
for (int i=0;i<result.size(); i++) {
132-
LoadBalancerRuleVmMapResponse lbRuleVmIpResponse = new LoadBalancerRuleVmMapResponse();
133-
vmResponses.get(i).setServiceState(serviceStates.get(i));
134-
lbRuleVmIpResponse.setUserVmResponse(vmResponses.get(i));
135-
//get vm id from the uuid
136-
VirtualMachine lbvm = _entityMgr.findByUuid(VirtualMachine.class, vmResponses.get(i).getId());
137-
lbRuleVmIpResponse.setIpAddr(_lbService.listLbVmIpAddress(getId(), lbvm.getId()));
138-
lbRuleVmIpResponse.setObjectName("lbrulevmidip");
139-
listlbVmRes.add(lbRuleVmIpResponse);
140-
}
141-
}
142-
143-
lbRes.setResponseName(getCommandName());
144-
lbRes.setResponses(listlbVmRes);
145-
setResponseObject(lbRes);
130+
VirtualMachine lbVm = _entityMgr.findByUuid(VirtualMachine.class, userVmResponse.getId());
131+
lbRuleVmIpResponse.setIpAddr(_lbService.listLbVmIpAddress(getId(), lbVm.getId()));
132+
lbRuleVmIpResponse.setObjectName("lbrulevmidip");
133+
lbRuleVmMapList.add(lbRuleVmIpResponse);
146134
}
135+
136+
lbRes.setResponseName(getCommandName());
137+
lbRes.setResponses(lbRuleVmMapList);
138+
setResponseObject(lbRes);
147139
}
148140
}

server/src/main/java/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java

Lines changed: 35 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.apache.cloudstack.framework.config.dao.ConfigurationDao;
5050
import org.apache.cloudstack.lb.ApplicationLoadBalancerRuleVO;
5151
import org.apache.cloudstack.lb.dao.ApplicationLoadBalancerRuleDao;
52+
import org.apache.cloudstack.utils.reflectiontostringbuilderutils.ReflectionToStringBuilderUtils;
5253
import org.apache.commons.collections.CollectionUtils;
5354
import org.apache.commons.lang3.StringUtils;
5455
import org.apache.log4j.Logger;
@@ -2322,33 +2323,37 @@ public Pair<List<? extends UserVm>, List<String>> listLoadBalancerInstances(List
23222323
Boolean applied = cmd.isApplied();
23232324

23242325
if (applied == null) {
2326+
s_logger.info(String.format("The [%s] parameter was not passed. Using the default value [%s].", ApiConstants.APPLIED, Boolean.TRUE));
23252327
applied = Boolean.TRUE;
23262328
}
23272329

23282330
LoadBalancerVO loadBalancer = _lbDao.findById(loadBalancerId);
23292331
if (loadBalancer == null) {
2330-
return null;
2332+
String msg = String.format("Unable to find the load balancer with ID [%s].", cmd.getId());
2333+
s_logger.error(msg);
2334+
throw new CloudRuntimeException(msg);
23312335
}
23322336

2337+
String loadBalancerAsString = ReflectionToStringBuilderUtils.reflectOnlySelectedFields(loadBalancer, "uuid", "name");
2338+
23332339
_accountMgr.checkAccess(caller, null, true, loadBalancer);
23342340

2335-
List<UserVmVO> loadBalancerInstances = new ArrayList<UserVmVO>();
2336-
List<String> serviceStates = new ArrayList<String>();
2337-
List<LoadBalancerVMMapVO> vmLoadBalancerMappings = null;
2338-
vmLoadBalancerMappings = _lb2VmMapDao.listByLoadBalancerId(loadBalancerId);
2339-
if(vmLoadBalancerMappings == null) {
2340-
String msg = "no VM Loadbalancer Mapping found";
2341+
List<UserVmVO> loadBalancerInstances = new ArrayList<>();
2342+
List<String> serviceStates = new ArrayList<>();
2343+
List<LoadBalancerVMMapVO> vmLoadBalancerMappings = _lb2VmMapDao.listByLoadBalancerId(loadBalancerId);
2344+
2345+
if (vmLoadBalancerMappings == null) {
2346+
String msg = String.format("Unable to find map of VMs related to load balancer [%s].", loadBalancerAsString);
23412347
s_logger.error(msg);
23422348
throw new CloudRuntimeException(msg);
23432349
}
2344-
Map<Long, String> vmServiceState = new HashMap<Long, String>(vmLoadBalancerMappings.size());
2345-
List<Long> appliedInstanceIdList = new ArrayList<Long>();
23462350

2347-
if ((vmLoadBalancerMappings != null) && !vmLoadBalancerMappings.isEmpty()) {
2348-
for (LoadBalancerVMMapVO vmLoadBalancerMapping : vmLoadBalancerMappings) {
2349-
appliedInstanceIdList.add(vmLoadBalancerMapping.getInstanceId());
2350-
vmServiceState.put(vmLoadBalancerMapping.getInstanceId(), vmLoadBalancerMapping.getState());
2351-
}
2351+
Map<Long, String> vmServiceState = new HashMap<>(vmLoadBalancerMappings.size());
2352+
List<Long> appliedInstanceIdList = new ArrayList<>();
2353+
2354+
for (LoadBalancerVMMapVO vmLoadBalancerMapping : vmLoadBalancerMappings) {
2355+
appliedInstanceIdList.add(vmLoadBalancerMapping.getInstanceId());
2356+
vmServiceState.put(vmLoadBalancerMapping.getInstanceId(), vmLoadBalancerMapping.getState());
23522357
}
23532358

23542359
List<UserVmVO> userVms = _vmDao.listByIds(appliedInstanceIdList);
@@ -2364,13 +2369,25 @@ public Pair<List<? extends UserVm>, List<String>> listLoadBalancerInstances(List
23642369
continue;
23652370
}
23662371

2372+
String userVmAsString = ReflectionToStringBuilderUtils.reflectOnlySelectedFields(userVm, "uuid", "name");
2373+
23672374
boolean isApplied = appliedInstanceIdList.contains(userVm.getId());
2368-
if ((isApplied && applied) || (!isApplied && !applied)) {
2369-
loadBalancerInstances.add(userVm);
2370-
serviceStates.add(vmServiceState.get(userVm.getId()));
2375+
String isAppliedMsg = isApplied ? "is applied" : "is not applied";
2376+
s_logger.debug(String.format("The user VM [%s] %s to a rule of the load balancer [%s].", userVmAsString, isAppliedMsg, loadBalancerAsString));
2377+
2378+
if (isApplied != applied) {
2379+
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 "
2380+
+ "balancer rule and the [%s] parameter was passed as [%s].", userVmAsString, isAppliedMsg, ApiConstants.APPLIED, applied));
2381+
continue;
23712382
}
2383+
2384+
loadBalancerInstances.add(userVm);
2385+
String serviceState = vmServiceState.get(userVm.getId());
2386+
s_logger.debug(String.format("Adding the service state [%s] from the user VM [%s] to the service state list.", serviceState, userVmAsString));
2387+
serviceStates.add(serviceState);
23722388
}
2373-
return new Pair<List<? extends UserVm>, List<String>>(loadBalancerInstances, serviceStates);
2389+
2390+
return new Pair<>(loadBalancerInstances, serviceStates);
23742391
}
23752392

23762393
@Override

0 commit comments

Comments
 (0)