This is an automated email from the ASF dual-hosted git repository. pearl11594 pushed a commit to branch netris-integration-upstream in repository https://gitbox.apache.org/repos/asf/cloudstack.git
commit f6e1f791f853001f6e358fa8ed388eecfc363403 Author: Pearl Dsilva <[email protected]> AuthorDate: Fri Dec 13 10:43:07 2024 -0500 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 --- .../admin/network/CreateNetworkOfferingCmd.java | 14 +++++--- .../command/admin/vpc/CreateVPCOfferingCmd.java | 15 +++++--- ui/src/views/offering/AddNetworkOffering.vue | 40 +++++++++++++--------- 3 files changed, 44 insertions(+), 25 deletions(-) diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java index 362e9c8b3bb..e2509b7c532 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/network/CreateNetworkOfferingCmd.java @@ -289,11 +289,14 @@ public class CreateNetworkOfferingCmd extends BaseCmd { List<String> services = new ArrayList<>(List.of( Dhcp.getName(), Dns.getName(), - StaticNat.getName(), - SourceNat.getName(), - PortForwarding.getName(), UserData.getName() )); + if (NetworkOffering.NetworkMode.NATTED.name().equalsIgnoreCase(getNetworkMode())) { + services.addAll(Arrays.asList( + StaticNat.getName(), + SourceNat.getName(), + PortForwarding.getName())); + } if (getNsxSupportsLbService()) { services.add(Lb.getName()); } @@ -405,8 +408,9 @@ public class CreateNetworkOfferingCmd extends BaseCmd { continue; if (routerSupported.contains(service)) serviceProviderMap.put(service, List.of(routerProvider)); - else - serviceProviderMap.put(service, List.of(provider)); + else if (NetworkOffering.NetworkMode.NATTED.name().equalsIgnoreCase(getNetworkMode()) || NetworkACL.getName().equalsIgnoreCase(service)) { + serviceProviderMap.put(service, List.of(provider)); + } if (!getNsxSupportsLbService()) { serviceProviderMap.remove(Lb.getName()); } diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java index 020e28e23f4..dcceb6ada14 100644 --- a/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java +++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/vpc/CreateVPCOfferingCmd.java @@ -26,10 +26,12 @@ import java.util.List; import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import java.util.stream.Stream; import com.cloud.exception.InvalidParameterValueException; import com.cloud.network.Network; import com.cloud.network.VirtualRouterProvider; +import com.cloud.offering.NetworkOffering; import org.apache.cloudstack.api.response.DomainResponse; import org.apache.cloudstack.api.response.ZoneResponse; import org.apache.commons.collections.CollectionUtils; @@ -179,12 +181,15 @@ public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd { supportedServices = new ArrayList<>(List.of( Dhcp.getName(), Dns.getName(), - StaticNat.getName(), - SourceNat.getName(), NetworkACL.getName(), - PortForwarding.getName(), UserData.getName() )); + if (NetworkOffering.NetworkMode.NATTED.name().equalsIgnoreCase(getNetworkMode())) { + supportedServices.addAll(Arrays.asList( + StaticNat.getName(), + SourceNat.getName(), + PortForwarding.getName())); + } if (getNsxSupportsLbService()) { supportedServices.add(Lb.getName()); } @@ -243,8 +248,10 @@ public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd { continue; if (routerSupported.contains(service)) serviceProviderMap.put(service, List.of(VirtualRouterProvider.Type.VPCVirtualRouter.name())); - else + else if (NetworkOffering.NetworkMode.NATTED.name().equalsIgnoreCase(getNetworkMode()) || + Stream.of(NetworkACL.getName()).anyMatch(s -> s.equalsIgnoreCase(service))) { serviceProviderMap.put(service, List.of(provider)); + } } if (!getNsxSupportsLbService()) { serviceProviderMap.remove(Lb.getName()); diff --git a/ui/src/views/offering/AddNetworkOffering.vue b/ui/src/views/offering/AddNetworkOffering.vue index 47ce0ce9366..8f7a743ded7 100644 --- a/ui/src/views/offering/AddNetworkOffering.vue +++ b/ui/src/views/offering/AddNetworkOffering.vue @@ -969,10 +969,12 @@ export default { Dhcp: this.forVpc ? this.VPCVR : this.VR, Dns: this.forVpc ? this.VPCVR : this.VR, UserData: this.forVpc ? this.VPCVR : this.VR, - SourceNat: this.NSX, - StaticNat: this.NSX, - PortForwarding: this.NSX, - Lb: this.NSX, + ...(this.networkmode === 'NATTED' && { + SourceNat: this.NSX, + StaticNat: this.NSX, + PortForwarding: this.NSX, + Lb: this.NSX + }), ...(forVpc && { NetworkACL: this.NSX }), ...(!forVpc && { Firewall: this.NSX }) } @@ -981,10 +983,12 @@ export default { Dhcp: this.forVpc ? this.VPCVR : this.VR, Dns: this.forVpc ? this.VPCVR : this.VR, UserData: this.forVpc ? this.VPCVR : this.VR, - SourceNat: this.Netris, - StaticNat: this.Netris, - PortForwarding: this.Netris, - Lb: this.Netris, + ...(this.networkmode === 'NATTED' && { + SourceNat: this.Netris, + StaticNat: this.Netris, + PortForwarding: this.Netris, + Lb: this.Netris + }), ...(forVpc && { NetworkACL: this.Netris }), ...(!forVpc && { Firewall: this.Netris }) } @@ -998,10 +1002,12 @@ export default { Dhcp: this.forVpc ? this.VPCVR : this.VR, Dns: this.forVpc ? this.VPCVR : this.VR, UserData: this.forVpc ? this.VPCVR : this.VR, - SourceNat: this.NSX, - StaticNat: this.NSX, - PortForwarding: this.NSX, - Lb: this.NSX, + ...(this.networkmode === 'NATTED' && { + SourceNat: this.NSX, + StaticNat: this.NSX, + PortForwarding: this.NSX, + Lb: this.NSX + }), ...(this.forVpc && { NetworkACL: this.NSX }), ...(!this.forVpc && { Firewall: this.NSX }) } @@ -1010,10 +1016,12 @@ export default { Dhcp: this.forVpc ? this.VPCVR : this.VR, Dns: this.forVpc ? this.VPCVR : this.VR, UserData: this.forVpc ? this.VPCVR : this.VR, - SourceNat: this.Netris, - StaticNat: this.Netris, - PortForwarding: this.Netris, - Lb: this.Netris, + ...(this.networkmode === 'NATTED' && { + SourceNat: this.Netris, + StaticNat: this.Netris, + PortForwarding: this.Netris, + Lb: this.Netris + }), ...(this.forVpc && { NetworkACL: this.Netris }), ...(!this.forVpc && { Firewall: this.Netris }) }
