From a9da793ed3d59dec1441e13db10ef5ec0623706a Mon Sep 17 00:00:00 2001 From: Wei Zhou Date: Mon, 24 Mar 2025 12:13:10 +0100 Subject: [PATCH] server: check if redundant router is supported when restart network with makeredundant = true --- .../src/main/java/com/cloud/network/NetworkServiceImpl.java | 6 ++++++ 1 file changed, 6 insertions(+) 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");