You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by sh...@apache.org on 2022/08/24 07:53:07 UTC

[cloudstack] branch 4.17 updated: vpc: prevent sourcenat ip disassociation for an active vpc (#6664)

This is an automated email from the ASF dual-hosted git repository.

shwstppr pushed a commit to branch 4.17
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.17 by this push:
     new cd37b135a0a vpc: prevent sourcenat ip disassociation for an active vpc (#6664)
cd37b135a0a is described below

commit cd37b135a0ae9ade6e47e2e68794e94eceb20ba0
Author: Abhishek Kumar <ab...@gmail.com>
AuthorDate: Wed Aug 24 13:23:01 2022 +0530

    vpc: prevent sourcenat ip disassociation for an active vpc (#6664)
    
    Fixes #6663
    
    Source NAT IP should not be disassociated from an active vpc
---
 server/src/main/java/com/cloud/network/NetworkServiceImpl.java | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
index 39752e64a6b..a3cb967c8a5 100644
--- a/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
+++ b/server/src/main/java/com/cloud/network/NetworkServiceImpl.java
@@ -1075,7 +1075,11 @@ public class NetworkServiceImpl extends ManagerBase implements NetworkService, C
         if (networkId != null) {
             guestNetwork = getNetwork(networkId);
         }
-        if (ipVO.isSourceNat() && guestNetwork != null && guestNetwork.getState() != Network.State.Allocated) {
+        Vpc vpc = null;
+        if (ipVO.getVpcId() != null) {
+            vpc = _vpcMgr.getActiveVpc(ipVO.getVpcId());
+        }
+        if (ipVO.isSourceNat() && ((guestNetwork != null && guestNetwork.getState() != Network.State.Allocated) || vpc != null)) {
             throw new IllegalArgumentException("ip address is used for source nat purposes and can not be disassociated.");
         }