Skip to content

Commit bbb7acc

Browse files
authored
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 444fb73 commit bbb7acc

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
@@ -956,10 +956,12 @@ export default {
956956
Dhcp: this.forVpc ? this.VPCVR : this.VR,
957957
Dns: this.forVpc ? this.VPCVR : this.VR,
958958
UserData: this.forVpc ? this.VPCVR : this.VR,
959-
SourceNat: this.NSX,
960-
StaticNat: this.NSX,
961-
PortForwarding: this.NSX,
962-
Lb: this.NSX,
959+
...(this.networkmode === 'NATTED' && {
960+
SourceNat: this.NSX,
961+
StaticNat: this.NSX,
962+
PortForwarding: this.NSX,
963+
Lb: this.NSX
964+
}),
963965
...(forVpc && { NetworkACL: this.NSX }),
964966
...(!forVpc && { Firewall: this.NSX })
965967
}
@@ -968,10 +970,12 @@ export default {
968970
Dhcp: this.forVpc ? this.VPCVR : this.VR,
969971
Dns: this.forVpc ? this.VPCVR : this.VR,
970972
UserData: this.forVpc ? this.VPCVR : this.VR,
971-
SourceNat: this.Netris,
972-
StaticNat: this.Netris,
973-
PortForwarding: this.Netris,
974-
Lb: this.Netris,
973+
...(this.networkmode === 'NATTED' && {
974+
SourceNat: this.Netris,
975+
StaticNat: this.Netris,
976+
PortForwarding: this.Netris,
977+
Lb: this.Netris
978+
}),
975979
...(forVpc && { NetworkACL: this.Netris }),
976980
...(!forVpc && { Firewall: this.Netris })
977981
}
@@ -985,10 +989,12 @@ export default {
985989
Dhcp: this.forVpc ? this.VPCVR : this.VR,
986990
Dns: this.forVpc ? this.VPCVR : this.VR,
987991
UserData: this.forVpc ? this.VPCVR : this.VR,
988-
SourceNat: this.NSX,
989-
StaticNat: this.NSX,
990-
PortForwarding: this.NSX,
991-
Lb: this.NSX,
992+
...(this.networkmode === 'NATTED' && {
993+
SourceNat: this.NSX,
994+
StaticNat: this.NSX,
995+
PortForwarding: this.NSX,
996+
Lb: this.NSX
997+
}),
992998
...(this.forVpc && { NetworkACL: this.NSX }),
993999
...(!this.forVpc && { Firewall: this.NSX })
9941000
}
@@ -997,10 +1003,12 @@ export default {
9971003
Dhcp: this.forVpc ? this.VPCVR : this.VR,
9981004
Dns: this.forVpc ? this.VPCVR : this.VR,
9991005
UserData: this.forVpc ? this.VPCVR : this.VR,
1000-
SourceNat: this.Netris,
1001-
StaticNat: this.Netris,
1002-
PortForwarding: this.Netris,
1003-
Lb: this.Netris,
1006+
...(this.networkmode === 'NATTED' && {
1007+
SourceNat: this.Netris,
1008+
StaticNat: this.Netris,
1009+
PortForwarding: this.Netris,
1010+
Lb: this.Netris
1011+
}),
10041012
...(this.forVpc && { NetworkACL: this.Netris }),
10051013
...(!this.forVpc && { Firewall: this.Netris })
10061014
}

0 commit comments

Comments
 (0)