config-tools: ivshmem.vm_name changes with name edit

This patch is to fix the issue that when user edits VM name, the VM_NAME
field in IVSHMEM data doesn't sync.

To fix this, configForm emits a 'vmNameChange' when VM name is edited.
Then old name is replaced with new name. And when deleting VM, the old
name is replaced with null.

Tracked-On: #7445

Signed-off-by: Zhou, Wu <wu.zhou@intel.com>
This commit is contained in:
Wu Zhou 2022-05-10 10:18:42 +08:00 committed by acrnsi-robot
parent c4f9146746
commit c12f3adee0
2 changed files with 19 additions and 1 deletions

View File

@ -67,6 +67,7 @@
@deleteVM="deleteVM"
@scenarioConfigFormDataUpdate="scenarioConfigFormDataUpdate"
@vmNameChange="vmNameChange"
/>
</div>
</div>
@ -212,6 +213,7 @@ export default {
this.scenario.vm.splice(postvmlist[i], 1);
}
}
this.vmNameChange('', this.scenario.vm[currentVMIndex].name)
this.scenario.vm.splice(currentVMIndex, 1);
this.updateCurrentFormSchema()
this.updateCurrentFormData()
@ -230,6 +232,18 @@ export default {
}
this.updateCurrentFormData()
},
vmNameChange(newname, oldname) {
let hvdata = this.scenario.hv
for (let key in hvdata.FEATURES.IVSHMEM.IVSHMEM_REGION) {
let region = hvdata.FEATURES.IVSHMEM.IVSHMEM_REGION[key]
for (let key1 in region.IVSHMEM_VMS.IVSHMEM_VM) {
let ivshmem_vm = region.IVSHMEM_VMS.IVSHMEM_VM[key1];
if (ivshmem_vm.VM_NAME === oldname) {
ivshmem_vm.VM_NAME = newname
}
}
}
},
assignVMID() {
let vm_priority = {
'PRE_LAUNCHED_VM': 0,

View File

@ -62,7 +62,7 @@ i18n.useLocal(localizeEn);
export default {
name: "ConfigForm",
components: {Icon, Minus, VueForm},
emits: ['scenarioConfigFormDataUpdate', 'deleteVM'],
emits: ['scenarioConfigFormDataUpdate', 'deleteVM', 'vmNameChange'],
props: {
currentActiveVMID: {type: Number},
currentFormSchema: {type: Object},
@ -109,6 +109,10 @@ export default {
let newID = newValue.hasOwnProperty('@id') ? newValue['@id'] : -1;
let oldID = oldValue.hasOwnProperty('@id') ? oldValue['@id'] : -1;
if (newID === oldID) {
if (oldValue.name != newValue.name) {
this.$emit('vmNameChange', newValue.name, oldValue.name)
}
this.$emit('scenarioConfigFormDataUpdate', newID, newValue)
}
// this.$emit('update:scenarioData', this.formData)