Skip to content

Commit ada3200

Browse files
authored
Support change snat ip (#46)
* Support updating VPC Source NAT IP * Optimize code * Update source NAT IP
1 parent 4848194 commit ada3200

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
@@ -1640,13 +1640,14 @@ private boolean checkAndUpdateRouterSourceNatIp(Vpc vpc, String sourceNatIp) {
16401640
try {
16411641
_ipAddrMgr.updateSourceNatIpAddress(requestedIp, userIps);
16421642
if (isVpcForProvider(Provider.Nsx, vpc) || isVpcForProvider(Provider.Netris, vpc)) {
1643-
VpcProvider nsxElement = (VpcProvider) _ntwkModel.getElementImplementingProvider(Provider.Nsx.getName());
1644-
if (nsxElement == null) {
1645-
return true;
1643+
boolean isForNsx = _vpcOffSvcMapDao.isProviderForVpcOffering(Provider.Nsx, vpc.getVpcOfferingId());
1644+
String providerName = isForNsx ? Provider.Nsx.getName() : Provider.Netris.getName();
1645+
VpcProvider providerElement = (VpcProvider) _ntwkModel.getElementImplementingProvider(providerName);
1646+
if (Objects.nonNull(providerElement)) {
1647+
providerElement.updateVpcSourceNatIp(vpc, requestedIp);
1648+
return false;
16461649
}
1647-
nsxElement.updateVpcSourceNatIp(vpc, requestedIp);
1648-
// The NSX source NAT IP change does not require to update the VPC VR
1649-
return false;
1650+
return true;
16501651
}
16511652
} catch (Exception e) { // pokemon exception from transaction
16521653
String msg = String.format("Update of source NAT ip to %s for network \"%s\"/%s failed due to %s",

0 commit comments

Comments
 (0)