You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by pe...@apache.org on 2025/02/24 22:37:03 UTC
(cloudstack) 40/46: Support change snat ip (#46)
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 <pe...@gmail.com>
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",