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 9293f5b server: fix enable/disable static nat if userdata is not
supported (#5839)
9293f5b is described below
commit 9293f5bd2764f26418333ef846b126c1f90cfd1b
Author: Wei Zhou <[email protected]>
AuthorDate: Tue Jan 11 07:52:59 2022 +0100
server: fix enable/disable static nat if userdata is not supported (#5839)
* server: fix enable/disable static nat if userdata is not supported
* Update #5839: rename applyUserData to applyUserDataIfNeeded
* Update server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java
Co-authored-by: Daniel Augusto Veronezi Salvador
<[email protected]>
---
.../java/com/cloud/network/rules/RulesManagerImpl.java | 17 ++++++++++++-----
1 file changed, 12 insertions(+), 5 deletions(-)
diff --git a/server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java
b/server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java
index b743863..b18fe10 100644
--- a/server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/rules/RulesManagerImpl.java
@@ -24,6 +24,7 @@ import java.util.Set;
import javax.inject.Inject;
+import com.cloud.exception.UnsupportedServiceException;
import com.cloud.network.element.UserDataServiceProvider;
import com.cloud.storage.VMTemplateVO;
import com.cloud.storage.dao.VMTemplateDao;
@@ -605,7 +606,7 @@ public class RulesManagerImpl extends ManagerBase
implements RulesManager, Rules
// enable static nat on the backend
s_logger.trace("Enabling static nat for ip address " +
ipAddress + " and vm id=" + vmId + " on the backend");
if (applyStaticNatForIp(ipId, false, caller, false)) {
- applyUserData(vmId, network, guestNic);
+ applyUserDataIfNeeded(vmId, network, guestNic);
performedIpAssoc = false; // ignor
unassignIPFromVpcNetwork in finally block
return true;
} else {
@@ -629,8 +630,14 @@ public class RulesManagerImpl extends ManagerBase
implements RulesManager, Rules
return false;
}
- protected void applyUserData(long vmId, Network network, Nic guestNic)
throws ResourceUnavailableException {
- UserDataServiceProvider element =
_networkModel.getUserDataUpdateProvider(network);
+ protected void applyUserDataIfNeeded(long vmId, Network network, Nic
guestNic) throws ResourceUnavailableException {
+ UserDataServiceProvider element = null;
+ try {
+ element = _networkModel.getUserDataUpdateProvider(network);
+ } catch (UnsupportedServiceException ex) {
+ s_logger.info(String.format("%s is not supported by network %s,
skipping.", Service.UserData.getName(), network));
+ return;
+ }
if (element == null) {
s_logger.error("Can't find network element for " +
Service.UserData.getName() + " provider needed for UserData update");
} else {
@@ -1144,7 +1151,7 @@ public class RulesManagerImpl extends ManagerBase
implements RulesManager, Rules
Nic guestNic = _networkModel.getNicInNetwork(vmId,
guestNetwork.getId());
if (applyStaticNatForIp(ipId, false, caller, true)) {
if (ipAddress.getState() == IpAddress.State.Releasing) {
- applyUserData(vmId, guestNetwork, guestNic);
+ applyUserDataIfNeeded(vmId, guestNetwork, guestNic);
}
} else {
success = false;
@@ -1289,7 +1296,7 @@ public class RulesManagerImpl extends ManagerBase
implements RulesManager, Rules
if (disableStaticNat(ipId, caller, ctx.getCallingUserId(), false)) {
Nic guestNic = _networkModel.getNicInNetworkIncludingRemoved(vmId,
guestNetwork.getId());
- applyUserData(vmId, guestNetwork, guestNic);
+ applyUserDataIfNeeded(vmId, guestNetwork, guestNic);
return true;
}
return false;