Skip to content

Commit f88b498

Browse files
committed
Fix VPC/network offering service list for external network providers in Routed mode (#32)
* Fix network offering service list for external network providers in Routed mode * filter out unsupported services based on network mode * fix supported services list for vpc offering for external providers in Routed mode
1 parent 7df2155 commit f88b498

File tree

3 files changed

+44
-25
lines changed

3 files changed

+44
-25
lines changed

api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -289,11 +289,14 @@ public List<String> getSupportedServices() {
289289
List<String> services = new ArrayList<>(List.of(
290290
Dhcp.getName(),
291291
Dns.getName(),
292-
StaticNat.getName(),
293-
SourceNat.getName(),
294-
PortForwarding.getName(),
295292
UserData.getName()
296293
));
294+
if (NetworkOffering.NetworkMode.NATTED.name().equalsIgnoreCase(getNetworkMode())) {
295+
services.addAll(Arrays.asList(
296+
StaticNat.getName(),
297+
SourceNat.getName(),
298+
PortForwarding.getName()));
299+
}
297300
if (getNsxSupportsLbService()) {
298301
services.add(Lb.getName());
299302
}
@@ -405,8 +408,9 @@ private void getServiceProviderMapForExternalProvider(Map<String, List<String>>
405408
continue;
406409
if (routerSupported.contains(service))
407410
serviceProviderMap.put(service, List.of(routerProvider));
408-
else
409-
serviceProviderMap.put(service, List.of(provider));
411+
else if (NetworkOffering.NetworkMode.NATTED.name().equalsIgnoreCase(getNetworkMode()) || NetworkACL.getName().equalsIgnoreCase(service)) {
412+
serviceProviderMap.put(service, List.of(provider));
413+
}
410414
if (!getNsxSupportsLbService()) {
411415
serviceProviderMap.remove(Lb.getName());
412416
}

api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,12 @@
2626
import java.util.Map;
2727
import java.util.Set;
2828
import java.util.stream.Collectors;
29+
import java.util.stream.Stream;
2930

3031
import com.cloud.exception.InvalidParameterValueException;
3132
import com.cloud.network.Network;
3233
import com.cloud.network.VirtualRouterProvider;
34+
import com.cloud.offering.NetworkOffering;
3335
import org.apache.cloudstack.api.response.DomainResponse;
3436
import org.apache.cloudstack.api.response.ZoneResponse;
3537
import org.apache.commons.collections.CollectionUtils;
@@ -179,12 +181,15 @@ public List<String> getSupportedServices() {
179181
supportedServices = new ArrayList<>(List.of(
180182
Dhcp.getName(),
181183
Dns.getName(),
182-
StaticNat.getName(),
183-
SourceNat.getName(),
184184
NetworkACL.getName(),
185-
PortForwarding.getName(),
186185
UserData.getName()
187186
));
187+
if (NetworkOffering.NetworkMode.NATTED.name().equalsIgnoreCase(getNetworkMode())) {
188+
supportedServices.addAll(Arrays.asList(
189+
StaticNat.getName(),
190+
SourceNat.getName(),
191+
PortForwarding.getName()));
192+
}
188193
if (getNsxSupportsLbService()) {
189194
supportedServices.add(Lb.getName());
190195
}
@@ -243,8 +248,10 @@ private void getServiceProviderMapForExternalProvider(Map<String, List<String>>
243248
continue;
244249
if (routerSupported.contains(service))
245250
serviceProviderMap.put(service, List.of(VirtualRouterProvider.Type.VPCVirtualRouter.name()));
246-
else
251+
else if (NetworkOffering.NetworkMode.NATTED.name().equalsIgnoreCase(getNetworkMode()) ||
252+
Stream.of(NetworkACL.getName()).anyMatch(s -> s.equalsIgnoreCase(service))) {
247253
serviceProviderMap.put(service, List.of(provider));
254+
}
248255
}
249256
if (!getNsxSupportsLbService()) {
250257
serviceProviderMap.remove(Lb.getName());

ui/src/views/offering/AddNetworkOffering.vue

Lines changed: 24 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -969,10 +969,12 @@ export default {
969969
Dhcp: this.forVpc ? this.VPCVR : this.VR,
970970
Dns: this.forVpc ? this.VPCVR : this.VR,
971971
UserData: this.forVpc ? this.VPCVR : this.VR,
972-
SourceNat: this.NSX,
973-
StaticNat: this.NSX,
974-
PortForwarding: this.NSX,
975-
Lb: this.NSX,
972+
...(this.networkmode === 'NATTED' && {
973+
SourceNat: this.NSX,
974+
StaticNat: this.NSX,
975+
PortForwarding: this.NSX,
976+
Lb: this.NSX
977+
}),
976978
...(forVpc && { NetworkACL: this.NSX }),
977979
...(!forVpc && { Firewall: this.NSX })
978980
}
@@ -981,10 +983,12 @@ export default {
981983
Dhcp: this.forVpc ? this.VPCVR : this.VR,
982984
Dns: this.forVpc ? this.VPCVR : this.VR,
983985
UserData: this.forVpc ? this.VPCVR : this.VR,
984-
SourceNat: this.Netris,
985-
StaticNat: this.Netris,
986-
PortForwarding: this.Netris,
987-
Lb: this.Netris,
986+
...(this.networkmode === 'NATTED' && {
987+
SourceNat: this.Netris,
988+
StaticNat: this.Netris,
989+
PortForwarding: this.Netris,
990+
Lb: this.Netris
991+
}),
988992
...(forVpc && { NetworkACL: this.Netris }),
989993
...(!forVpc && { Firewall: this.Netris })
990994
}
@@ -998,10 +1002,12 @@ export default {
9981002
Dhcp: this.forVpc ? this.VPCVR : this.VR,
9991003
Dns: this.forVpc ? this.VPCVR : this.VR,
10001004
UserData: this.forVpc ? this.VPCVR : this.VR,
1001-
SourceNat: this.NSX,
1002-
StaticNat: this.NSX,
1003-
PortForwarding: this.NSX,
1004-
Lb: this.NSX,
1005+
...(this.networkmode === 'NATTED' && {
1006+
SourceNat: this.NSX,
1007+
StaticNat: this.NSX,
1008+
PortForwarding: this.NSX,
1009+
Lb: this.NSX
1010+
}),
10051011
...(this.forVpc && { NetworkACL: this.NSX }),
10061012
...(!this.forVpc && { Firewall: this.NSX })
10071013
}
@@ -1010,10 +1016,12 @@ export default {
10101016
Dhcp: this.forVpc ? this.VPCVR : this.VR,
10111017
Dns: this.forVpc ? this.VPCVR : this.VR,
10121018
UserData: this.forVpc ? this.VPCVR : this.VR,
1013-
SourceNat: this.Netris,
1014-
StaticNat: this.Netris,
1015-
PortForwarding: this.Netris,
1016-
Lb: this.Netris,
1019+
...(this.networkmode === 'NATTED' && {
1020+
SourceNat: this.Netris,
1021+
StaticNat: this.Netris,
1022+
PortForwarding: this.Netris,
1023+
Lb: this.Netris
1024+
}),
10171025
...(this.forVpc && { NetworkACL: this.Netris }),
10181026
...(!this.forVpc && { Firewall: this.Netris })
10191027
}

0 commit comments

Comments
 (0)