fix #cloud-config disappear when add/remove ssh key (#273) (#277)

(cherry picked from commit 9dd8ae479ad608f3e3a6fe55848113ef4184cc1f)

Signed-off-by: Andy Lee <andy.lee@suse.com>
Co-authored-by: Andy Lee <andy.lee@suse.com>
This commit is contained in:
mergify[bot] 2025-05-08 17:34:15 +08:00 committed by GitHub
parent 43064576d6
commit 1e270268d8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -922,7 +922,9 @@ export default {
return undefined; return undefined;
} }
return userDataYaml; const hasCloudComment = this.hasCloudConfigComment(userDataYaml);
return hasCloudComment ? userDataYaml : `#cloud-config\n${ userDataYaml }`;
} catch (e) { } catch (e) {
console.error('Error: Unable to parse yaml document', e); // eslint-disable-line no-console console.error('Error: Unable to parse yaml document', e); // eslint-disable-line no-console
@ -1443,7 +1445,6 @@ export default {
sshAuthorizedKeys.splice(index, 1); sshAuthorizedKeys.splice(index, 1);
} }
}); });
const userDataJson = this.convertToJson(this.userScript); const userDataJson = this.convertToJson(this.userScript);
userDataJson.ssh_authorized_keys = sshAuthorizedKeys; userDataJson.ssh_authorized_keys = sshAuthorizedKeys;
@ -1579,19 +1580,9 @@ export default {
*/ */
handler(neu) { handler(neu) {
if (this.deleteAgent) { if (this.deleteAgent) {
let out = this.getUserData({ this['userScript'] = this.getUserData({
installAgent: neu, osType: this.osType, deletePackage: this.deletePackage 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.refreshYamlEditor();
} }
this.deleteAgent = true; this.deleteAgent = true;
@ -1616,15 +1607,16 @@ export default {
}, },
sshKey(neu, old) { 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); const _diff = difference(old, neu);
// delete removed ssh key in userdata if needed
if (_diff.length > 0 && this.isCreate) { if (_diff.length > 0 && this.isCreate) {
this.deleteSSHFromUserData(_diff); this.deleteSSHFromUserData(_diff);
} }
// refresh yaml editor to get the latest userScript
this.userScript = this.getUserData({ installAgent: this.installAgent, osType: this.osType });
this.refreshYamlEditor();
} }
} }
}; };