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) {

Reply via email to