diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java index bdb928ae919d..d0d0ce289eab 100644 --- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java +++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java @@ -2735,6 +2735,12 @@ public boolean restartNetwork(NetworkVO network, boolean cleanup, boolean makeRe 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");