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

pearl11594 pushed a commit to branch netris-integration-upstream
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit d62b201afd947ddebb3a322e4ea3f54fdbd5d5e1
Author: Pearl Dsilva <[email protected]>
AuthorDate: Tue Feb 4 12:20:54 2025 -0500

    Support change snat ip (#46)
    
    * Support updating VPC Source NAT IP
    
    * Optimize code
    
    * Update source NAT IP
---
 .../java/org/apache/cloudstack/service/NetrisElement.java   |  2 +-
 .../org/apache/cloudstack/service/NetrisServiceImpl.java    |  3 ++-
 .../src/main/java/com/cloud/network/vpc/VpcManagerImpl.java | 13 +++++++------
 3 files changed, 10 insertions(+), 8 deletions(-)

diff --git 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java
 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java
index 7ffa3363046..0f25d216719 100644
--- 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java
+++ 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java
@@ -438,7 +438,7 @@ public class NetrisElement extends AdapterBase implements 
DhcpServiceProvider, D
 
     @Override
     public boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address) {
-        return true;
+        return netrisService.updateVpcSourceNatIp(vpc, address);
     }
 
     @Override
diff --git 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java
 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java
index 9a4f5d972ab..337ea849dcb 100644
--- 
a/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java
+++ 
b/plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java
@@ -292,7 +292,8 @@ public class NetrisServiceImpl implements NetrisService, 
Configurable {
 
         logger.debug("Updating the source NAT IP for Netris VPC {} to IP: {}", 
vpc.getName(), address.getAddress().addr());
 
-        CreateOrUpdateNetrisNatCommand cmd = new 
CreateOrUpdateNetrisNatCommand(zoneId, accountId, domainId, vpcName, vpcId, 
null, null, true, address.getAddress().addr());
+        CreateOrUpdateNetrisNatCommand cmd = new 
CreateOrUpdateNetrisNatCommand(zoneId, accountId, domainId, vpcName, vpcId, 
null, null, true, vpc.getCidr());
+        cmd.setNatIp(address.getAddress().addr());
         cmd.setNatRuleType("SNAT");
         String snatRuleName = 
NetrisResourceObjectUtils.retrieveNetrisResourceObjectName(cmd, 
NetrisResourceObjectUtils.NetrisObjectType.SNAT, String.valueOf(vpcId));
         cmd.setNatRuleName(snatRuleName);
diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java 
b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
index c47e9b5970b..dcdd1869159 100644
--- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
@@ -1657,13 +1657,14 @@ public class VpcManagerImpl extends ManagerBase 
implements VpcManager, VpcProvis
             try {
                 _ipAddrMgr.updateSourceNatIpAddress(requestedIp, userIps);
                 if (isVpcForProvider(Provider.Nsx, vpc) || 
isVpcForProvider(Provider.Netris, vpc)) {
-                    VpcProvider nsxElement = (VpcProvider) 
_ntwkModel.getElementImplementingProvider(Provider.Nsx.getName());
-                    if (nsxElement == null) {
-                        return true;
+                    boolean isForNsx = 
_vpcOffSvcMapDao.isProviderForVpcOffering(Provider.Nsx, vpc.getVpcOfferingId());
+                    String providerName = isForNsx ? Provider.Nsx.getName() : 
Provider.Netris.getName();
+                    VpcProvider providerElement = (VpcProvider) 
_ntwkModel.getElementImplementingProvider(providerName);
+                    if (Objects.nonNull(providerElement)) {
+                        providerElement.updateVpcSourceNatIp(vpc, requestedIp);
+                        return false;
                     }
-                    nsxElement.updateVpcSourceNatIp(vpc, requestedIp);
-                    // The NSX source NAT IP change does not require to update 
the VPC VR
-                    return false;
+                    return true;
                 }
             } catch (Exception e) { // pokemon exception from transaction
                 String msg = String.format("Update of source NAT ip to %s for 
network \"%s\"/%s failed due to %s",

Reply via email to