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 })
         }

Reply via email to