This is an automated email from the ASF dual-hosted git repository.

pearl11594 pushed a commit to branch nsx-refactor-update-offering
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/nsx-refactor-update-offering 
by this push:
     new 4c4ecdb8a79 fix services and provider combination
4c4ecdb8a79 is described below

commit 4c4ecdb8a79d80a585b2c28dd99242b6eda789b5
Author: Pearl Dsilva <[email protected]>
AuthorDate: Wed Oct 18 23:40:35 2023 -0400

    fix services and provider combination
---
 .../java/com/cloud/offering/NetworkOffering.java   |   4 +-
 .../admin/network/CreateNetworkOfferingCmd.java    |  78 +++---
 .../command/admin/vpc/CreateVPCOfferingCmd.java    |  82 ++++---
 .../org/apache/cloudstack/service/NsxElement.java  |   6 +-
 .../configuration/ConfigurationManagerImpl.java    |   2 +-
 .../java/com/cloud/network/vpc/VpcManagerImpl.java |   4 +-
 .../com/cloud/server/ConfigurationServerImpl.java  |   4 +-
 ui/public/locales/en.json                          |   2 +
 ui/src/components/CheckBoxSelectPair.vue           |   6 -
 ui/src/components/view/DetailsTab.vue              |   2 +-
 ui/src/views/offering/AddNetworkOffering.vue       |  10 +-
 ui/src/views/offering/AddVpcOffering.vue           | 273 ++++++++++-----------
 12 files changed, 250 insertions(+), 223 deletions(-)

diff --git a/api/src/main/java/com/cloud/offering/NetworkOffering.java 
b/api/src/main/java/com/cloud/offering/NetworkOffering.java
index d2fdb00309b..15bce42dd95 100644
--- a/api/src/main/java/com/cloud/offering/NetworkOffering.java
+++ b/api/src/main/java/com/cloud/offering/NetworkOffering.java
@@ -44,8 +44,8 @@ public interface NetworkOffering extends 
InfrastructureEntity, InternalIdentity,
     }
 
     public enum Mode {
-        NAT,
-        Route
+        NATTED,
+        ROUTED
     }
 
     public final static String SystemPublicNetwork = "System-Public-Network";
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 983c404854e..698bee50c08 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
@@ -50,6 +50,15 @@ import com.cloud.offering.NetworkOffering;
 import com.cloud.offering.NetworkOffering.Availability;
 import com.cloud.user.Account;
 
