Skip to content

Commit a8e2be3

Browse files
committed
UI: fix clone offering forms silently reverting user edits on services
1 parent 44ab7dd commit a8e2be3

2 files changed

Lines changed: 52 additions & 15 deletions

File tree

‎ui/src/views/offering/CloneNetworkOffering.vue‎

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1228,12 +1228,7 @@ export default {
12281228
},
12291229
handleSupportedServiceChange (service, checked, provider) {
12301230
if (checked) {
1231-
const correctProvider = this.serviceProviderMap[service]
1232-
if (correctProvider && provider !== correctProvider) {
1233-
this.selectedServiceProviderMap[service] = correctProvider
1234-
} else {
1235-
this.selectedServiceProviderMap[service] = provider
1236-
}
1231+
this.selectedServiceProviderMap[service] = provider
12371232
} else {
12381233
delete this.selectedServiceProviderMap[service]
12391234
}
@@ -1294,6 +1289,10 @@ export default {
12941289
params.guestiptype = values.guestiptype
12951290
}
12961291
1292+
if (values.forvpc === true) {
1293+
params.forvpc = true
1294+
}
1295+
12971296
// Use composable for service capability params
12981297
if (this.selectedServiceProviderMap != null) {
12991298
buildServiceCapabilityParams(params, values, this.selectedServiceProviderMap, this.registeredServicePackages)

‎ui/src/views/offering/CloneVpcOffering.vue‎

Lines changed: 47 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ export default {
405405
this.fetchZoneData()
406406
this.fetchIpv6NetworkOfferingConfiguration()
407407
this.fetchRoutedNetworkConfiguration()
408-
this.fetchSupportedServiceData()
408+
this.fetchSupportedServiceData(true)
409409
},
410410
isAdmin () {
411411
return isAdmin()
@@ -455,7 +455,7 @@ export default {
455455
this.zoneLoading = false
456456
})
457457
},
458-
fetchSupportedServiceData () {
458+
fetchSupportedServiceData (isInitialLoad = false) {
459459
this.supportedServiceLoading = true
460460
getAPI('listSupportedNetworkServices', {}).then(json => {
461461
const networkServices = json.listsupportednetworkservicesresponse.networkservice || []
@@ -491,7 +491,11 @@ export default {
491491
this.supportedServiceLoading = false
492492
493493
this.$nextTick(() => {
494-
this.populateFormFromResource()
494+
if (isInitialLoad) {
495+
this.populateFormFromResource()
496+
} else {
497+
this.syncServiceSelectionsForCurrentMode()
498+
}
495499
})
496500
})
497501
},
@@ -656,6 +660,45 @@ export default {
656660
this.form.nsxsupportlb = Boolean(this.serviceProviderMap.Lb)
657661
}
658662
},
663+
syncServiceSelectionsForCurrentMode () {
664+
const updatedServices = this.supportedServices.map(svc => {
665+
const serviceCopy = { ...svc, provider: [...svc.provider] }
666+
const providerName = this.selectedServiceProviderMap[serviceCopy.name]
667+
668+
if (providerName) {
669+
const providerIndex = serviceCopy.provider.findIndex(p => p.name === providerName)
670+
if (providerIndex > 0) {
671+
const targetProvider = serviceCopy.provider[providerIndex]
672+
serviceCopy.provider.splice(providerIndex, 1)
673+
serviceCopy.provider.unshift(targetProvider)
674+
}
675+
serviceCopy.defaultChecked = true
676+
serviceCopy.selectedProvider = providerName
677+
} else {
678+
serviceCopy.defaultChecked = false
679+
serviceCopy.selectedProvider = null
680+
}
681+
return serviceCopy
682+
})
683+
this.supportedServices = updatedServices
684+
685+
const availableNames = new Set(updatedServices.map(svc => svc.name))
686+
Object.keys(this.selectedServiceProviderMap).forEach(name => {
687+
if (!availableNames.has(name)) {
688+
delete this.selectedServiceProviderMap[name]
689+
}
690+
})
691+
692+
this.connectivityServiceChecked = Boolean(this.selectedServiceProviderMap.Connectivity)
693+
this.sourceNatServiceChecked = Boolean(this.selectedServiceProviderMap.SourceNat)
694+
695+
this.$nextTick(() => {
696+
this.servicesReady = true
697+
this.$nextTick(() => {
698+
this.checkVpcVirtualRouterForServices()
699+
})
700+
})
701+
},
659702
async handleProviderChange (value) {
660703
this.provider = value
661704
if (this.provider === 'NSX') {
@@ -682,12 +725,7 @@ export default {
682725
},
683726
handleSupportedServiceChange (service, checked, provider) {
684727
if (checked) {
685-
const correctProvider = this.serviceProviderMap[service]
686-
if (correctProvider && provider !== correctProvider) {
687-
this.selectedServiceProviderMap[service] = correctProvider
688-
} else {
689-
this.selectedServiceProviderMap[service] = provider
690-
}
728+
this.selectedServiceProviderMap[service] = provider
691729
} else {
692730
delete this.selectedServiceProviderMap[service]
693731
}

0 commit comments

Comments
 (0)