mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
bug 6658: fix managing load balancer instances by removing some of the 'pending' status code.
status 6658: resolved fixed
This commit is contained in:
parent
4399a051dd
commit
f4e21787b6
@ -961,6 +961,7 @@ public class NetworkManagerImpl implements NetworkManager {
|
|||||||
instanceIds.add(instanceIdParam);
|
instanceIds.add(instanceIdParam);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: We should probably lock the load balancer here to prevent multiple updates...
|
||||||
LoadBalancerVO loadBalancer = _loadBalancerDao.findById(loadBalancerId);
|
LoadBalancerVO loadBalancer = _loadBalancerDao.findById(loadBalancerId);
|
||||||
if (loadBalancer == null) {
|
if (loadBalancer == null) {
|
||||||
throw new InvalidParameterValueException("Failed to assign to load balancer " + loadBalancerId + ", the load balancer was not found.");
|
throw new InvalidParameterValueException("Failed to assign to load balancer " + loadBalancerId + ", the load balancer was not found.");
|
||||||
@ -995,9 +996,12 @@ public class NetworkManagerImpl implements NetworkManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
List<Long> finalInstanceIds = new ArrayList<Long>();
|
||||||
for (Long instanceId : instanceIds) {
|
for (Long instanceId : instanceIds) {
|
||||||
if (mappedInstanceIds.contains(instanceId)) {
|
if (mappedInstanceIds.contains(instanceId)) {
|
||||||
continue;
|
continue;
|
||||||
|
} else {
|
||||||
|
finalInstanceIds.add(instanceId);
|
||||||
}
|
}
|
||||||
|
|
||||||
UserVmVO userVm = _vmDao.findById(instanceId);
|
UserVmVO userVm = _vmDao.findById(instanceId);
|
||||||
@ -1125,6 +1129,14 @@ public class NetworkManagerImpl implements NetworkManager {
|
|||||||
}
|
}
|
||||||
if ((updatedRules != null) && (updatedRules.size() == firewallRulesToApply.size())) {
|
if ((updatedRules != null) && (updatedRules.size() == firewallRulesToApply.size())) {
|
||||||
// flag the instances as mapped to the load balancer
|
// flag the instances as mapped to the load balancer
|
||||||
|
for (Long addedInstanceId : finalInstanceIds) {
|
||||||
|
LoadBalancerVMMapVO mappedVM = new LoadBalancerVMMapVO(loadBalancerId, addedInstanceId);
|
||||||
|
_loadBalancerVMMapDao.persist(mappedVM);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* We used to add these instances as pending when the API command is received on the server, and once they were applied,
|
||||||
|
* the pending status was removed. In the 2.2 API framework, this is no longer done and instead the new mappings just
|
||||||
|
* need to be persisted
|
||||||
List<LoadBalancerVMMapVO> pendingMappedVMs = _loadBalancerVMMapDao.listByLoadBalancerId(loadBalancerId, true);
|
List<LoadBalancerVMMapVO> pendingMappedVMs = _loadBalancerVMMapDao.listByLoadBalancerId(loadBalancerId, true);
|
||||||
for (LoadBalancerVMMapVO pendingMappedVM : pendingMappedVMs) {
|
for (LoadBalancerVMMapVO pendingMappedVM : pendingMappedVMs) {
|
||||||
if (instanceIds.contains(pendingMappedVM.getInstanceId())) {
|
if (instanceIds.contains(pendingMappedVM.getInstanceId())) {
|
||||||
@ -1133,6 +1145,7 @@ public class NetworkManagerImpl implements NetworkManager {
|
|||||||
_loadBalancerVMMapDao.update(pendingMappedVM.getId(), pendingMappedVMForUpdate);
|
_loadBalancerVMMapDao.update(pendingMappedVM.getId(), pendingMappedVMForUpdate);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
for (FirewallRuleVO updatedRule : updatedRules) {
|
for (FirewallRuleVO updatedRule : updatedRules) {
|
||||||
if (updatedRule.getId() == null) {
|
if (updatedRule.getId() == null) {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user