From 72415622d9629aaf4ee9528cf003d1bb7cd834ee Mon Sep 17 00:00:00 2001 From: Yi-Ya Chen Date: Thu, 6 Mar 2025 12:12:43 +0800 Subject: [PATCH] feat: gray out class name selector Signed-off-by: Yi-Ya Chen --- .../components/settings/csi-driver-config.vue | 17 ++++++++++++++--- pkg/harvester/config/feature-flags.js | 3 ++- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pkg/harvester/components/settings/csi-driver-config.vue b/pkg/harvester/components/settings/csi-driver-config.vue index 2c611490..c48de914 100644 --- a/pkg/harvester/components/settings/csi-driver-config.vue +++ b/pkg/harvester/components/settings/csi-driver-config.vue @@ -75,7 +75,11 @@ export default { const csiDrivers = this.$store.getters[`${ inStore }/all`](CSI_DRIVER) || []; return this.configArr.length >= csiDrivers.length; - } + }, + + allowEmptySnapshotClassNameFeatureEnabled() { + return this.$store.getters['harvester-common/getFeatureEnabled']('allowEmptySnapshotClassName'); + }, }, methods: { @@ -139,7 +143,7 @@ export default { errors.push(this.t('validation.required', { key: this.t('harvester.setting.csiDriverConfig.volumeSnapshotClassName') }, true)); } - if (!config.value.backupVolumeSnapshotClassName) { + if (!this.allowEmptySnapshotClassNameFeatureEnabled && !config.value.backupVolumeSnapshotClassName) { errors.push(this.t('validation.required', { key: this.t('harvester.setting.csiDriverConfig.backupVolumeSnapshotClassName') }, true)); } }); @@ -162,6 +166,12 @@ export default { return driver === LONGHORN_DRIVER; }, + isBackupVolumeSnapshotClassNameDisabled(driver) { + if (this.allowEmptySnapshotClassNameFeatureEnabled) return true; + + return driver === LONGHORN_DRIVER; + }, + add() { this.configArr.push({ key: '', @@ -227,7 +237,8 @@ export default { v-model:value="driver.value.backupVolumeSnapshotClassName" :mode="mode" required - :disabled="disableEdit(driver.key)" + :disabled="isBackupVolumeSnapshotClassNameDisabled(driver.key)" + :selectable="!allowEmptySnapshotClassNameFeatureEnabled" :options="getVolumeSnapshotOptions(driver.key)" :label="t('harvester.setting.csiDriverConfig.backupVolumeSnapshotClassName')" @keydown.native.enter.prevent="()=>{}" diff --git a/pkg/harvester/config/feature-flags.js b/pkg/harvester/config/feature-flags.js index 253700e7..61638d17 100644 --- a/pkg/harvester/config/feature-flags.js +++ b/pkg/harvester/config/feature-flags.js @@ -43,7 +43,8 @@ const featuresV141 = [ // TODO: add v1.4.2 official release note const featuresV142 = [ ...featuresV141, - 'refreshIntervalInSecond' + 'refreshIntervalInSecond', + 'allowEmptySnapshotClassName' ]; // TODO: add v1.5.0 official release note