Skip to content

Commit 8ed5a4f

Browse files
authored
ui: fix create shared network with multi-zone (#5205)
Fixes create shared network form for multi-zone environments. Signed-off-by: Abhishek Kumar <abhishek.mrt22@gmail.com>
1 parent 826e479 commit 8ed5a4f

File tree

1 file changed

+40
-30
lines changed

1 file changed

+40
-30
lines changed

ui/src/views/network/CreateSharedNetworkForm.vue

Lines changed: 40 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@
9393
:filterOption="(input, option) => {
9494
return option.componentOptions.children[0].text.toLowerCase().indexOf(input.toLowerCase()) >= 0
9595
}"
96-
:loading="zoneLoading"
96+
:loading="formPhysicalNetworkLoading"
9797
:placeholder="this.$t('label.physicalnetworkid')"
9898
@change="val => { this.handlePhysicalNetworkChange(this.formPhysicalNetworks[val]) }">
9999
<a-select-option v-for="(opt, optIndex) in this.formPhysicalNetworks" :key="optIndex">
@@ -542,57 +542,67 @@ export default {
542542
this.fetchPhysicalNetworkData()
543543
},
544544
fetchPhysicalNetworkData () {
545+
this.formSelectedPhysicalNetwork = {}
546+
this.formPhysicalNetworks = []
545547
if (this.physicalNetworks != null) {
546548
this.formPhysicalNetworks = this.physicalNetworks
547-
if (this.arrayHasItems(this.formPhysicalNetworks)) {
548-
this.form.setFieldsValue({
549-
physicalnetworkid: 0
550-
})
551-
this.handlePhysicalNetworkChange(this.formPhysicalNetworks[0])
552-
}
549+
this.selectFirstPhysicalNetwork()
553550
} else {
554551
if (this.selectedZone === null || this.selectedZone === undefined) {
555552
return
556553
}
557-
const params = {}
558-
params.zoneid = this.selectedZone.id
559-
this.formPhysicalNetworksLoading = true
554+
const promises = []
555+
const params = {
556+
zoneid: this.selectedZone.id
557+
}
558+
this.formPhysicalNetworkLoading = true
560559
api('listPhysicalNetworks', params).then(json => {
561-
this.formPhysicalNetworks = []
562560
var networks = json.listphysicalnetworksresponse.physicalnetwork
563561
if (this.arrayHasItems(networks)) {
564-
for (const i in networks) {
565-
this.addPhysicalNetworkForGuestTrafficType(networks[i])
562+
for (const network of networks) {
563+
promises.push(this.addPhysicalNetworkForGuestTrafficType(network))
566564
}
567565
} else {
568566
this.formPhysicalNetworkLoading = false
569567
}
570568
}).finally(() => {
569+
if (this.arrayHasItems(promises)) {
570+
Promise.all(promises).catch(error => {
571+
this.$notifyError(error)
572+
}).finally(() => {
573+
this.formPhysicalNetworkLoading = false
574+
this.selectFirstPhysicalNetwork()
575+
})
576+
}
577+
})
578+
}
579+
},
580+
selectFirstPhysicalNetwork () {
581+
if (this.arrayHasItems(this.formPhysicalNetworks)) {
582+
this.form.setFieldsValue({
583+
physicalnetworkid: 0
571584
})
585+
this.handlePhysicalNetworkChange(this.formPhysicalNetworks[0])
572586
}
573587
},
574588
addPhysicalNetworkForGuestTrafficType (physicalNetwork) {
575589
const params = {}
576590
params.physicalnetworkid = physicalNetwork.id
577-
api('listTrafficTypes', params).then(json => {
578-
var trafficTypes = json.listtraffictypesresponse.traffictype
579-
if (this.arrayHasItems(trafficTypes)) {
580-
for (const i in trafficTypes) {
581-
if (trafficTypes[i].traffictype === 'Guest') {
582-
this.formPhysicalNetworks.push(physicalNetwork)
583-
break
591+
return new Promise((resolve, reject) => {
592+
api('listTrafficTypes', params).then(json => {
593+
var trafficTypes = json.listtraffictypesresponse.traffictype
594+
if (this.arrayHasItems(trafficTypes)) {
595+
for (const type of trafficTypes) {
596+
if (type.traffictype === 'Guest') {
597+
this.formPhysicalNetworks.push(physicalNetwork)
598+
break
599+
}
584600
}
585601
}
586-
} else {
587-
this.formPhysicalNetworkLoading = false
588-
}
589-
}).finally(() => {
590-
if (this.formPhysicalNetworks.length > 0 && this.isObjectEmpty(this.formSelectedPhysicalNetwork)) {
591-
this.form.setFieldsValue({
592-
physicalnetworkid: 0
593-
})
594-
this.handlePhysicalNetworkChange(this.formPhysicalNetworks[0])
595-
}
602+
resolve()
603+
}).catch(error => {
604+
reject(error)
605+
})
596606
})
597607
},
598608
handlePhysicalNetworkChange (physicalNet) {

0 commit comments

Comments
 (0)