Skip to content

Commit c7626eb

Browse files
committed
Merge remote-tracking branch 'apache/4.18' into 4.19
2 parents c25264b + a5508ac commit c7626eb

File tree

2 files changed

+56
-19
lines changed

2 files changed

+56
-19
lines changed

server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2546,25 +2546,7 @@ protected void finalizeNetworkRulesForNetwork(final Commands cmds, final DomainR
25462546
}
25472547
}
25482548

2549-
final List<LoadBalancerVO> lbs = _loadBalancerDao.listByNetworkIdAndScheme(guestNetworkId, Scheme.Public);
2550-
final List<LoadBalancingRule> lbRules = new ArrayList<LoadBalancingRule>();
2551-
if (_networkModel.isProviderSupportServiceInNetwork(guestNetworkId, Service.Lb, provider)) {
2552-
// Re-apply load balancing rules
2553-
for (final LoadBalancerVO lb : lbs) {
2554-
final List<LbDestination> dstList = _lbMgr.getExistingDestinations(lb.getId());
2555-
final List<LbStickinessPolicy> policyList = _lbMgr.getStickinessPolicies(lb.getId());
2556-
final List<LbHealthCheckPolicy> hcPolicyList = _lbMgr.getHealthCheckPolicies(lb.getId());
2557-
final Ip sourceIp = _networkModel.getPublicIpAddress(lb.getSourceIpAddressId()).getAddress();
2558-
final LbSslCert sslCert = _lbMgr.getLbSslCert(lb.getId());
2559-
final LoadBalancingRule loadBalancing = new LoadBalancingRule(lb, dstList, policyList, hcPolicyList, sourceIp, sslCert, lb.getLbProtocol());
2560-
lbRules.add(loadBalancing);
2561-
}
2562-
}
2563-
2564-
s_logger.debug("Found " + lbRules.size() + " load balancing rule(s) to apply as a part of domR " + router + " start.");
2565-
if (!lbRules.isEmpty()) {
2566-
_commandSetupHelper.createApplyLoadBalancingRulesCommands(lbRules, router, cmds, guestNetworkId);
2567-
}
2549+
createApplyLoadBalancingRulesCommands(cmds, router, provider, guestNetworkId);
25682550
}
25692551
// Reapply dhcp and dns configuration.
25702552
final Network guestNetwork = _networkDao.findById(guestNetworkId);
@@ -2591,6 +2573,35 @@ protected void finalizeNetworkRulesForNetwork(final Commands cmds, final DomainR
25912573
}
25922574
}
25932575

