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",
