From 1e270268d881fb16939f80338d821fd21e011dc7 Mon Sep 17 00:00:00 2001 From: "mergify[bot]" <37929162+mergify[bot]@users.noreply.github.com> Date: Thu, 8 May 2025 17:34:15 +0800 Subject: [PATCH] fix #cloud-config disappear when add/remove ssh key (#273) (#277) (cherry picked from commit 9dd8ae479ad608f3e3a6fe55848113ef4184cc1f) Signed-off-by: Andy Lee Co-authored-by: Andy Lee --- pkg/harvester/mixins/harvester-vm/index.js | 26 ++++++++-------------- 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/pkg/harvester/mixins/harvester-vm/index.js b/pkg/harvester/mixins/harvester-vm/index.js index bc7e6283..558a9976 100644 --- a/pkg/harvester/mixins/harvester-vm/index.js +++ b/pkg/harvester/mixins/harvester-vm/index.js @@ -922,7 +922,9 @@ export default { return undefined; } - return userDataYaml; + const hasCloudComment = this.hasCloudConfigComment(userDataYaml); + + return hasCloudComment ? userDataYaml : `#cloud-config\n${ userDataYaml }`; } catch (e) { console.error('Error: Unable to parse yaml document', e); // eslint-disable-line no-console @@ -1443,7 +1445,6 @@ export default { sshAuthorizedKeys.splice(index, 1); } }); - const userDataJson = this.convertToJson(this.userScript); userDataJson.ssh_authorized_keys = sshAuthorizedKeys; @@ -1579,19 +1580,9 @@ export default { */ handler(neu) { if (this.deleteAgent) { - let out = this.getUserData({ + this['userScript'] = this.getUserData({ installAgent: neu, osType: this.osType, deletePackage: this.deletePackage }); - - if (neu) { - const hasCloudComment = this.hasCloudConfigComment(out); - - if (!hasCloudComment) { - out = `#cloud-config\n${ out }`; - } - } - - this['userScript'] = out; this.refreshYamlEditor(); } this.deleteAgent = true; @@ -1616,15 +1607,16 @@ 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); + // delete removed ssh key in userdata if needed if (_diff.length > 0 && this.isCreate) { this.deleteSSHFromUserData(_diff); } + + // refresh yaml editor to get the latest userScript + this.userScript = this.getUserData({ installAgent: this.installAgent, osType: this.osType }); + this.refreshYamlEditor(); } } };