+import static com.cloud.network.Network.Service.Dhcp;
+import static com.cloud.network.Network.Service.Dns;
+import static com.cloud.network.Network.Service.Lb;
+import static com.cloud.network.Network.Service.StaticNat;
+import static com.cloud.network.Network.Service.SourceNat;
+import static com.cloud.network.Network.Service.PortForwarding;
+import static com.cloud.network.Network.Service.NetworkACL;
+import static com.cloud.network.Network.Service.UserData;
+
 @APICommand(name = "createNetworkOffering", description = "Creates a network 
offering.", responseObject = NetworkOfferingResponse.class, since = "3.0.0",
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
 public class CreateNetworkOfferingCmd extends BaseCmd {
@@ -132,12 +141,14 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
 
     @Parameter(name = ApiConstants.FOR_NSX,
             type = CommandType.BOOLEAN,
-            description = "true if network offering is meant to be used for 
NSX, false otherwise.")
+            description = "true if network offering is meant to be used for 
NSX, false otherwise.",
+            since = "4.20.0")
     private Boolean forNsx;
 
     @Parameter(name = ApiConstants.MODE,
             type = CommandType.STRING,
-            description = "Indicates the mode with which the network will 
operate. Valid option: NAT or Route")
+            description = "Indicates the mode with which the network will 
operate. Valid option: NAT or Route",
+            since = "4.20.0")
     private String mode;
 
     @Parameter(name = ApiConstants.FOR_TUNGSTEN,
@@ -224,7 +235,24 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
     }
 
     public List<String> getSupportedServices() {
-        return supportedServices == null ? new ArrayList<String>() : 
supportedServices;
+        if (!forNsx) {
+            return supportedServices == null ? new ArrayList<String>() : 
supportedServices;
+        } else {
+            List<String> services = new ArrayList<>(List.of(
+                    Dhcp.getName(),
+                    Dns.getName(),
+                    StaticNat.getName(),
+                    SourceNat.getName(),
+                    PortForwarding.getName(),
+                    UserData.getName(),
+                    Lb.getName()
+            ));
+            if (Boolean.TRUE.equals(forVpc)) {
+                services.add(NetworkACL.getName());
+                return services;
+            }
+            return services;
+        }
     }
 
     public String getGuestIpType() {
@@ -282,40 +310,34 @@ public class CreateNetworkOfferingCmd extends BaseCmd {
     }
 
     public Map<String, List<String>> getServiceProviders() {
-        Map<String, List<String>> serviceProviderMap = null;
-        if (serviceProviderList != null && !serviceProviderList.isEmpty()) {
-            if (!getForNsx()) {
-                serviceProviderMap = new HashMap<String, List<String>>();
-                Collection servicesCollection = serviceProviderList.values();
-                Iterator iter = servicesCollection.iterator();
-                while (iter.hasNext()) {
-                    HashMap<String, String> services = (HashMap<String, 
String>) iter.next();
-                    String service = services.get("service");
-                    String provider = services.get("provider");
-                    List<String> providerList = null;
-                    if (serviceProviderMap.containsKey(service)) {
-                        providerList = serviceProviderMap.get(service);
-                    } else {
-                        providerList = new ArrayList<String>();
-                    }
-                    providerList.add(provider);
-                    serviceProviderMap.put(service, providerList);
+        Map<String, List<String>> serviceProviderMap = new HashMap<String, 
List<String>>();
+        if (serviceProviderList != null && !serviceProviderList.isEmpty() && 
!getForNsx()) {
+            Collection servicesCollection = serviceProviderList.values();
+            Iterator iter = servicesCollection.iterator();
+            while (iter.hasNext()) {
+                HashMap<String, String> services = (HashMap<String, String>) 
iter.next();
+                String service = services.get("service");
+                String provider = services.get("provider");
+                List<String> providerList = null;
+                if (serviceProviderMap.containsKey(service)) {
+                    providerList = serviceProviderMap.get(service);
+                } else {
+                    providerList = new ArrayList<String>();
                 }
+                providerList.add(provider);
+                serviceProviderMap.put(service, providerList);
             }
-            else {
-                getServiceProviderMapForNsx(serviceProviderMap);
-            }
+        } else {
+            getServiceProviderMapForNsx(serviceProviderMap);
         }
-
         return serviceProviderMap;
     }
 
     private void getServiceProviderMapForNsx(Map<String, List<String>> 
serviceProviderMap) {
-        String routerProvider = getForVpc() ? 
VirtualRouterProvider.Type.VPCVirtualRouter.name() :
+        String routerProvider = Boolean.TRUE.equals(getForVpc()) ? 
VirtualRouterProvider.Type.VPCVirtualRouter.name() :
                 VirtualRouterProvider.Type.VirtualRouter.name();
         List<String> unsupportedServices = List.of("Vpn", "SecurityGroup", 
"Connectivity",
-                "Gateway", "Firewall", "StaticNat",
-                "PortForwarding", "NetworkACL");
+                "Gateway", "Firewall", "BaremetalPxeService");
         List<String> routerSupported = List.of("Dhcp", "Dns", "UserData");
         List<String> allServices = 
Service.listAllServices().stream().map(Service::getName).collect(Collectors.toList());
         for (String service : allServices) {
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 6b028cfafb4..2e73e6b9b14 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
@@ -27,6 +27,7 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.stream.Collectors;
 
+import com.cloud.exception.InvalidParameterValueException;
 import com.cloud.network.Network;
 import com.cloud.network.VirtualRouterProvider;
 import org.apache.cloudstack.api.response.DomainResponse;
@@ -49,6 +50,15 @@ import com.cloud.exception.ResourceAllocationException;
 import com.cloud.network.vpc.VpcOffering;
 import com.cloud.user.Account;
 
+import static com.cloud.network.Network.Service.Dhcp;
+import static com.cloud.network.Network.Service.Dns;
+import static com.cloud.network.Network.Service.Lb;
+import static com.cloud.network.Network.Service.StaticNat;
+import static com.cloud.network.Network.Service.SourceNat;
+import static com.cloud.network.Network.Service.PortForwarding;
+import static com.cloud.network.Network.Service.NetworkACL;
+import static com.cloud.network.Network.Service.UserData;
+
 @APICommand(name = "createVPCOffering", description = "Creates VPC offering", 
responseObject = VpcOfferingResponse.class,
         requestHasSensitiveInfo = false, responseHasSensitiveInfo = false)
 public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd {
@@ -66,7 +76,6 @@ public class CreateVPCOfferingCmd extends BaseAsyncCreateCmd {
 
     @Parameter(name = ApiConstants.SUPPORTED_SERVICES,
                type = CommandType.LIST,
-               required = true,
                collectionType = CommandType.STRING,
                description = "services supported by the vpc offering")
     private List<String> supportedServices;
@@ -107,12 +116,14 @@ public class CreateVPCOfferingCmd extends 
BaseAsyncCreateCmd {
 
     @Parameter(name = ApiConstants.FOR_NSX,
             type = CommandType.BOOLEAN,
-            description = "true if network offering is meant to be used for 
NSX, false otherwise.")
+            description = "true if network offering is meant to be used for 
NSX, false otherwise.",
+            since = "4.20.0")
     private Boolean forNsx;
 
     @Parameter(name = ApiConstants.MODE,
             type = CommandType.STRING,
-            description = "Indicates the mode with which the network will 
operate. Valid option: NAT or Route")
+            description = "Indicates the mode with which the network will 
operate. Valid option: NAT or Route",
+            since = "4.20.0")
     private String mode;
 
     @Parameter(name = ApiConstants.ENABLE,
@@ -134,6 +145,21 @@ public class CreateVPCOfferingCmd extends 
BaseAsyncCreateCmd {
     }
 
     public List<String> getSupportedServices() {
+        if (!forNsx && CollectionUtils.isEmpty(supportedServices)) {
+            throw new InvalidParameterValueException("Supported services needs 
to be provided");
+        }
+        if (forNsx) {
+            return List.of(
+                    Dhcp.getName(),
+                    Dns.getName(),
+                    Lb.getName(),
+                    StaticNat.getName(),
+                    SourceNat.getName(),
+                    NetworkACL.getName(),
+                    PortForwarding.getName(),
+                    UserData.getName()
+                    );
+        }
         return supportedServices;
     }
 
@@ -146,41 +172,37 @@ public class CreateVPCOfferingCmd extends 
BaseAsyncCreateCmd {
     }
 
     public Map<String, List<String>> getServiceProviders() {
-        Map<String, List<String>> serviceProviderMap = null;
-        if (serviceProviderList != null && !serviceProviderList.isEmpty()) {
-            if (!getForNsx()) {
-                serviceProviderMap = new HashMap<String, List<String>>();
-                Collection<? extends Map<String, String>> servicesCollection = 
serviceProviderList.values();
-                Iterator<? extends Map<String, String>> iter = 
servicesCollection.iterator();
-                while (iter.hasNext()) {
-                    Map<String, String> obj = iter.next();
-                    if (s_logger.isTraceEnabled()) {
-                        s_logger.trace("service provider entry specified: " + 
obj);
-                    }
-                    HashMap<String, String> services = (HashMap<String, 
String>) obj;
-                    String service = services.get("service");
-                    String provider = services.get("provider");
-                    List<String> providerList = null;
-                    if (serviceProviderMap.containsKey(service)) {
-                        providerList = serviceProviderMap.get(service);
-                    } else {
-                        providerList = new ArrayList<String>();
-                    }
-                    providerList.add(provider);
-                    serviceProviderMap.put(service, providerList);
+        Map<String, List<String>> serviceProviderMap = new HashMap<String, 
List<String>>();;
+        if (serviceProviderList != null && !serviceProviderList.isEmpty() && 
!getForNsx()) {
+            Collection<? extends Map<String, String>> servicesCollection = 
serviceProviderList.values();
+            Iterator<? extends Map<String, String>> iter = 
servicesCollection.iterator();
+            while (iter.hasNext()) {
+                Map<String, String> obj = iter.next();
+                if (s_logger.isTraceEnabled()) {
+                    s_logger.trace("service provider entry specified: " + obj);
                 }
-            } else {
-                getServiceProviderMapForNsx(serviceProviderMap);
+                HashMap<String, String> services = (HashMap<String, String>) 
obj;
+                String service = services.get("service");
+                String provider = services.get("provider");
+                List<String> providerList = null;
+                if (serviceProviderMap.containsKey(service)) {
+                    providerList = serviceProviderMap.get(service);
+                } else {
+                    providerList = new ArrayList<String>();
+                }
+                providerList.add(provider);
+                serviceProviderMap.put(service, providerList);
             }
+        } else {
+            getServiceProviderMapForNsx(serviceProviderMap);
         }
 
         return serviceProviderMap;
     }
 
     private void getServiceProviderMapForNsx(Map<String, List<String>> 
serviceProviderMap) {
-        List<String> unsupportedServices = List.of("Vpn", "SecurityGroup", 
"Connectivity",
-                "Gateway", "Firewall", "StaticNat",
-                "PortForwarding", "NetworkACL");
+        List<String> unsupportedServices = List.of("Vpn", 
"BaremetalPxeService", "SecurityGroup", "Connectivity",
+                "Gateway", "Firewall");
         List<String> routerSupported = List.of("Dhcp", "Dns", "UserData");
         List<String> allServices = 
Network.Service.listAllServices().stream().map(Network.Service::getName).collect(Collectors.toList());
         for (String service : allServices) {
diff --git 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxElement.java
 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxElement.java
index 5c5ba1ac35c..4190338ee0d 100644
--- 
a/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxElement.java
+++ 
b/plugins/network-elements/nsx/src/main/java/org/apache/cloudstack/service/NsxElement.java
@@ -118,7 +118,9 @@ public class NsxElement extends AdapterBase implements 
DhcpServiceProvider, DnsS
         capabilities.put(Network.Service.Dns, dnsCapabilities);
 
         capabilities.put(Network.Service.StaticNat, null);
-
+        capabilities.put(Network.Service.Lb, null);
+        capabilities.put(Network.Service.PortForwarding, null);
+        capabilities.put(Network.Service.NetworkACL, null);
         Map<Network.Capability, String> sourceNatCapabilities = new 
HashMap<>();
         sourceNatCapabilities.put(Network.Capability.RedundantRouter, "true");
         sourceNatCapabilities.put(Network.Capability.SupportedSourceNatTypes, 
"peraccount");
@@ -226,7 +228,7 @@ public class NsxElement extends AdapterBase implements 
DhcpServiceProvider, DnsS
 
     @Override
     public boolean verifyServicesCombination(Set<Network.Service> services) {
-        return false;
+        return true;
     }
 
     @Override
diff --git 
a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java 
b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
index 0406ae3f3ab..4f68ea1f6e9 100644
--- a/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
+++ b/server/src/main/java/com/cloud/configuration/ConfigurationManagerImpl.java
@@ -6611,7 +6611,7 @@ public class ConfigurationManagerImpl extends ManagerBase 
implements Configurati
                                 s_logger.trace("Added service for the network 
offering: " + offService + " with provider " + provider.getName());
                             }
 
-                            if (vpcOff) {
+                            if (vpcOff && !forNsx) {
                                 final List<Service> supportedSvcs = new 
ArrayList<Service>();
                                 
supportedSvcs.addAll(serviceProviderMap.keySet());
                                 _vpcMgr.validateNtwkOffForVpc(offering, 
supportedSvcs);
diff --git a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java 
b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
index 2aec0ae7158..9527117c861 100644
--- a/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
+++ b/server/src/main/java/com/cloud/network/vpc/VpcManagerImpl.java
@@ -385,7 +385,7 @@ public class VpcManagerImpl extends ManagerBase implements 
VpcManager, VpcProvis
                         }
                     }
                     
createVpcOffering(VpcOffering.DEFAULT_VPC_NAT_NSX_OFFERING_NAME, 
VpcOffering.DEFAULT_VPC_NAT_NSX_OFFERING_NAME, svcProviderMap, false,
-                            State.Enabled, null, false, false, false, true, 
NetworkOffering.Mode.NAT.name());
+                            State.Enabled, null, false, false, false, true, 
NetworkOffering.Mode.NATTED.name());
 
                 }
 
@@ -403,7 +403,7 @@ public class VpcManagerImpl extends ManagerBase implements 
VpcManager, VpcProvis
                         }
                     }
                     
createVpcOffering(VpcOffering.DEFAULT_VPC_ROUTE_NSX_OFFERING_NAME, 
VpcOffering.DEFAULT_VPC_ROUTE_NSX_OFFERING_NAME, svcProviderMap, false,
-                            State.Enabled, null, false, false, false, true, 
NetworkOffering.Mode.Route.name());
+                            State.Enabled, null, false, false, false, true, 
NetworkOffering.Mode.ROUTED.name());
 
                 }
             }
diff --git a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java 
b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
index 1d6bf698374..415617e7262 100644
--- a/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
+++ b/server/src/main/java/com/cloud/server/ConfigurationServerImpl.java
@@ -1211,7 +1211,7 @@ public class ConfigurationServerImpl extends ManagerBase 
implements Configuratio
                         new 
NetworkOfferingVO(NetworkOffering.DEFAULT_NAT_NSX_OFFERING, "Offering for NSX 
enabled networks - NAT mode",
                                 TrafficType.Guest, false, false, null, null, 
true, Availability.Optional, null, GuestType.Isolated, false, false, false, 
false, false, true);
                 defaultNatNSXNetworkOffering.setForNsx(true);
-                
defaultNatNSXNetworkOffering.setMode(NetworkOffering.Mode.NAT.name());
+                
defaultNatNSXNetworkOffering.setMode(NetworkOffering.Mode.NATTED.name());
                 
defaultNatNSXNetworkOffering.setState(NetworkOffering.State.Enabled);
                 defaultNatNSXNetworkOffering = 
_networkOfferingDao.persistDefaultNetworkOffering(defaultNatNSXNetworkOffering);
 
@@ -1227,7 +1227,7 @@ public class ConfigurationServerImpl extends ManagerBase 
implements Configuratio
                         new 
NetworkOfferingVO(NetworkOffering.DEFAULT_NAT_NSX_OFFERING, "Offering for NSX 
enabled networks - NAT mode",
                                 TrafficType.Guest, false, false, null, null, 
true, Availability.Optional, null, GuestType.Isolated, false, false, false, 
false, false, true);
                 defaultRouteNSXNetworkOffering.setForNsx(true);
-                
defaultRouteNSXNetworkOffering.setMode(NetworkOffering.Mode.Route.name());
+                
defaultRouteNSXNetworkOffering.setMode(NetworkOffering.Mode.ROUTED.name());
                 
defaultRouteNSXNetworkOffering.setState(NetworkOffering.State.Enabled);
                 defaultRouteNSXNetworkOffering = 
_networkOfferingDao.persistDefaultNetworkOffering(defaultRouteNSXNetworkOffering);
 
diff --git a/ui/public/locales/en.json b/ui/public/locales/en.json
index 491b2cca763..205128d58f4 100644
--- a/ui/public/locales/en.json
+++ b/ui/public/locales/en.json
@@ -871,6 +871,7 @@
 "label.forceencap": "Force UDP encapsulation of ESP packets",
 "label.forgedtransmits": "Forged transmits",
 "label.format": "Format",
+"label.fornsx": "NSX",
 "label.free": "Free",
 "label.french.azerty.keyboard": "French AZERTY keyboard",
 "label.friday": "Friday",
@@ -1557,6 +1558,7 @@
 "label.public.ips": "Public IP addresses",
 "label.public.lb": "Public LB",
 "label.public.traffic": "Public traffic",
+"label.public.traffic.nsx": "NSX Public traffic",
 "label.publicinterface": "Public interface",
 "label.publicip": "IP address",
 "label.publicipid": "IP address ID",
diff --git a/ui/src/components/CheckBoxSelectPair.vue 
b/ui/src/components/CheckBoxSelectPair.vue
index 80380a490d9..4fba1da2556 100644
--- a/ui/src/components/CheckBoxSelectPair.vue
+++ b/ui/src/components/CheckBoxSelectPair.vue
@@ -92,7 +92,6 @@ export default {
     }
   },
   data () {
-    console.log(this.forNsx)
     return {
       checked: false,
       selectedOption: null,
@@ -100,7 +99,6 @@ export default {
     }
   },
   created () {
-    console.log(this.defaultCheckBoxValue)
     this.checked = this.defaultCheckBoxValue
   },
   watch: {
@@ -125,14 +123,10 @@ export default {
       return this.option || this.selectedOption
     },
     option () {
-      console.log('option')
       if (this.forNsx) {
         return this.selectOptions[0]?.name || null
       }
       return null
-      // else {
-      //   return this.handleCheckChange({ target: { checked: true } })
-      // }
     }
   },
   methods: {
diff --git a/ui/src/components/view/DetailsTab.vue 
b/ui/src/components/view/DetailsTab.vue
index 301686c3433..dcd4f1e3e50 100644
--- a/ui/src/components/view/DetailsTab.vue
+++ b/ui/src/components/view/DetailsTab.vue
@@ -38,7 +38,7 @@
           <br/>
           <div v-if="Array.isArray(dataResource[item]) && item === 'service'">
             <div v-for="(service, idx) in dataResource[item]" :key="idx">
-              {{ service.name }} : {{ service.provider[0].name }}
+              {{ service.name }} : {{ service.provider?.[0]?.name }}
             </div>
           </div>
           <div v-else-if="$route.meta.name === 'backup' && item === 'volumes'">
diff --git a/ui/src/views/offering/AddNetworkOffering.vue 
b/ui/src/views/offering/AddNetworkOffering.vue
index 4bc3051a267..cc69854ddd3 100644
--- a/ui/src/views/offering/AddNetworkOffering.vue
+++ b/ui/src/views/offering/AddNetworkOffering.vue
@@ -575,11 +575,11 @@ export default {
       modes: [
         {
           id: 0,
-          name: 'NAT'
+          name: 'NATTED'
         },
         {
           id: 1,
-          name: 'Route'
+          name: 'ROUTED'
         }
       ],
       VPCVR: {
@@ -845,19 +845,13 @@ export default {
           self.supportedServiceLoading = false
         }, 50)
       } else {
-        console.log(supportedServices)
         supportedServices = supportedServices.filter(svc => {
-          console.log(self.nsxSupportedServicesMap)
-          console.log(Object.keys(self.nsxSupportedServicesMap))
-          console.log(svc.name)
           return Object.keys(this.nsxSupportedServicesMap).includes(svc.name)
         })
-        console.log(supportedServices)
         supportedServices.forEach(function (svc, index) {
           svc.provider = [self.nsxSupportedServicesMap[svc.name]]
           supportedServices[index] = svc
         })
-        console.log(supportedServices)
         self.supportedServices = supportedServices
         self.supportedServiceLoading = false
       }
diff --git a/ui/src/views/offering/AddVpcOffering.vue 
b/ui/src/views/offering/AddVpcOffering.vue
index b2f3ddd7b37..3cb4d5d362e 100644
--- a/ui/src/views/offering/AddVpcOffering.vue
+++ b/ui/src/views/offering/AddVpcOffering.vue
@@ -253,11 +253,11 @@ export default {
       modes: [
         {
           id: 0,
-          name: 'NAT'
+          name: 'NATTED'
         },
         {
           id: 1,
-          name: 'Route'
+          name: 'ROUTED'
         }
       ],
       VPCVR: {
@@ -310,7 +310,6 @@ export default {
       })
     },
     fetchData () {
-      console.log('fetch data')
       this.fetchDomainData()
       this.fetchZoneData()
       this.fetchSupportedServiceData()
@@ -352,149 +351,138 @@ export default {
       })
     },
     fetchSupportedServiceData () {
-      console.log('supported services')
-      this.supportedServices = []
-      this.supportedServices.push({
-        name: 'Dhcp',
-        provider: [
-          { name: 'VpcVirtualRouter' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'Dns',
-        provider: [{ name: 'VpcVirtualRouter' }]
-      })
-      this.supportedServices.push({
-        name: 'Lb',
-        provider: [
-          { name: 'VpcVirtualRouter' },
-          { name: 'InternalLbVm' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'Gateway',
-        provider: [
-          { name: 'VpcVirtualRouter' },
-          { name: 'BigSwitchBcf' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'StaticNat',
-        provider: [
-          { name: 'VpcVirtualRouter' },
-          { name: 'BigSwitchBcf' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'SourceNat',
-        provider: [
-          { name: 'VpcVirtualRouter' },
-          { name: 'BigSwitchBcf' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'NetworkACL',
-        provider: [
-          { name: 'VpcVirtualRouter' },
-          { name: 'BigSwitchBcf' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'PortForwarding',
-        provider: [{ name: 'VpcVirtualRouter' }]
-      })
-      this.supportedServices.push({
-        name: 'UserData',
-        provider: [
-          { name: 'VpcVirtualRouter' },
-          { name: 'ConfigDrive' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'Vpn',
-        provider: [
-          { name: 'VpcVirtualRouter' },
-          { name: 'BigSwitchBcf' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'Connectivity',
-        provider: [
-          { name: 'BigSwitchBcf' },
-          { name: 'NiciraNvp' },
-          { name: 'Ovs' },
-          { name: 'JuniperContrailVpcRouter' }
-        ]
-      })
-      for (var i in this.supportedServices) {
-        var serviceName = this.supportedServices[i].name
-        var serviceDisplayName = serviceName
-        // Sanitize names
-        this.supportedServices[i].description = serviceDisplayName
+      var services = []
+      if (this.forNsx) {
+        services.push({
+          name: 'Dhcp',
+          enabled: true,
+          provider: [
+            { name: 'VpcVirtualRouter' }
+          ]
+        })
+        services.push({
+          name: 'Dns',
+          enabled: true,
+          provider: [{ name: 'VpcVirtualRouter' }]
+        })
+        services.push({
+          name: 'Lb',
+          enabled: true,
+          provider: [{ name: 'Nsx' }]
+        })
+        services.push({
+          name: 'StaticNat',
+          enabled: true,
+          provider: [{ name: 'Nsx' }]
+        })
+        services.push({
+          name: 'SourceNat',
+          enabled: true,
+          provider: [{ name: 'Nsx' }]
+        })
+        services.push({
+          name: 'NetworkACL',
+          enabled: true,
+          provider: [{ name: 'Nsx' }]
+        })
+        services.push({
+          name: 'PortForwarding',
+          enabled: true,
+          provider: [{ name: 'Nsx' }]
+        })
+        services.push({
+          name: 'UserData',
+          enabled: true,
+          provider: [{ name: 'VpcVirtualRouter' }]
+        })
+      } else {
+        services.push({
+          name: 'Dhcp',
+          provider: [
+            { name: 'VpcVirtualRouter' }
+          ]
+        })
+        services.push({
+          name: 'Dns',
+          provider: [{ name: 'VpcVirtualRouter' }]
+        })
+        services.push({
+          name: 'Lb',
+          provider: [
+            { name: 'VpcVirtualRouter' },
+            { name: 'InternalLbVm' }
+          ]
+        })
+        services.push({
+          name: 'Gateway',
+          provider: [
+            { name: 'VpcVirtualRouter' },
+            { name: 'BigSwitchBcf' }
+          ]
+        })
+        services.push({
+          name: 'StaticNat',
+          provider: [
+            { name: 'VpcVirtualRouter' },
+            { name: 'BigSwitchBcf' }
+          ]
+        })
+        services.push({
+          name: 'SourceNat',
+          provider: [
+            { name: 'VpcVirtualRouter' },
+            { name: 'BigSwitchBcf' }
+          ]
+        })
+        services.push({
+          name: 'NetworkACL',
+          provider: [
+            { name: 'VpcVirtualRouter' },
+            { name: 'BigSwitchBcf' }
+          ]
+        })
+        services.push({
+          name: 'PortForwarding',
+          provider: [{ name: 'VpcVirtualRouter' }]
+        })
+        services.push({
+          name: 'UserData',
+          provider: [
+            { name: 'VpcVirtualRouter' },
+            { name: 'ConfigDrive' }
+          ]
+        })
+        services.push({
+          name: 'Vpn',
+          provider: [
+            { name: 'VpcVirtualRouter' },
+            { name: 'BigSwitchBcf' }
+          ]
+        })
+        services.push({
+          name: 'Connectivity',
+          provider: [
+            { name: 'BigSwitchBcf' },
+            { name: 'NiciraNvp' },
+            { name: 'Ovs' },
+            { name: 'JuniperContrailVpcRouter' }
+          ]
+        })
       }
-      console.log(this.supportedServices)
-    },
-    updateNsxSupportedServices () {
-      console.log('update nsx services')
       this.supportedServices = []
-      this.supportedServices.push({
-        name: 'Dhcp',
-        enabled: true,
-        provider: [
-          { name: 'VpcVirtualRouter' }
-        ]
-      })
-      this.supportedServices.push({
-        name: 'Dns',
-        enabled: true,
-        provider: [{ name: 'VpcVirtualRouter' }]
-      })
-      this.supportedServices.push({
-        name: 'Lb',
-        enabled: true,
-        provider: [{ name: 'Nsx' }]
-      })
-      this.supportedServices.push({
-        name: 'StaticNat',
-        enabled: true,
-        provider: [{ name: 'Nsx' }]
-      })
-      this.supportedServices.push({
-        name: 'SourceNat',
-        enabled: true,
-        provider: [{ name: 'Nsx' }]
-      })
-      this.supportedServices.push({
-        name: 'NetworkACL',
-        enabled: true,
-        provider: [{ name: 'Nsx' }]
-      })
-      this.supportedServices.push({
-        name: 'PortForwarding',
-        enabled: true,
-        provider: [{ name: 'Nsx' }]
-      })
-      this.supportedServices.push({
-        name: 'UserData',
-        enabled: true,
-        provider: [{ name: 'VpcVirtualRouter' }]
-      })
-      for (var i in this.supportedServices) {
-        var serviceName = this.supportedServices[i].name
-        var serviceDisplayName = serviceName
-        console.log(serviceDisplayName)
-        // Sanitize names
-        this.supportedServices[i].description = serviceDisplayName
+      for (var i in services) {
+        services[i].description = services[i].name
       }
+      var self = this
+      setTimeout(() => {
+        self.supportedServices = services
+        self.supportedServiceLoading = false
+      }, 50)
     },
     async handleForNsxChange (forNsx) {
       this.forNsx = forNsx
       this.showMode = forNsx
-      if (this.forNsx === true) {
-        this.updateNsxSupportedServices()
-      } else {
-        this.fetchSupportedServiceData()
-      }
+      this.fetchSupportedServiceData()
     },
     handleSupportedServiceChange (service, checked, provider) {
       if (service === 'Connectivity') {
@@ -576,7 +564,10 @@ export default {
         }
         if (this.selectedServiceProviderMap != null) {
           var supportedServices = Object.keys(this.selectedServiceProviderMap)
-          params.supportedservices = supportedServices.join(',')
+          params.supportedservices = []
+          if (!this.forNsx) {
+            params.supportedservices = supportedServices.join(',')
+          }
           for (var k in supportedServices) {
             params['serviceProviderList[' + k + '].service'] = 
supportedServices[k]
             params['serviceProviderList[' + k + '].provider'] = 
this.selectedServiceProviderMap[supportedServices[k]]
@@ -606,7 +597,7 @@ export default {
             params.serviceofferingid = values.serviceofferingid
           }
         } else {
-          params.supportedservices = ''
+          params.supportedservices = []
         }
         if (values.enable) {
           params.enable = values.enable

Reply via email to