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);
}
}