rhtyd closed pull request #2900: network: Allow ability to disable rolling 
restart feature
URL: https://github.com/apache/cloudstack/pull/2900
 
 
   

This is a PR merged from a forked repository.
As GitHub hides the original diff on merge, it is displayed below for
the sake of provenance:

As this is a foreign pull request (from a fork), the diff is supplied
below (as it won't show otherwise due to GitHub magic):

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 82d0566169a..fa7601db27d 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 @@
     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 5b27203a7dc..55015ce68af 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 boolean restartNetwork(final Long networkId, final 
Account callerAccount,
         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 boolean areRoutersRunning(final List<? extends 
VirtualRouter> routers) {
      * @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 String getConfigComponentName() {
     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 b32498b254d..b8a797b44bc 100644
--- a/server/src/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/com/cloud/network/vpc/VpcManagerImpl.java
@@ -2458,6 +2458,13 @@ public boolean isSrcNatIpRequired(long vpcOfferingId) {
      * @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);
 


 

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to