diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java index 0b4e2a7db13..cbe0def4e48 100644 --- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java @@ -2739,6 +2739,12 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C Account callerAccount = _accountMgr.getActiveAccountById(user.getAccountId()); _accountMgr.checkAccess(callerAccount, AccessType.OperateEntry, true, network); if (!network.isRedundant() && makeRedundant) { + NetworkOffering networkOffering = _entityMgr.findById(NetworkOffering.class, network.getNetworkOfferingId()); + Map sourceNatCapabilities = getNetworkOfferingServiceCapabilities(networkOffering, Service.SourceNat); + String isRedundantRouterSupported = sourceNatCapabilities.get(Capability.RedundantRouter); + if (!Boolean.parseBoolean(isRedundantRouterSupported)) { + throw new InvalidParameterValueException(String.format("Redundant router is not supported by the network offering %s", networkOffering)); + } network.setRedundant(true); if (!_networksDao.update(network.getId(), network)) { throw new CloudRuntimeException("Failed to update network into a redundant one, please try again");