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

rohit pushed a commit to branch 4.16
in repository https://gitbox.apache.org/repos/asf/cloudstack.git


The following commit(s) were added to refs/heads/4.16 by this push:
     new feb4343  ui: fix create network/vpc offering form (#5840)
feb4343 is described below

commit feb4343abec70f5db8671e661671b808ed05a9c1
Author: Abhishek Kumar <[email protected]>
AuthorDate: Sat Jan 8 08:41:58 2022 +0530

    ui: fix create network/vpc offering form (#5840)
    
    * ui: fix create network/vpc offering form
    
    Fixes #5838
    
    Signed-off-by: Abhishek Kumar <[email protected]>
    
    * fix inlinemode
    
    Signed-off-by: Abhishek Kumar <[email protected]>
---
 ui/src/views/offering/AddNetworkOffering.vue | 29 ++++++++++------------------
 ui/src/views/offering/AddVpcOffering.vue     | 28 ++++++++++-----------------
 2 files changed, 20 insertions(+), 37 deletions(-)

diff --git a/ui/src/views/offering/AddNetworkOffering.vue 
b/ui/src/views/offering/AddNetworkOffering.vue
index 3c38c5a..d114ceb 100644
--- a/ui/src/views/offering/AddNetworkOffering.vue
+++ b/ui/src/views/offering/AddNetworkOffering.vue
@@ -253,7 +253,7 @@
         <a-form-item :label="$t('label.service.lb.elasticlbcheckbox')" 
v-if="guestType == 'shared' && lbServiceChecked && lbServiceProvider === 
'Netscaler'">
           <a-switch v-decorator="['elasticlb', {initialValue: false}]" />
         </a-form-item>
-        <a-form-item :label="$t('label.service.lb.inlinemodedropdown')" 
v-if="(guestType === 'shared' || guestType === 'isolated') && lbServiceChecked 
&& firewallServiceChecked && lbServiceProvider === 'F5BigIp' && 
firewallServiceProvider === 'JuniperSRX'">
+        <a-form-item :label="$t('label.service.lb.inlinemodedropdown')" 
v-if="['shared', 'isolated'].includes(guestType) && lbServiceChecked && 
firewallServiceChecked && ['F5BigIp', 'Netscaler'].includes(lbServiceProvider) 
&& ['JuniperSRX'].includes(firewallServiceProvider)">
           <a-radio-group
             v-decorator="['inlinemode', {
               initialValue: 'false'
@@ -756,23 +756,14 @@ export default {
         this.loading = true
         var params = {}
 
-        var self = this
-        var selectedServices = null
         var keys = Object.keys(values)
         const detailsKey = ['promiscuousmode', 'macaddresschanges', 
'forgedtransmits', 'maclearning']
         const ignoredKeys = [...detailsKey, 'state', 'status', 
'allocationstate', 'forvpc', 'lbType', 'specifyvlan', 'ispublic', 'domainid', 
'zoneid', 'egressdefaultpolicy', 'isolation', 'supportspublicaccess']
         keys.forEach(function (key, keyIndex) {
-          if (self.isSupportedServiceObject(values[key])) {
-            if (selectedServices == null) {
-              selectedServices = {}
-            }
-            selectedServices[key] = values[key]
-          } else {
-            if (!ignoredKeys.includes(key) &&
-              values[key] != null && values[key] !== undefined &&
-              !(key === 'availability' && values[key] === 'Optional')) {
-              params[key] = values[key]
-            }
+          if (!ignoredKeys.includes(key) &&
+            values[key] != null && values[key] !== undefined &&
+            !(key === 'availability' && values[key] === 'Optional')) {
+            params[key] = values[key]
           }
         })
 
@@ -810,12 +801,12 @@ export default {
             params.conservemode = false
           }
         }
-        if (selectedServices != null) {
-          var supportedServices = Object.keys(selectedServices)
+        if (this.selectedServiceProviderMap != null) {
+          var supportedServices = Object.keys(this.selectedServiceProviderMap)
           params.supportedservices = supportedServices.join(',')
           for (var k in supportedServices) {
             params['serviceProviderList[' + k + '].service'] = 
supportedServices[k]
-            params['serviceProviderList[' + k + '].provider'] = 
selectedServices[supportedServices[k]].provider
+            params['serviceProviderList[' + k + '].provider'] = 
this.selectedServiceProviderMap[supportedServices[k]]
           }
           var serviceCapabilityIndex = 0
           if (supportedServices.includes('Connectivity')) {
@@ -871,7 +862,7 @@ export default {
               params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].capabilityvalue'] = true
               serviceCapabilityIndex++
             }
-            if (values.inlinemode === true && ((selectedServices.Lb.provider 
=== 'F5BigIp') || (selectedServices.Lb.provider === 'Netscaler'))) {
+            if (values.inlinemode === true && 
((this.selectedServiceProviderMap.Lb === 'F5BigIp') || 
(this.selectedServiceProviderMap.Lb === 'Netscaler'))) {
               params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].service'] = 'lb'
               params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].capabilitytype'] = 'InlineMode'
               params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].capabilityvalue'] = values.inlinemode
@@ -881,7 +872,7 @@ export default {
             params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].capabilitytype'] = 'SupportedLbIsolation'
             params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].capabilityvalue'] = values.isolation
             serviceCapabilityIndex++
-            if (selectedServices.Lb.provider === 'InternalLbVm') {
+            if (this.selectedServiceProviderMap.Lb === 'InternalLbVm') {
               params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].service'] = 'lb'
               params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].capabilitytype'] = 'lbSchemes'
               params['servicecapabilitylist[' + serviceCapabilityIndex + 
'].capabilityvalue'] = 'internal'
diff --git a/ui/src/views/offering/AddVpcOffering.vue 
b/ui/src/views/offering/AddVpcOffering.vue
index 0eded9d..51a4065 100644
--- a/ui/src/views/offering/AddVpcOffering.vue
+++ b/ui/src/views/offering/AddVpcOffering.vue
@@ -166,7 +166,8 @@ export default {
       supportedServices: [],
       supportedServiceLoading: false,
       connectivityServiceChecked: false,
-      sourceNatServiceChecked: false
+      sourceNatServiceChecked: false,
+      selectedServiceProviderMap: {}
     }
   },
   beforeCreate () {
@@ -191,9 +192,6 @@ export default {
     isAdmin () {
       return isAdmin()
     },
-    isSupportedServiceObject (obj) {
-      return (obj !== null && obj !== undefined && Object.keys(obj).length > 0 
&& obj.constructor === Object && 'provider' in obj)
-    },
     fetchDomainData () {
       const params = {}
       params.listAll = true
@@ -307,6 +305,11 @@ export default {
       if (service === 'SourceNat') {
         this.sourceNatServiceChecked = checked
       }
+      if (checked && provider != null & provider !== undefined) {
+        this.selectedServiceProviderMap[service] = provider
+      } else {
+        delete this.selectedServiceProviderMap[service]
+      }
     },
     handleSubmit (e) {
       e.preventDefault()
@@ -345,23 +348,12 @@ export default {
         if (zoneId) {
           params.zoneid = zoneId
         }
-        var selectedServices = null
-        var keys = Object.keys(values)
-        var self = this
-        keys.forEach(function (key, keyIndex) {
-          if (self.isSupportedServiceObject(values[key])) {
-            if (selectedServices == null) {
-              selectedServices = {}
-            }
-            selectedServices[key] = values[key]
-          }
-        })
-        if (selectedServices != null) {
-          var supportedServices = Object.keys(selectedServices)
+        if (this.selectedServiceProviderMap != null) {
+          var supportedServices = Object.keys(this.selectedServiceProviderMap)
           params.supportedservices = supportedServices.join(',')
           for (var k in supportedServices) {
             params['serviceProviderList[' + k + '].service'] = 
supportedServices[k]
-            params['serviceProviderList[' + k + '].provider'] = 
selectedServices[supportedServices[k]].provider
+            params['serviceProviderList[' + k + '].provider'] = 
this.selectedServiceProviderMap[supportedServices[k]]
           }
           var serviceCapabilityIndex = 0
           if (supportedServices.includes('Connectivity')) {

Reply via email to