This is an automated email from the ASF dual-hosted git repository.
sureshanaparti pushed a commit to branch 4.16
in repository https://gitbox.apache.org/repos/asf/cloudstack.git
The following commit(s) were added to refs/heads/4.16 by this push:
new c1bba2a Do not restart VPC tiers with cleanup (#5873)
c1bba2a is described below
commit c1bba2a308e2df1eefb772b8ffa8a3abc2240d9b
Author: dahn <[email protected]>
AuthorDate: Mon Jan 31 13:29:26 2022 +0100
Do not restart VPC tiers with cleanup (#5873)
* do not restart VPC tiers with cleanup
* no option for cleanup for VPC tiers
* Update server/src/main/java/com/cloud/network/NetworkServiceImpl.java
* paramNames
* remove superfluent parameter
Co-authored-by: Daan Hoogland <[email protected]>
Co-authored-by: Daniel Augusto Veronezi Salvador
<[email protected]>
---
.../java/com/cloud/network/NetworkServiceImpl.java | 39 ++++++++++++----------
ui/src/config/section/network.js | 2 +-
2 files changed, 23 insertions(+), 18 deletions(-)
diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
index de97c29..de13cd7 100644
--- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
@@ -2000,12 +2000,7 @@ public class NetworkServiceImpl extends ManagerBase
implements NetworkService, C
Account caller = CallContext.current().getCallingAccount();
// Verify network id
- NetworkVO network = _networksDao.findById(networkId);
- if (network == null) {
- // see NetworkVO.java
-
- throwInvalidIdException("unable to find network with specified
id", String.valueOf(networkId), "networkId");
- }
+ NetworkVO network = getNetworkVO(networkId, "Unable to find a network
with the specified ID.");
// don't allow to delete system network
if (isNetworkSystem(network)) {
@@ -2035,10 +2030,20 @@ public class NetworkServiceImpl extends ManagerBase
implements NetworkService, C
@Override
@ActionEvent(eventType = EventTypes.EVENT_NETWORK_RESTART,
eventDescription = "restarting network", async = true)
public boolean restartNetwork(Long networkId, boolean cleanup, boolean
makeRedundant, User user) throws ConcurrentOperationException,
ResourceUnavailableException, InsufficientCapacityException {
+ NetworkVO network = getNetworkVO(networkId, "Network with specified id
doesn't exist");
+ return restartNetwork(network, cleanup, makeRedundant, user);
+ }
+
+ private NetworkVO getNetworkVO(Long networkId, String errMsgFormat) {
NetworkVO network = _networksDao.findById(networkId);
if (network == null) {
- throwInvalidIdException("Network with specified id doesn't exist",
networkId.toString(), "networkId");
+ throwInvalidIdException(errMsgFormat, networkId.toString(),
"networkId");
}
+ return network;
+ }
+
+ @ActionEvent(eventType = EventTypes.EVENT_NETWORK_RESTART,
eventDescription = "restarting network", async = true)
+ public boolean restartNetwork(NetworkVO network, boolean cleanup, boolean
makeRedundant, User user) throws ConcurrentOperationException,
ResourceUnavailableException, InsufficientCapacityException {
// Don't allow to restart network if it's not in Implemented/Setup
state
if (!(network.getState() == Network.State.Implemented ||
network.getState() == Network.State.Setup)) {
@@ -2064,11 +2069,12 @@ public class NetworkServiceImpl extends ManagerBase
implements NetworkService, C
cleanup = true;
}
- boolean success = _networkMgr.restartNetwork(networkId, callerAccount,
user, cleanup);
+ long id = network.getId();
+ boolean success = _networkMgr.restartNetwork(id, callerAccount, user,
cleanup);
if (success) {
- s_logger.debug("Network id=" + networkId + " is restarted
successfully.");
+ s_logger.debug(String.format("Network id=%d is restarted
successfully.",id));
} else {
- s_logger.warn("Network id=" + networkId + " failed to restart.");
+ s_logger.warn(String.format("Network id=%d failed to
restart.",id));
}
return success;
@@ -2078,11 +2084,14 @@ public class NetworkServiceImpl extends ManagerBase
implements NetworkService, C
@ActionEvent(eventType = EventTypes.EVENT_NETWORK_RESTART,
eventDescription = "restarting network", async = true)
public boolean restartNetwork(RestartNetworkCmd cmd) throws
ConcurrentOperationException, ResourceUnavailableException,
InsufficientCapacityException {
// This method restarts all network elements belonging to the network
and re-applies all the rules
- Long networkId = cmd.getNetworkId();
+ NetworkVO network = getNetworkVO(cmd.getNetworkId(), "Network [%s] to
restart was not found.");
boolean cleanup = cmd.getCleanup();
+ if (network.getVpcId() != null && cleanup) {
+ throwInvalidIdException("Cannot restart a VPC tier with cleanup,
please restart the whole VPC.", network.getUuid(), "network tier");
+ }
boolean makeRedundant = cmd.getMakeRedundant();
User callerUser =
_accountMgr.getActiveUser(CallContext.current().getCallingUserId());
- return restartNetwork(networkId, cleanup, makeRedundant, callerUser);
+ return restartNetwork(network, cleanup, makeRedundant, callerUser);
}
@Override
@@ -2219,11 +2228,7 @@ public class NetworkServiceImpl extends ManagerBase
implements NetworkService, C
boolean restartNetwork = false;
// verify input parameters
- final NetworkVO network = _networksDao.findById(networkId);
- if (network == null) {
- // see NetworkVO.java
- throwInvalidIdException("Specified network id doesn't exist in the
system", String.valueOf(networkId), "networkId");
- }
+ final NetworkVO network = getNetworkVO(networkId, "Specified network
id doesn't exist in the system");
//perform below validation if the network is vpc network
if (network.getVpcId() != null && networkOfferingId != null) {
diff --git a/ui/src/config/section/network.js b/ui/src/config/section/network.js
index 95c2415..43992e8 100644
--- a/ui/src/config/section/network.js
+++ b/ui/src/config/section/network.js
@@ -99,7 +99,7 @@ export default {
label: 'label.restart.network',
message: 'message.restart.network',
dataView: true,
- args: ['cleanup'],
+ args: (record) => record.vpcid == null ? ['cleanup'] : [], // if it
is a tier in a VPC and so it has a vpc do not allow "cleanup
show: (record) => record.type !== 'L2',
groupAction: true,
popup: true,