diff --git a/pkg/harvester/config/feature-flags.js b/pkg/harvester/config/feature-flags.js index 1ca4aa22..a5341b52 100644 --- a/pkg/harvester/config/feature-flags.js +++ b/pkg/harvester/config/feature-flags.js @@ -75,6 +75,7 @@ const FEATURE_FLAGS = { 'expandOnlineEncryptedVolume', 'longhornV2HugepageSettings', 'staticIPForVM', + 'fsFreezeDeadline', ], }; diff --git a/pkg/harvester/dialog/HarvesterBackupModal.vue b/pkg/harvester/dialog/HarvesterBackupModal.vue index 6b411fe6..40bc208e 100644 --- a/pkg/harvester/dialog/HarvesterBackupModal.vue +++ b/pkg/harvester/dialog/HarvesterBackupModal.vue @@ -5,6 +5,8 @@ import { Card } from '@components/Card'; import { Banner } from '@components/Banner'; import AsyncButton from '@shell/components/AsyncButton'; import { LabeledInput } from '@components/Form/LabeledInput'; +import LabeledSelect from '@shell/components/form/LabeledSelect'; +import { DEFAULT_FS_FREEZE_DEADLINE, getFsFreezeDeadlineOptions } from '../utils/backup'; export default { name: 'HarvesterBackupModal', @@ -15,6 +17,7 @@ export default { AsyncButton, Card, LabeledInput, + LabeledSelect, Banner }, @@ -27,8 +30,9 @@ export default { data() { return { - backUpName: '', - errors: [] + backUpName: '', + errors: [], + fsFreezeDeadline: DEFAULT_FS_FREEZE_DEADLINE }; }, @@ -37,12 +41,22 @@ export default { actionResource() { return this.resources[0]; + }, + + fsFreezeDeadlineEnabled() { + return this.$store.getters['harvester-common/getFeatureEnabled']('fsFreezeDeadline'); + }, + + fsFreezeDeadlineOptions() { + return getFsFreezeDeadlineOptions(this.t); } }, methods: { close() { this.backUpName = ''; + this.fsFreezeDeadline = DEFAULT_FS_FREEZE_DEADLINE; + this.errors = []; this.$emit('close'); }, @@ -51,7 +65,7 @@ export default { try { const res = await this.actionResource.doAction( 'backup', - { name: this.backUpName }, + { name: this.backUpName, fsFreezeDeadline: this.fsFreezeDeadline }, {}, false ); @@ -100,9 +114,18 @@ export default {