Skip to content

Commit 003e6e4

Browse files
committed
Support change snat ip (#46)
* Support updating VPC Source NAT IP * Optimize code * Update source NAT IP
1 parent bed8a3c commit 003e6e4

File tree

3 files changed

+10
-8
lines changed

3 files changed

+10
-8
lines changed

plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisElement.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -438,7 +438,7 @@ public boolean applyACLItemsToPrivateGw(PrivateGateway gateway, List<? extends N
438438

439439
@Override
440440
public boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address) {
441-
return true;
441+
return netrisService.updateVpcSourceNatIp(vpc, address);
442442
}
443443

444444
@Override

plugins/network-elements/netris/src/main/java/org/apache/cloudstack/service/NetrisServiceImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -292,7 +292,8 @@ public boolean updateVpcSourceNatIp(Vpc vpc, IpAddress address) {
292292

293293
logger.debug("Updating the source NAT IP for Netris VPC {} to IP: {}", vpc.getName(), address.getAddress().addr());
294294

295-
CreateOrUpdateNetrisNatCommand cmd = new CreateOrUpdateNetrisNatCommand(zoneId, accountId, domainId, vpcName, vpcId, null, null, true, address.getAddress().addr());
295+
CreateOrUpdateNetrisNatCommand cmd = new CreateOrUpdateNetrisNatCommand(zoneId, accountId, domainId, vpcName, vpcId, null, null, true, vpc.getCidr());
296+
cmd.setNatIp(address.getAddress().addr());
296297
cmd.setNatRuleType("SNAT");
297298
String snatRuleName = NetrisResourceObjectUtils.retrieveNetrisResourceObjectName(cmd, NetrisResourceObjectUtils.NetrisObjectType.SNAT, String.valueOf(vpcId));
298299
cmd.setNatRuleName(snatRuleName);

server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1657,13 +1657,14 @@ private boolean checkAndUpdateRouterSourceNatIp(Vpc vpc, String sourceNatIp) {
16571657
try {
16581658
_ipAddrMgr.updateSourceNatIpAddress(requestedIp, userIps);
16591659
if (isVpcForProvider(Provider.Nsx, vpc) || isVpcForProvider(Provider.Netris, vpc)) {
1660-
VpcProvider nsxElement = (VpcProvider) _ntwkModel.getElementImplementingProvider(Provider.Nsx.getName());
1661-
if (nsxElement == null) {
1662-
return true;
1660+
boolean isForNsx = _vpcOffSvcMapDao.isProviderForVpcOffering(Provider.Nsx, vpc.getVpcOfferingId());
1661+
String providerName = isForNsx ? Provider.Nsx.getName() : Provider.Netris.getName();
1662+
VpcProvider providerElement = (VpcProvider) _ntwkModel.getElementImplementingProvider(providerName);
1663+
if (Objects.nonNull(providerElement)) {
1664+
providerElement.updateVpcSourceNatIp(vpc, requestedIp);
1665+
return false;
16631666
}
1664-
nsxElement.updateVpcSourceNatIp(vpc, requestedIp);
1665-
// The NSX source NAT IP change does not require to update the VPC VR
1666-
return false;
1667+
return true;
16671668
}
16681669
} catch (Exception e) { // pokemon exception from transaction
16691670
String msg = String.format("Update of source NAT ip to %s for network \"%s\"/%s failed due to %s",

0 commit comments

Comments
 (0)