UI: make a newly added Network the default one (#9708) (#10022)

* UI: Checkbox to make a newly added Network the default one in the Instance's Network tab

* Fixed an issue that was causing exit from network tab after add-network

Co-authored-by: Abhisar Sinha <63767682+abh1sar@users.noreply.github.com>
This commit is contained in:
João Jandre 2024-12-03 03:44:08 -03:00 committed by GitHub
parent d17de834a5
commit f3a474bb9e
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 31 additions and 2 deletions

View File

@ -1368,6 +1368,7 @@
"label.maintenance": "Maintenance", "label.maintenance": "Maintenance",
"label.majorsequence": "Major Sequence", "label.majorsequence": "Major Sequence",
"label.make": "Make", "label.make": "Make",
"label.make.default": "Make default",
"label.make.project.owner": "Make Account project owner", "label.make.project.owner": "Make Account project owner",
"label.make.user.project.owner": "Make User project owner", "label.make.user.project.owner": "Make User project owner",
"label.makeredundant": "Make redundant", "label.makeredundant": "Make redundant",

View File

@ -106,6 +106,11 @@
</a-select> </a-select>
<p class="modal-form__label">{{ $t('label.publicip') }}:</p> <p class="modal-form__label">{{ $t('label.publicip') }}:</p>
<a-input v-model:value="addNetworkData.ip"></a-input> <a-input v-model:value="addNetworkData.ip"></a-input>
<br>
<a-checkbox v-model:checked="addNetworkData.makedefault">
{{ $t('label.make.default') }}
</a-checkbox>
<br>
</div> </div>
<div :span="24" class="action-button"> <div :span="24" class="action-button">
@ -248,13 +253,15 @@ export default {
data () { data () {
return { return {
vm: {}, vm: {},
nic: {},
showAddNetworkModal: false, showAddNetworkModal: false,
showUpdateIpModal: false, showUpdateIpModal: false,
showSecondaryIpModal: false, showSecondaryIpModal: false,
addNetworkData: { addNetworkData: {
allNetworks: [], allNetworks: [],
network: '', network: '',
ip: '' ip: '',
makedefault: false
}, },
loadingNic: false, loadingNic: false,
editIpAddressNic: '', editIpAddressNic: '',
@ -332,6 +339,7 @@ export default {
this.showSecondaryIpModal = false this.showSecondaryIpModal = false
this.addNetworkData.network = '' this.addNetworkData.network = ''
this.addNetworkData.ip = '' this.addNetworkData.ip = ''
this.addNetworkData.makedefault = false
this.editIpAddressValue = '' this.editIpAddressValue = ''
this.newSecondaryIp = '' this.newSecondaryIp = ''
}, },
@ -368,7 +376,19 @@ export default {
this.$pollJob({ this.$pollJob({
jobId: response.addnictovirtualmachineresponse.jobid, jobId: response.addnictovirtualmachineresponse.jobid,
successMessage: this.$t('message.success.add.network'), successMessage: this.$t('message.success.add.network'),
successMethod: () => { successMethod: async () => {
if (this.addNetworkData.makedefault) {
try {
this.nic = await this.getNic(params.networkid, params.virtualmachineid)
if (this.nic) {
this.setAsDefault(this.nic)
} else {
this.$notifyError('NIC data not found.')
}
} catch (error) {
this.$notifyError('Failed to fetch NIC data.')
}
}
this.loadingNic = false this.loadingNic = false
this.closeModals() this.closeModals()
}, },
@ -390,6 +410,14 @@ export default {
this.loadingNic = false this.loadingNic = false
}) })
}, },
getNic (networkid, virtualmachineid) {
const params = {}
params.virtualmachineid = virtualmachineid
params.networkid = networkid
return api('listNics', params).then(response => {
return response.listnicsresponse.nic[0]
})
},
setAsDefault (item) { setAsDefault (item) {
this.loadingNic = true this.loadingNic = true
api('updateDefaultNicForVirtualMachine', { api('updateDefaultNicForVirtualMachine', {