Skip to content

Commit ebafe47

Browse files
committed
Revert "framework: do not configure Source NAT when implement a network"
This reverts commit 725854429beca321700488ccc37a1e9c1561d804.
1 parent 511c407 commit ebafe47

1 file changed

Lines changed: 25 additions & 0 deletions

File tree

framework/extensions/src/main/java/org/apache/cloudstack/framework/extensions/network/NetworkExtensionElement.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import com.cloud.dc.dao.VlanDao;
3838
import com.cloud.deploy.DeployDestination;
3939
import com.cloud.exception.ConcurrentOperationException;
40+
import com.cloud.exception.InsufficientAddressCapacityException;
4041
import com.cloud.exception.InsufficientCapacityException;
4142
import com.cloud.exception.ResourceUnavailableException;
4243
import com.cloud.host.dao.HostDao;
@@ -54,6 +55,7 @@
5455
import com.cloud.network.dao.PhysicalNetworkVO;
5556
import com.cloud.network.PhysicalNetworkServiceProvider;
5657
import com.cloud.network.PublicIpAddress;
58+
import com.cloud.network.addr.PublicIp;
5759
import com.cloud.network.dao.FirewallRulesDao;
5860
import com.cloud.network.dao.IPAddressDao;
5961
import com.cloud.network.dao.IPAddressVO;
@@ -444,6 +446,29 @@ public boolean implement(Network network, NetworkOffering offering, DeployDestin
444446
return false;
445447
}
446448

449+
// Step 3: Configure source NAT if supported.
450+
if (canHandle(network, Service.SourceNat)) {
451+
try {
452+
Account owner = context != null ? context.getAccount() : null;
453+
PublicIp sourceNatIp = null;
454+
if (owner != null) {
455+
sourceNatIp = ipAddressManager.assignSourceNatIpAddressToGuestNetwork(owner, network);
456+
}
457+
if (sourceNatIp == null) {
458+
PublicIpAddress existingIp = networkModel.getSourceNatIpAddressForGuestNetwork(owner, network);
459+
if (existingIp != null) {
460+
applyIps(network, List.of(existingIp), Set.of(Service.SourceNat));
461+
}
462+
} else {
463+
applyIps(network, List.of(sourceNatIp), Set.of(Service.SourceNat));
464+
}
465+
} catch (InsufficientAddressCapacityException e) {
466+
logger.warn("Could not assign source NAT IP for network {}: {}", network.getId(), e.getMessage());
467+
} catch (Exception e) {
468+
logger.warn("Failed to configure source NAT IP for network {}: {}", network.getId(), e.getMessage(), e);
469+
}
470+
}
471+
447472
return true;
448473
}
449474

0 commit comments

Comments
 (0)