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;
+ }
}