2576+
private void createApplyLoadBalancingRulesCommands(final Commands cmds, final DomainRouterVO router, final Provider provider, final Long guestNetworkId) {
2577+
if (router.getVpcId() != null) {
2578+
return;
2579+
}
2580+
final List<LoadBalancerVO> lbs = _loadBalancerDao.listByNetworkIdAndScheme(guestNetworkId, Scheme.Public);
2581+
final List<LoadBalancingRule> lbRules = new ArrayList<LoadBalancingRule>();
2582+
if (_networkModel.isProviderSupportServiceInNetwork(guestNetworkId, Service.Lb, provider)) {
2583+
// Re-apply load balancing rules
2584+
createLoadBalancingRulesList(lbRules, lbs);
2585+
}
2586+
2587+
s_logger.debug("Found " + lbRules.size() + " load balancing rule(s) to apply as a part of domR " + router + " start.");
2588+
if (!lbRules.isEmpty()) {
2589+
_commandSetupHelper.createApplyLoadBalancingRulesCommands(lbRules, router, cmds, guestNetworkId);
2590+
}
2591+
}
2592+
2593+
protected void createLoadBalancingRulesList(List<LoadBalancingRule> lbRules, final List<LoadBalancerVO> lbs) {
2594+
for (final LoadBalancerVO lb : lbs) {
2595+
final List<LbDestination> dstList = _lbMgr.getExistingDestinations(lb.getId());
2596+
final List<LbStickinessPolicy> policyList = _lbMgr.getStickinessPolicies(lb.getId());
2597+
final List<LbHealthCheckPolicy> hcPolicyList = _lbMgr.getHealthCheckPolicies(lb.getId());
2598+
final Ip sourceIp = _networkModel.getPublicIpAddress(lb.getSourceIpAddressId()).getAddress();
2599+
final LbSslCert sslCert = _lbMgr.getLbSslCert(lb.getId());
2600+
final LoadBalancingRule loadBalancing = new LoadBalancingRule(lb, dstList, policyList, hcPolicyList, sourceIp, sslCert, lb.getLbProtocol());
2601+
lbRules.add(loadBalancing);
2602+
}
2603+
}
2604+
25942605
private void createDefaultEgressFirewallRule(final List<FirewallRule> rules, final long networkId) {
25952606
final NetworkVO network = _networkDao.findById(networkId);
25962607
final NetworkOfferingVO offering = _networkOfferingDao.findById(network.getNetworkOfferingId());

server/src/main/java/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,10 +64,14 @@
6464
import com.cloud.network.VirtualRouterProvider;
6565
import com.cloud.network.addr.PublicIp;
6666
import com.cloud.network.dao.IPAddressVO;
67+
import com.cloud.network.dao.LoadBalancerDao;
68+
import com.cloud.network.dao.LoadBalancerVO;
6769
import com.cloud.network.dao.MonitoringServiceVO;
6870
import com.cloud.network.dao.NetworkVO;
6971
import com.cloud.network.dao.RemoteAccessVpnVO;
7072
import com.cloud.network.dao.Site2SiteVpnConnectionVO;
73+
import com.cloud.network.lb.LoadBalancingRule;
74+
import com.cloud.network.rules.LoadBalancerContainer.Scheme;
7175
import com.cloud.network.vpc.NetworkACLItemDao;
7276
import com.cloud.network.vpc.NetworkACLItemVO;
7377
import com.cloud.network.vpc.NetworkACLManager;
@@ -129,6 +133,8 @@ public class VpcVirtualNetworkApplianceManagerImpl extends VirtualNetworkApplian
129133
private EntityManager _entityMgr;
130134
@Inject
131135
protected HypervisorGuruManager _hvGuruMgr;
136+
@Inject
137+
private LoadBalancerDao loadBalancerDao;
132138

133139
@Override
134140
public boolean configure(final String name, final Map<String, Object> params) throws ConfigurationException {
@@ -522,12 +528,32 @@ public boolean finalizeCommandsOnStart(final Commands cmds, final VirtualMachine
522528
cmds.addCommand(finishCmd);
523529
}
524530

531+
createApplyLoadBalancingRulesCommandsForVpc(cmds, domainRouterVO, provider, guestNics);
532+
525533
// Add network usage commands
526534
cmds.addCommands(usageCmds);
527535
}
528536
return true;
529537
}
530538

539+
private void createApplyLoadBalancingRulesCommandsForVpc(final Commands cmds, DomainRouterVO domainRouterVO, Provider provider,
540+
List<Pair<Nic, Network>> guestNics) {
541+
final List<LoadBalancerVO> lbs = loadBalancerDao.listByVpcIdAndScheme(domainRouterVO.getVpcId(), Scheme.Public);
542+
final List<LoadBalancingRule> lbRules = new ArrayList<>();
543+
createLoadBalancingRulesList(lbRules, lbs);
544+
s_logger.debug("Found " + lbRules.size() + " load balancing rule(s) to apply as a part of VPC VR " + domainRouterVO + " start.");
545+
if (!lbRules.isEmpty()) {
546+
for (final Pair<Nic, Network> nicNtwk : guestNics) {
547+
final Nic guestNic = nicNtwk.first();
548+
final long guestNetworkId = guestNic.getNetworkId();
549+
if (_networkModel.isProviderSupportServiceInNetwork(guestNetworkId, Service.Lb, provider)) {
550+
_commandSetupHelper.createApplyLoadBalancingRulesCommands(lbRules, domainRouterVO, cmds, guestNetworkId);
551+
break;
552+
}
553+
}
554+
}
555+
}
556+
531557
@Override
532558
protected List<MonitoringServiceVO> getDefaultServicesToMonitor(NetworkVO network) {
533559
if (network.getTrafficType() == TrafficType.Public) {

0 commit comments

Comments
 (0)