From 18653f6cd6a899c61a51057a717d0027717fd0a5 Mon Sep 17 00:00:00 2001 From: Will Stevens Date: Thu, 4 Sep 2014 13:02:12 -0400 Subject: [PATCH] CLOUDSTACK-7418 and CLOUDSTACK-7488 - Fixed LB removal if cert is applied --- .../cloud/network/lb/LoadBalancingRulesManagerImpl.java | 9 +++++++++ .../apache/cloudstack/network/lb/CertServiceImpl.java | 4 +++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java index 52233de75b4..a28d108b0a8 100755 --- a/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java +++ b/server/src/com/cloud/network/lb/LoadBalancingRulesManagerImpl.java @@ -1478,6 +1478,15 @@ public class LoadBalancingRulesManagerImpl extends ManagerBase implements final LoadBalancerVO lb = _lbDao.findById(loadBalancerId); FirewallRule.State backupState = lb.getState(); + // remove any ssl certs associated with this LB rule before trying to delete it. + LoadBalancerCertMapVO lbCertMap = _lbCertMapDao.findByLbRuleId(loadBalancerId); + if (lbCertMap != null) { + boolean removeResult = removeCertFromLoadBalancer(loadBalancerId); + if (!removeResult) { + throw new CloudRuntimeException("Unable to remove certificate from load balancer rule " + loadBalancerId); + } + } + List backupMaps = Transaction.execute(new TransactionCallback>() { @Override public List doInTransaction(TransactionStatus status) { diff --git a/server/src/org/apache/cloudstack/network/lb/CertServiceImpl.java b/server/src/org/apache/cloudstack/network/lb/CertServiceImpl.java index c2c155d0b8c..69fe293d36e 100644 --- a/server/src/org/apache/cloudstack/network/lb/CertServiceImpl.java +++ b/server/src/org/apache/cloudstack/network/lb/CertServiceImpl.java @@ -279,7 +279,9 @@ public class CertServiceImpl implements CertService { List lbIds = new ArrayList(); for (LoadBalancerCertMapVO mapVO : lbCertMap) { LoadBalancer lb = _entityMgr.findById(LoadBalancerVO.class, mapVO.getLbId()); - lbIds.add(lb.getUuid()); + if (lb != null) { + lbIds.add(lb.getUuid()); + } } response.setLbIds(lbIds); }