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:
[email protected]
With regards,
Apache Git Services