From 23ff9cd08b02dbc89b78a1e11029cd61840c5daa Mon Sep 17 00:00:00 2001 From: ashmrtn <3891298+ashmrtn@users.noreply.github.com> Date: Wed, 9 Aug 2023 11:04:58 -0700 Subject: [PATCH] Add CLI flag for disabling assist-incrementals (#3984) Adds hidden flag for disabling kopia-assisted incrementals --- #### Does this PR need a docs update or release note? - [ ] :white_check_mark: Yes, it's included - [ ] :clock1: Yes, but in a later PR - [x] :no_entry: No #### Type of change - [x] :sunflower: Feature - [ ] :bug: Bugfix - [ ] :world_map: Documentation - [ ] :robot: Supportability/Tests - [ ] :computer: CI/Deployment - [x] :broom: Tech Debt/Cleanup #### Issue(s) * closes #2360 #### Test Plan - [x] :muscle: Manual - [x] :zap: Unit test - [ ] :green_heart: E2E --- src/cli/backup/exchange.go | 1 + src/cli/backup/onedrive.go | 1 + src/cli/backup/sharepoint.go | 1 + src/cli/flags/options.go | 15 +++++++++++++++ src/cli/utils/options.go | 1 + src/cli/utils/options_test.go | 3 +++ 6 files changed, 22 insertions(+) diff --git a/src/cli/backup/exchange.go b/src/cli/backup/exchange.go index 0f11bd6bd..d69ee3adf 100644 --- a/src/cli/backup/exchange.go +++ b/src/cli/backup/exchange.go @@ -91,6 +91,7 @@ func addExchangeCommands(cmd *cobra.Command) *cobra.Command { flags.AddFetchParallelismFlag(c) flags.AddFailFastFlag(c) flags.AddDisableIncrementalsFlag(c) + flags.AddForceItemDataDownloadFlag(c) flags.AddDisableDeltaFlag(c) flags.AddEnableImmutableIDFlag(c) flags.AddDisableConcurrencyLimiterFlag(c) diff --git a/src/cli/backup/onedrive.go b/src/cli/backup/onedrive.go index b9d94fc41..4e241323d 100644 --- a/src/cli/backup/onedrive.go +++ b/src/cli/backup/onedrive.go @@ -78,6 +78,7 @@ func addOneDriveCommands(cmd *cobra.Command) *cobra.Command { flags.AddFailFastFlag(c) flags.AddDisableIncrementalsFlag(c) + flags.AddForceItemDataDownloadFlag(c) case listCommand: c, fs = utils.AddCommand(cmd, oneDriveListCmd()) diff --git a/src/cli/backup/sharepoint.go b/src/cli/backup/sharepoint.go index 7fcf58163..567c0878c 100644 --- a/src/cli/backup/sharepoint.go +++ b/src/cli/backup/sharepoint.go @@ -93,6 +93,7 @@ func addSharePointCommands(cmd *cobra.Command) *cobra.Command { flags.AddDataFlag(c, []string{dataLibraries}, true) flags.AddFailFastFlag(c) flags.AddDisableIncrementalsFlag(c) + flags.AddForceItemDataDownloadFlag(c) case listCommand: c, fs = utils.AddCommand(cmd, sharePointListCmd()) diff --git a/src/cli/flags/options.go b/src/cli/flags/options.go index 81a893f93..b24c5a9c9 100644 --- a/src/cli/flags/options.go +++ b/src/cli/flags/options.go @@ -9,6 +9,7 @@ const ( DisableConcurrencyLimiterFN = "disable-concurrency-limiter" DisableDeltaFN = "disable-delta" DisableIncrementalsFN = "disable-incrementals" + ForceItemDataDownloadFN = "force-item-data-download" EnableImmutableIDFN = "enable-immutable-id" FailFastFN = "fail-fast" FailedItemsFN = "failed-items" @@ -26,6 +27,7 @@ var ( DisableConcurrencyLimiterFV bool DisableDeltaFV bool DisableIncrementalsFV bool + ForceItemDataDownloadFV bool EnableImmutableIDFV bool FailFastFV bool FetchParallelismFV int @@ -110,6 +112,19 @@ func AddDisableIncrementalsFlag(cmd *cobra.Command) { cobra.CheckErr(fs.MarkHidden(DisableIncrementalsFN)) } +// Adds the hidden '--force-item-data-download' cli flag which, when set, +// disables kopia-assisted incremental backups. +func AddForceItemDataDownloadFlag(cmd *cobra.Command) { + fs := cmd.Flags() + fs.BoolVar( + &ForceItemDataDownloadFV, + ForceItemDataDownloadFN, + false, + "Disable cached data checks in backups to force item redownloads for "+ + "items changed since the last successful backup.") + cobra.CheckErr(fs.MarkHidden(ForceItemDataDownloadFN)) +} + // Adds the hidden '--disable-delta' cli flag which, when set, disables // delta based backups. func AddDisableDeltaFlag(cmd *cobra.Command) { diff --git a/src/cli/utils/options.go b/src/cli/utils/options.go index 932c56b6b..fdb92aced 100644 --- a/src/cli/utils/options.go +++ b/src/cli/utils/options.go @@ -23,6 +23,7 @@ func Control() control.Options { opt.DisableMetrics = flags.NoStatsFV opt.SkipReduce = flags.SkipReduceFV opt.ToggleFeatures.DisableIncrementals = flags.DisableIncrementalsFV + opt.ToggleFeatures.ForceItemDataDownload = flags.ForceItemDataDownloadFV opt.ToggleFeatures.DisableDelta = flags.DisableDeltaFV opt.ToggleFeatures.ExchangeImmutableIDs = flags.EnableImmutableIDFV opt.ToggleFeatures.DisableConcurrencyLimiter = flags.DisableConcurrencyLimiterFV diff --git a/src/cli/utils/options_test.go b/src/cli/utils/options_test.go index 1a8f7ddcd..6cb12e9d1 100644 --- a/src/cli/utils/options_test.go +++ b/src/cli/utils/options_test.go @@ -29,6 +29,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() { Run: func(cmd *cobra.Command, args []string) { assert.True(t, flags.FailFastFV, flags.FailFastFN) assert.True(t, flags.DisableIncrementalsFV, flags.DisableIncrementalsFN) + assert.True(t, flags.ForceItemDataDownloadFV, flags.ForceItemDataDownloadFN) assert.True(t, flags.DisableDeltaFV, flags.DisableDeltaFN) assert.True(t, flags.NoStatsFV, flags.NoStatsFN) assert.True(t, flags.RestorePermissionsFV, flags.RestorePermissionsFN) @@ -44,6 +45,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() { flags.AddFailFastFlag(cmd) flags.AddDisableIncrementalsFlag(cmd) + flags.AddForceItemDataDownloadFlag(cmd) flags.AddDisableDeltaFlag(cmd) flags.AddRestorePermissionsFlag(cmd) flags.AddSkipReduceFlag(cmd) @@ -56,6 +58,7 @@ func (suite *OptionsUnitSuite) TestAddExchangeCommands() { "test", "--" + flags.FailFastFN, "--" + flags.DisableIncrementalsFN, + "--" + flags.ForceItemDataDownloadFN, "--" + flags.DisableDeltaFN, "--" + flags.NoStatsFN, "--" + flags.RestorePermissionsFN,