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

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


The following commit(s) were added to refs/heads/4.18 by this push:
     new f049f5409e0 server: fix dualstack ipv6 networks for vxlan (#7933)
f049f5409e0 is described below

commit f049f5409e0385fdfffec534728db863fb6f5c53
Author: Abhishek Kumar <[email protected]>
AuthorDate: Thu Sep 7 12:16:45 2023 +0530

    server: fix dualstack ipv6 networks for vxlan (#7933)
    
    Fixes #7926
    
    Signed-off-by: Abhishek Kumar <[email protected]>
---
 .../com/cloud/network/guru/VxlanGuestNetworkGuru.java  |  5 +----
 .../cloud/network/guru/ExternalGuestNetworkGuru.java   | 18 +-----------------
 .../java/com/cloud/network/guru/GuestNetworkGuru.java  | 18 ++++++++++++++++++
 3 files changed, 20 insertions(+), 21 deletions(-)

diff --git 
a/plugins/network-elements/vxlan/src/main/java/com/cloud/network/guru/VxlanGuestNetworkGuru.java
 
b/plugins/network-elements/vxlan/src/main/java/com/cloud/network/guru/VxlanGuestNetworkGuru.java
index 2f30e17e323..ce6baaa15e9 100644
--- 
a/plugins/network-elements/vxlan/src/main/java/com/cloud/network/guru/VxlanGuestNetworkGuru.java
+++ 
b/plugins/network-elements/vxlan/src/main/java/com/cloud/network/guru/VxlanGuestNetworkGuru.java
@@ -69,19 +69,16 @@ public class VxlanGuestNetworkGuru extends GuestNetworkGuru 
{
 
     @Override
     public Network design(NetworkOffering offering, DeploymentPlan plan, 
Network userSpecified, Account owner) {
-
         NetworkVO network = (NetworkVO)super.design(offering, plan, 
userSpecified, owner);
         if (network == null) {
             return null;
         }
-
         if (offering.getGuestType() == GuestType.L2 && 
network.getBroadcastUri() != null) {
             String vxlan = 
BroadcastDomainType.getValue(network.getBroadcastUri());
             network.setBroadcastUri(BroadcastDomainType.Vxlan.toUri(vxlan));
         }
         network.setBroadcastDomainType(BroadcastDomainType.Vxlan);
-
-        return network;
+        return updateNetworkDesignForIPv6IfNeeded(network, userSpecified);
     }
 
     @Override
diff --git 
a/server/src/main/java/com/cloud/network/guru/ExternalGuestNetworkGuru.java 
b/server/src/main/java/com/cloud/network/guru/ExternalGuestNetworkGuru.java
index a6b033b6ea2..471f4d11b25 100644
--- a/server/src/main/java/com/cloud/network/guru/ExternalGuestNetworkGuru.java
+++ b/server/src/main/java/com/cloud/network/guru/ExternalGuestNetworkGuru.java
@@ -36,7 +36,6 @@ import com.cloud.event.EventTypes;
 import com.cloud.event.EventVO;
 import com.cloud.exception.InsufficientAddressCapacityException;
 import com.cloud.exception.InsufficientVirtualNetworkCapacityException;
-import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.network.IpAddressManager;
 import com.cloud.network.Network;
 import com.cloud.network.Network.GuestType;
@@ -124,22 +123,7 @@ public class ExternalGuestNetworkGuru extends 
GuestNetworkGuru {
             /* In order to revert userSpecified network setup */
             config.setState(State.Allocated);
         }
-        if (userSpecified == null) {
-            return config;
-        }
-        if ((userSpecified.getIp6Cidr() == null && 
userSpecified.getIp6Gateway() != null) ||
-                    (userSpecified.getIp6Cidr() != null && 
userSpecified.getIp6Gateway() == null)) {
-            throw new InvalidParameterValueException("ip6gateway and ip6cidr 
must be specified together.");
-        }
-        if (userSpecified.getIp6Cidr() != null) {
-            config.setIp6Cidr(userSpecified.getIp6Cidr());
-            config.setIp6Gateway(userSpecified.getIp6Gateway());
-        }
-        if (userSpecified.getRouterIpv6() != null) {
-            config.setRouterIpv6(userSpecified.getRouterIpv6());
-        }
-
-        return config;
+        return updateNetworkDesignForIPv6IfNeeded(config, userSpecified);
     }
 
     @Override
diff --git a/server/src/main/java/com/cloud/network/guru/GuestNetworkGuru.java 
b/server/src/main/java/com/cloud/network/guru/GuestNetworkGuru.java
index ff9303db34b..137d1e7268b 100644
--- a/server/src/main/java/com/cloud/network/guru/GuestNetworkGuru.java
+++ b/server/src/main/java/com/cloud/network/guru/GuestNetworkGuru.java
@@ -545,4 +545,22 @@ public abstract class GuestNetworkGuru extends AdapterBase 
implements NetworkGur
     public ConfigKey<?>[] getConfigKeys() {
         return new ConfigKey<?>[]{UseSystemGuestVlans};
     }
+
+    public Network updateNetworkDesignForIPv6IfNeeded(NetworkVO network, 
Network userSpecified) {
+        if (userSpecified == null) {
+            return network;
+        }
+        if ((userSpecified.getIp6Cidr() == null && 
userSpecified.getIp6Gateway() != null) ||
+                (userSpecified.getIp6Cidr() != null && 
userSpecified.getIp6Gateway() == null)) {
+            throw new InvalidParameterValueException("ip6gateway and ip6cidr 
must be specified together.");
+        }
+        if (userSpecified.getIp6Cidr() != null) {
+            network.setIp6Cidr(userSpecified.getIp6Cidr());
+            network.setIp6Gateway(userSpecified.getIp6Gateway());
+        }
+        if (userSpecified.getRouterIpv6() != null) {
+            network.setRouterIpv6(userSpecified.getRouterIpv6());
+        }
+        return network;
+    }
 }

Reply via email to