This is an automated email from the ASF dual-hosted git repository. weizhou pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit 3fd5680d9a1a6591e9aa209abc44e3b40a3d9e54 Merge: 2959cc67652 c7626ebfd63 Author: Wei Zhou <[email protected]> AuthorDate: Mon Apr 8 14:16:33 2024 +0200 Merge remote-tracking branch 'apache/4.19' .../router/VirtualNetworkApplianceManagerImpl.java | 49 +++++++++++++--------- .../VpcVirtualNetworkApplianceManagerImpl.java | 26 ++++++++++++ 2 files changed, 56 insertions(+), 19 deletions(-) diff --cc server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java index a5c5c8a3e08,19d8fc72b29..b9f1350615b --- a/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/router/VirtualNetworkApplianceManagerImpl.java @@@ -2589,6 -2573,35 +2571,35 @@@ Configurable, StateListener<VirtualMach } } + private void createApplyLoadBalancingRulesCommands(final Commands cmds, final DomainRouterVO router, final Provider provider, final Long guestNetworkId) { + if (router.getVpcId() != null) { + return; + } + final List<LoadBalancerVO> lbs = _loadBalancerDao.listByNetworkIdAndScheme(guestNetworkId, Scheme.Public); + final List<LoadBalancingRule> lbRules = new ArrayList<LoadBalancingRule>(); + if (_networkModel.isProviderSupportServiceInNetwork(guestNetworkId, Service.Lb, provider)) { + // Re-apply load balancing rules + createLoadBalancingRulesList(lbRules, lbs); + } + - s_logger.debug("Found " + lbRules.size() + " load balancing rule(s) to apply as a part of domR " + router + " start."); ++ logger.debug("Found " + lbRules.size() + " load balancing rule(s) to apply as a part of domR " + router + " start."); + if (!lbRules.isEmpty()) { + _commandSetupHelper.createApplyLoadBalancingRulesCommands(lbRules, router, cmds, guestNetworkId); + } + } + + protected void createLoadBalancingRulesList(List<LoadBalancingRule> lbRules, final List<LoadBalancerVO> lbs) { + for (final LoadBalancerVO lb : lbs) { + final List<LbDestination> dstList = _lbMgr.getExistingDestinations(lb.getId()); + final List<LbStickinessPolicy> policyList = _lbMgr.getStickinessPolicies(lb.getId()); + final List<LbHealthCheckPolicy> hcPolicyList = _lbMgr.getHealthCheckPolicies(lb.getId()); + final Ip sourceIp = _networkModel.getPublicIpAddress(lb.getSourceIpAddressId()).getAddress(); + final LbSslCert sslCert = _lbMgr.getLbSslCert(lb.getId()); + final LoadBalancingRule loadBalancing = new LoadBalancingRule(lb, dstList, policyList, hcPolicyList, sourceIp, sslCert, lb.getLbProtocol()); + lbRules.add(loadBalancing); + } + } + private void createDefaultEgressFirewallRule(final List<FirewallRule> rules, final long networkId) { final NetworkVO network = _networkDao.findById(networkId); final NetworkOfferingVO offering = _networkOfferingDao.findById(network.getNetworkOfferingId()); diff --cc server/src/main/java/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java index b22343081ff,1c1dc568b2c..f45386ca8a7 --- a/server/src/main/java/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java +++ b/server/src/main/java/com/cloud/network/router/VpcVirtualNetworkApplianceManagerImpl.java @@@ -131,9 -134,7 +135,11 @@@ public class VpcVirtualNetworkAppliance @Inject protected HypervisorGuruManager _hvGuruMgr; @Inject + protected NetworkDao networkDao; + @Inject + protected VpcDao vpcDao; ++ @Inject + private LoadBalancerDao loadBalancerDao; @Override public boolean configure(final String name, final Map<String, Object> params) throws ConfigurationException { @@@ -537,6 -536,24 +545,24 @@@ return true; } + private void createApplyLoadBalancingRulesCommandsForVpc(final Commands cmds, DomainRouterVO domainRouterVO, Provider provider, + List<Pair<Nic, Network>> guestNics) { + final List<LoadBalancerVO> lbs = loadBalancerDao.listByVpcIdAndScheme(domainRouterVO.getVpcId(), Scheme.Public); + final List<LoadBalancingRule> lbRules = new ArrayList<>(); + createLoadBalancingRulesList(lbRules, lbs); - s_logger.debug("Found " + lbRules.size() + " load balancing rule(s) to apply as a part of VPC VR " + domainRouterVO + " start."); ++ logger.debug("Found " + lbRules.size() + " load balancing rule(s) to apply as a part of VPC VR " + domainRouterVO + " start."); + if (!lbRules.isEmpty()) { + for (final Pair<Nic, Network> nicNtwk : guestNics) { + final Nic guestNic = nicNtwk.first(); + final long guestNetworkId = guestNic.getNetworkId(); + if (_networkModel.isProviderSupportServiceInNetwork(guestNetworkId, Service.Lb, provider)) { + _commandSetupHelper.createApplyLoadBalancingRulesCommands(lbRules, domainRouterVO, cmds, guestNetworkId); + break; + } + } + } + } + @Override protected List<MonitoringServiceVO> getDefaultServicesToMonitor(NetworkVO network) { if (network.getTrafficType() == TrafficType.Public) {
