diff --git a/pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineSSHKey.vue b/pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineSSHKey.vue index 55a35f01..f3437726 100644 --- a/pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineSSHKey.vue +++ b/pkg/harvester/edit/kubevirt.io.virtualmachine/VirtualMachineSSHKey.vue @@ -6,8 +6,7 @@ import { LabeledInput } from '@components/Form/LabeledInput'; import LabeledSelect from '@shell/components/form/LabeledSelect'; import ModalWithCard from '@shell/components/ModalWithCard'; -import { clone } from '@shell/utils/object'; -import { _VIEW } from '@shell/config/query-params'; +import { _VIEW, _EDIT } from '@shell/config/query-params'; import { NAMESPACE } from '@shell/config/types'; import { HCI } from '../../types'; @@ -91,6 +90,9 @@ export default { }, sshOption() { + if (this.mode === _VIEW || this.mode === _EDIT) { + return []; + } const out = this.$store.getters['harvester/all'](HCI.SSH).map( (O) => { return { label: O.id, @@ -126,10 +128,9 @@ export default { this.checkedSsh = neu; }, - checkedSsh(val, old) { - if ( val.includes(_NEW)) { - this['checkedSsh'] = old; - this.update(); + checkedSsh(val) { + // if click on Create a New... + if (val.includes(_NEW)) { this.show(); } } @@ -175,6 +176,7 @@ export default { if (res.id) { this.checkedSsh.push(`${ this.namespace }/${ this.sshName }`); + this.update(); } }, @@ -232,7 +234,9 @@ export default { }, update() { - this.$emit('update:sshKey', clone(this.checkedSsh)); + const sshKeys = this.checkedSsh.filter((key) => key !== _NEW); + + this.$emit('update:sshKey', sshKeys); }, } }; @@ -243,13 +247,13 @@ export default { diff --git a/pkg/harvester/mixins/harvester-vm/index.js b/pkg/harvester/mixins/harvester-vm/index.js index 48f1c35d..f95f0fd3 100644 --- a/pkg/harvester/mixins/harvester-vm/index.js +++ b/pkg/harvester/mixins/harvester-vm/index.js @@ -900,8 +900,8 @@ export default { }, /** - * Generate user data yaml which is decide by the "Install guest agent", - * "OS type", "SSH Keys" and user input. + * Generate user data yaml which is decided by the + * "Install guest agent", "OS type", "SSH keys" and user input. * @param config */ getUserData(config) { @@ -1218,7 +1218,6 @@ export default { let secret = this.getSecret(vm.spec); - // const userData = this.getUserData({ osType: this.osType, installAgent: this.installAgent }); if (!secret && this.isEdit && this.secretRef) { // When editing the vm, if the userData and networkData are deleted, we also need to clean up the secret values secret = this.secretRef; @@ -1620,9 +1619,13 @@ export default { }, sshKey(neu, old) { + // refresh yaml editor to get the latest userScript + this.userScript = this.getUserData({ installAgent: this.installAgent, osType: this.osType }); + this.refreshYamlEditor(); + const _diff = difference(old, neu); - if (_diff.length && this.isEdit) { + if (_diff.length > 0 && this.isCreate) { this.deleteSSHFromUserData(_diff); } }