This is an automated email from the ASF dual-hosted git repository. rohit pushed a commit to branch 4.11 in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.11 by this push: new 5ce14df network: Allow ability to disable rolling restart feature (#2900) 5ce14df is described below commit 5ce14df31fa0477c1709d49c0a7b61e0f5c0ea7c Author: Rohit Yadav <ro...@apache.org> AuthorDate: Wed Oct 17 20:27:08 2018 +0530 network: Allow ability to disable rolling restart feature (#2900) This adds a global setting for admins who may not want the rolling restart of routers or are seeing any issues around it. In future, this setting may be removed. Signed-off-by: Rohit Yadav <rohit.ya...@shapeblue.com> --- .../orchestration/service/NetworkOrchestrationService.java | 3 +++ .../cloudstack/engine/orchestration/NetworkOrchestrator.java | 12 ++++++++++-- server/src/com/cloud/network/vpc/VpcManagerImpl.java | 7 +++++++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/engine/api/src/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java b/engine/api/src/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java index 82d0566..fa7601d 100644 --- a/engine/api/src/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java +++ b/engine/api/src/org/apache/cloudstack/engine/orchestration/service/NetworkOrchestrationService.java @@ -93,6 +93,9 @@ public interface NetworkOrchestrationService { ConfigKey<Boolean> ForgedTransmits = new ConfigKey<Boolean>("Advanced", Boolean.class, "network.forged.transmits", "true", "Whether to allow or deny forged transmits on nics for applicable network elements such as for vswitch/dvswitch portgroups.", true); + ConfigKey<Boolean> RollingRestartEnabled = new ConfigKey<Boolean>("Advanced", Boolean.class, "network.rolling.restart", "true", + "Whether to allow or deny rolling restart of network routers.", true); + List<? extends Network> setupNetwork(Account owner, NetworkOffering offering, DeploymentPlan plan, String name, String displayText, boolean isDefault) throws ConcurrentOperationException; diff --git a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java index 5b27203..55015ce 100644 --- a/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java +++ b/engine/orchestration/src/org/apache/cloudstack/engine/orchestration/NetworkOrchestrator.java @@ -2860,7 +2860,7 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra s_logger.debug("Implementing the network " + network + " elements and resources as a part of network restart without cleanup"); try { implementNetworkElementsAndResources(dest, context, network, offering); - setRestartRequired(network, true); + setRestartRequired(network, false); return true; } catch (final Exception ex) { s_logger.warn("Failed to implement network " + network + " elements and resources as a part of network restart due to ", ex); @@ -2927,6 +2927,14 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra * @throws InsufficientCapacityException */ private boolean rollingRestartRouters(final NetworkVO network, final NetworkOffering offering, final DeployDestination dest, final ReservationContext context) throws ResourceUnavailableException, ConcurrentOperationException, InsufficientCapacityException { + if (!NetworkOrchestrationService.RollingRestartEnabled.value()) { + if (shutdownNetworkElementsAndResources(context, true, network)) { + implementNetworkElementsAndResources(dest, context, network, offering); + return true; + } + s_logger.debug("Failed to shutdown the network elements and resources as a part of network restart: " + network.getState()); + return false; + } s_logger.debug("Performing rolling restart of routers of network " + network); destroyExpendableRouters(_routerDao.findByNetwork(network.getId()), context); @@ -3831,6 +3839,6 @@ public class NetworkOrchestrator extends ManagerBase implements NetworkOrchestra public ConfigKey<?>[] getConfigKeys() { return new ConfigKey<?>[] {NetworkGcWait, NetworkGcInterval, NetworkLockTimeout, GuestDomainSuffix, NetworkThrottlingRate, MinVRVersion, - PromiscuousMode, MacAddressChanges, ForgedTransmits}; + PromiscuousMode, MacAddressChanges, ForgedTransmits, RollingRestartEnabled}; } } diff --git a/server/src/com/cloud/network/vpc/VpcManagerImpl.java b/server/src/com/cloud/network/vpc/VpcManagerImpl.java index b32498b..b8a797b 100644 --- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java +++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java @@ -2458,6 +2458,13 @@ public class VpcManagerImpl extends ManagerBase implements VpcManager, VpcProvis * @throws InsufficientCapacityException */ private boolean rollingRestartVpc(final Vpc vpc, final ReservationContext context) throws ResourceUnavailableException, ConcurrentOperationException, InsufficientCapacityException { + if (!NetworkOrchestrationService.RollingRestartEnabled.value()) { + if (shutdownVpc(vpc.getId())) { + return startVpc(vpc.getId(), false); + } + s_logger.warn("Failed to shutdown vpc as a part of VPC " + vpc + " restart process"); + return false; + } s_logger.debug("Performing rolling restart of routers of VPC " + vpc); _ntwkMgr.destroyExpendableRouters(_routerDao.listByVpcId(vpc.getId()), context);