From e8017e14c843f175aa7c064aeeb18a9333f49a05 Mon Sep 17 00:00:00 2001 From: Yi-Ya Chen Date: Thu, 6 Feb 2025 18:34:58 +0800 Subject: [PATCH 1/5] feat: add persistent state checkbox Signed-off-by: Yi-Ya Chen --- .../edit/kubevirt.io.virtualmachine/index.vue | 11 ++++++ pkg/harvester/l10n/en-us.yaml | 1 + pkg/harvester/mixins/harvester-vm/index.js | 39 +++++++++++-------- 3 files changed, 34 insertions(+), 17 deletions(-) diff --git a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue index e0c73f37..169ecef4 100644 --- a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue +++ b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue @@ -889,6 +889,17 @@ export default { :label="t('harvester.virtualMachine.secureBoot')" :mode="mode" /> + + + Date: Thu, 6 Feb 2025 18:49:34 +0800 Subject: [PATCH 2/5] feat: add checkbox to create templates Signed-off-by: Yi-Ya Chen --- .../harvesterhci.io.virtualmachinetemplateversion.vue | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue b/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue index 794f8c8b..66a8ae72 100644 --- a/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue +++ b/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue @@ -481,6 +481,16 @@ export default { :label="t('harvester.virtualMachine.secureBoot')" :mode="mode" /> + + From 68ba934b5a579179f6bb57170ee340fa1f8f37d1 Mon Sep 17 00:00:00 2001 From: Yi-Ya Chen Date: Fri, 7 Feb 2025 16:54:41 +0800 Subject: [PATCH 3/5] refactor: rewrite render logic Signed-off-by: Yi-Ya Chen --- ...erhci.io.virtualmachinetemplateversion.vue | 19 ++++--- .../edit/kubevirt.io.virtualmachine/index.vue | 19 ++++--- pkg/harvester/mixins/harvester-vm/impl.js | 6 ++- pkg/harvester/mixins/harvester-vm/index.js | 54 +++++++++++-------- 4 files changed, 55 insertions(+), 43 deletions(-) diff --git a/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue b/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue index 66a8ae72..04410a59 100644 --- a/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue +++ b/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue @@ -465,6 +465,15 @@ export default { :mode="mode" /> + + - - diff --git a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue index 169ecef4..1ec85f2a 100644 --- a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue +++ b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue @@ -873,6 +873,15 @@ export default { :mode="mode" /> + + - - Date: Fri, 7 Feb 2025 18:11:02 +0800 Subject: [PATCH 4/5] feat: add feature flag Signed-off-by: Yi-Ya Chen --- pkg/harvester/config/feature-flags.js | 3 ++- .../edit/harvesterhci.io.virtualmachinetemplateversion.vue | 2 +- pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue | 2 +- .../models/harvesterhci.io.virtualmachinetemplateversion.js | 4 ++++ pkg/harvester/models/kubevirt.io.virtualmachine.js | 4 ++++ 5 files changed, 12 insertions(+), 3 deletions(-) diff --git a/pkg/harvester/config/feature-flags.js b/pkg/harvester/config/feature-flags.js index 310d6fd0..05581682 100644 --- a/pkg/harvester/config/feature-flags.js +++ b/pkg/harvester/config/feature-flags.js @@ -47,7 +47,8 @@ const featuresV142 = [ // TODO: add v1.5.0 official release note const featuresV150 = [ - ...featuresV142 + ...featuresV142, + 'VMPersistentState' ]; export const RELEASE_FEATURES = { diff --git a/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue b/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue index 04410a59..6edcb18a 100644 --- a/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue +++ b/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue @@ -466,7 +466,7 @@ export default { /> Date: Mon, 10 Feb 2025 18:18:49 +0800 Subject: [PATCH 5/5] refactor: update feature flag Signed-off-by: Yi-Ya Chen --- pkg/harvester/config/feature-flags.js | 2 +- ...rvesterhci.io.virtualmachinetemplateversion.vue | 6 +++--- .../edit/kubevirt.io.virtualmachine/index.vue | 6 +++--- pkg/harvester/l10n/en-us.yaml | 2 +- pkg/harvester/mixins/harvester-vm/impl.js | 2 +- pkg/harvester/mixins/harvester-vm/index.js | 14 +++++++------- ...arvesterhci.io.virtualmachinetemplateversion.js | 4 ++-- pkg/harvester/models/kubevirt.io.virtualmachine.js | 4 ++-- 8 files changed, 20 insertions(+), 20 deletions(-) diff --git a/pkg/harvester/config/feature-flags.js b/pkg/harvester/config/feature-flags.js index 05581682..5ece95f0 100644 --- a/pkg/harvester/config/feature-flags.js +++ b/pkg/harvester/config/feature-flags.js @@ -48,7 +48,7 @@ const featuresV142 = [ // TODO: add v1.5.0 official release note const featuresV150 = [ ...featuresV142, - 'VMPersistentState' + 'tpmPersistentState' ]; export const RELEASE_FEATURES = { diff --git a/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue b/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue index 6edcb18a..9e07fd00 100644 --- a/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue +++ b/pkg/harvester/edit/harvesterhci.io.virtualmachinetemplateversion.vue @@ -466,11 +466,11 @@ export default { /> diff --git a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue index 47402f22..8e67f575 100644 --- a/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue +++ b/pkg/harvester/edit/kubevirt.io.virtualmachine/index.vue @@ -874,11 +874,11 @@ export default { /> diff --git a/pkg/harvester/l10n/en-us.yaml b/pkg/harvester/l10n/en-us.yaml index 7926e9f9..8df57428 100644 --- a/pkg/harvester/l10n/en-us.yaml +++ b/pkg/harvester/l10n/en-us.yaml @@ -594,7 +594,7 @@ harvester: enableUsb: Enable USB Tablet advancedOptions: tpm: Enable TPM - persistentState: Persistent State + tpmPersistentState: TPM Persistent State cpuManager: prefix: You must enable CPU Manager for at least one node in middle: 'host page' diff --git a/pkg/harvester/mixins/harvester-vm/impl.js b/pkg/harvester/mixins/harvester-vm/impl.js index 7592990b..ffb0e56a 100644 --- a/pkg/harvester/mixins/harvester-vm/impl.js +++ b/pkg/harvester/mixins/harvester-vm/impl.js @@ -140,7 +140,7 @@ export default { return !!spec?.template?.spec?.domain?.devices?.tpm; }, - isPersistentStateEnabled(spec) { + isTPMPersistentStateEnabled(spec) { return !!spec?.template?.spec?.domain?.devices?.tpm?.persistent; }, diff --git a/pkg/harvester/mixins/harvester-vm/index.js b/pkg/harvester/mixins/harvester-vm/index.js index 6aa38a91..062e57d1 100644 --- a/pkg/harvester/mixins/harvester-vm/index.js +++ b/pkg/harvester/mixins/harvester-vm/index.js @@ -164,7 +164,7 @@ export default { accessCredentials: [], efiEnabled: false, tpmEnabled: false, - persistentStateEnabled: false, + tpmPersistentStateEnabled: false, secureBoot: false, userDataTemplateId: '', saveUserDataAsClearText: false, @@ -368,7 +368,7 @@ export default { const installAgent = this.hasInstallAgent(userData, osType, true); const efiEnabled = this.isEfiEnabled(spec); const tpmEnabled = this.isTpmEnabled(spec); - const persistentStateEnabled = this.isPersistentStateEnabled(spec); + const tpmPersistentStateEnabled = this.isTPMPersistentStateEnabled(spec); const secureBoot = this.isSecureBoot(spec); const cpuPinning = this.isCpuPinning(spec); @@ -401,7 +401,7 @@ export default { this['installUSBTablet'] = installUSBTablet; this['efiEnabled'] = efiEnabled; this['tpmEnabled'] = tpmEnabled; - this['persistentStateEnabled'] = persistentStateEnabled; + this['tpmPersistentStateEnabled'] = tpmPersistentStateEnabled; this['secureBoot'] = secureBoot; this['cpuPinning'] = cpuPinning; @@ -1424,8 +1424,8 @@ export default { } }, - setPersistentStateEnabled(persistentStateEnabled) { - if (persistentStateEnabled) { + setTPMPersistentStateEnabled(tpmPersistentStateEnabled) { + if (tpmPersistentStateEnabled) { set(this.spec.template.spec.domain.devices, 'tpm', { persistent: true }); } else { set(this.spec.template.spec.domain.devices, 'tpm', {}); @@ -1555,8 +1555,8 @@ export default { this.setTPM(val); }, - persistentStateEnabled(val) { - this.setPersistentStateEnabled(val); + tpmPersistentStateEnabled(val) { + this.setTPMPersistentStateEnabled(val); }, installAgent: { diff --git a/pkg/harvester/models/harvesterhci.io.virtualmachinetemplateversion.js b/pkg/harvester/models/harvesterhci.io.virtualmachinetemplateversion.js index a9f0ccef..b89e148e 100644 --- a/pkg/harvester/models/harvesterhci.io.virtualmachinetemplateversion.js +++ b/pkg/harvester/models/harvesterhci.io.virtualmachinetemplateversion.js @@ -273,7 +273,7 @@ export default class HciVmTemplateVersion extends HarvesterResource { this.spec.vm.spec.template.metadata['labels'] = { ...wasIgnored, ...val }; } - get persistentStateFeatureEnabled() { - return this.$rootGetters['harvester-common/getFeatureEnabled']('VMPersistentState'); + get tpmPersistentStateFeatureEnabled() { + return this.$rootGetters['harvester-common/getFeatureEnabled']('tpmPersistentState'); } } diff --git a/pkg/harvester/models/kubevirt.io.virtualmachine.js b/pkg/harvester/models/kubevirt.io.virtualmachine.js index 3643c784..9eea0783 100644 --- a/pkg/harvester/models/kubevirt.io.virtualmachine.js +++ b/pkg/harvester/models/kubevirt.io.virtualmachine.js @@ -1175,8 +1175,8 @@ export default class VirtVm extends HarvesterResource { return this.$rootGetters['harvester-common/getFeatureEnabled']('volumeEncryption'); } - get persistentStateFeatureEnabled() { - return this.$rootGetters['harvester-common/getFeatureEnabled']('VMPersistentState'); + get tpmPersistentStateFeatureEnabled() { + return this.$rootGetters['harvester-common/getFeatureEnabled']('tpmPersistentState'); } setInstanceLabels(val) {