From 0b37467f7637639209c27570bfe5633a41b96ac0 Mon Sep 17 00:00:00 2001 From: Caio Torres Date: Thu, 27 Nov 2025 06:36:55 -0300 Subject: [PATCH] fix: create new secret on vm creation (#614) * fix: create new secret on vm creation Signed-off-by: Caio Torres * fix: ensure parseVM result is immutable Signed-off-by: Caio Torres --------- Signed-off-by: Caio Torres --- .../edit/kubevirt.io.virtualmachine/index.vue | 1 + pkg/harvester/mixins/harvester-vm/index.js | 35 ++++++++++++------- 2 files changed, 23 insertions(+), 13 deletions(-) diff --git a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue index e30800f1..8ecdaea8 100644 --- a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue +++ b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue @@ -490,6 +490,7 @@ export default { if (this.isSingle) { if (!this.value.spec.template.spec.hostname) { this.value.spec.template.spec['hostname'] = this.value.metadata.name; + this.spec.template.spec['hostname'] = this.value.metadata.name; } } diff --git a/pkg/harvester/mixins/harvester-vm/index.js b/pkg/harvester/mixins/harvester-vm/index.js index 9e0218e6..0df207d1 100644 --- a/pkg/harvester/mixins/harvester-vm/index.js +++ b/pkg/harvester/mixins/harvester-vm/index.js @@ -273,7 +273,7 @@ export default { needNewSecret() { // When creating a template it is always necessary to create a new secret. - return this.isCreate ? true : this.showYaml ? false : this.resourceType === HCI.VM_VERSION; + return this.showYaml ? false : this.resourceType === HCI.VM_VERSION || this.isCreate; }, defaultTerminationSetting() { @@ -708,17 +708,7 @@ export default { const volumeClaimTemplates = []; disk.forEach( (R, index) => { - const prefixName = this.value.metadata?.name || ''; - - let dataVolumeName = ''; - - if (R.source === SOURCE_TYPE.ATTACH_VOLUME) { - dataVolumeName = R.volumeName; - } else if (this.isClone || !this.hasCreateVolumes.includes(R.realName)) { - dataVolumeName = `${ prefixName }-${ R.name }-${ randomStr(5).toLowerCase() }`; - } else { - dataVolumeName = R.realName; - } + const dataVolumeName = this.parseDataVolumeName(R); const _disk = this.parseDisk(R, index); const _volume = this.parseVolume(R, dataVolumeName); @@ -1013,6 +1003,25 @@ export default { this['cpuMemoryHotplugEnabled'] = cpuMemoryHotplugEnabled; }, + parseDataVolumeName(R) { + const prefixName = this.value.metadata?.name || ''; + let dataVolumeName = ''; + + if (!R.dataVolumeName) { + if (R.source === SOURCE_TYPE.ATTACH_VOLUME) { + dataVolumeName = R.volumeName; + } else if (this.isClone || !this.hasCreateVolumes.includes(R.realName)) { + dataVolumeName = `${ prefixName }-${ R.name }-${ randomStr(5).toLowerCase() }`; + } else { + dataVolumeName = R.realName; + } + + R.dataVolumeName = dataVolumeName; + } + + return R.dataVolumeName; + }, + parseDisk(R, index) { const out = { name: R.name }; @@ -1638,7 +1647,7 @@ export default { secretRef: { handler(secret) { - if (secret && this.resourceType !== HCI.BACKUP) { + if (secret && this.resourceType !== HCI.BACKUP && this.resourceType !== HCI.VM) { this.secretName = secret?.metadata.name; } },