This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch fr03-nsx-reorder-acl-rules
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 44fa33c18db499f4dabefa4dc76b895cff188c5e
Author: Nicolas Vazquez <[email protected]>
AuthorDate: Fri Feb 2 11:58:48 2024 -0300

    Fix VPC restart with cleanup (#12)
---
 engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java  |  2 ++
 .../schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java | 15 ++++++++++++---
 .../com/cloud/network/router/NicProfileHelperImpl.java    | 10 +++++++++-
 3 files changed, 23 insertions(+), 4 deletions(-)

diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java 
b/engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java
index 68f57329d77..23c26ea0718 100644
--- a/engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java
+++ b/engine/schema/src/main/java/com/cloud/vm/dao/NicDao.java
@@ -44,6 +44,8 @@ public interface NicDao extends GenericDao<NicVO, Long> {
 
     NicVO findByNetworkIdAndType(long networkId, VirtualMachine.Type vmType);
 
+    NicVO findByNetworkIdAndTypeIncludingRemoved(long networkId, 
VirtualMachine.Type vmType);
+
     NicVO findByIp4AddressAndNetworkId(String ip4Address, long networkId);
 
     NicVO findByNetworkIdAndMacAddress(long networkId, String mac);
diff --git a/engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java 
b/engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java
index 59d2417b073..3eee1d4e749 100644
--- a/engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java
+++ b/engine/schema/src/main/java/com/cloud/vm/dao/NicDaoImpl.java
@@ -176,12 +176,21 @@ public class NicDaoImpl extends GenericDaoBase<NicVO, 
Long> implements NicDao {
         return findOneIncludingRemovedBy(sc);
     }
 
-    @Override
-    public NicVO findByNetworkIdAndType(long networkId, VirtualMachine.Type 
vmType) {
+    private NicVO findByNetworkIdAndTypeInternal(long networkId, 
VirtualMachine.Type vmType, boolean includingRemoved) {
         SearchCriteria<NicVO> sc = AllFieldsSearch.create();
         sc.setParameters("network", networkId);
         sc.setParameters("vmType", vmType);
-        return findOneBy(sc);
+        return includingRemoved ? findOneIncludingRemovedBy(sc) : 
findOneBy(sc);
+    }
+
+    @Override
+    public NicVO findByNetworkIdAndType(long networkId, VirtualMachine.Type 
vmType) {
+        return findByNetworkIdAndTypeInternal(networkId, vmType, false);
+    }
+
+    @Override
+    public NicVO findByNetworkIdAndTypeIncludingRemoved(long networkId, 
VirtualMachine.Type vmType) {
+        return findByNetworkIdAndTypeInternal(networkId, vmType, true);
     }
 
     @Override
diff --git 
a/server/src/main/java/com/cloud/network/router/NicProfileHelperImpl.java 
b/server/src/main/java/com/cloud/network/router/NicProfileHelperImpl.java
index 15c8a2b4155..399019db3e2 100644
--- a/server/src/main/java/com/cloud/network/router/NicProfileHelperImpl.java
+++ b/server/src/main/java/com/cloud/network/router/NicProfileHelperImpl.java
@@ -21,6 +21,8 @@ import java.net.URI;
 
 import javax.inject.Inject;
 
+import com.cloud.vm.NicVO;
+import com.cloud.vm.VirtualMachine;
 import 
org.apache.cloudstack.network.router.deployment.RouterDeploymentDefinition;
 
 import com.cloud.network.IpAddressManager;
@@ -118,7 +120,13 @@ public class NicProfileHelperImpl implements 
NicProfileHelper {
     public NicProfile createGuestNicProfileForVpcRouter(final 
RouterDeploymentDefinition vpcRouterDeploymentDefinition, final Network 
guestNetwork) {
         final NicProfile guestNic = new NicProfile();
 
-        if (vpcRouterDeploymentDefinition.isRedundant()) {
+        if (BroadcastDomainType.NSX == guestNetwork.getBroadcastDomainType()) {
+            NicVO vrNic = 
_nicDao.findByNetworkIdAndTypeIncludingRemoved(guestNetwork.getId(), 
VirtualMachine.Type.DomainRouter);
+            if (vrNic != null) {
+                guestNic.setIPv4Address(vrNic.getIPv4Address());
+                guestNic.setIPv4Gateway(vrNic.getIPv4Gateway());
+            }
+        } else if (vpcRouterDeploymentDefinition.isRedundant()) {
             
guestNic.setIPv4Address(this.acquireGuestIpAddressForVrouterRedundant(guestNetwork));
         } else {
             guestNic.setIPv4Address(guestNetwork.getGateway());

Reply via email to