From 264c1968abf885401ac1df40b9fbccc0b6c566ef Mon Sep 17 00:00:00 2001 From: ashmrtn Date: Fri, 26 May 2023 15:22:49 -0700 Subject: [PATCH] Move some interfaces to kopia package (#3500) Searching for new bases is mostly kopia-specific but is going to require the store interface. With the way packages and interfaces are currently laid out it makes it impossible to easily get the interface added to the inject package without a cycle. This moves functions that the kopia package provides into a subpackage of the kopia package that other things can then import This change only moves code. No logic is updated --- #### 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 - [ ] :sunflower: Feature - [ ] :bug: Bugfix - [ ] :world_map: Documentation - [ ] :robot: Supportability/Tests - [ ] :computer: CI/Deployment - [x] :broom: Tech Debt/Cleanup #### Issue(s) * #3202 #### Test Plan - [ ] :muscle: Manual - [x] :zap: Unit test - [ ] :green_heart: E2E --- src/internal/kopia/inject/inject.go | 36 ++++++++++++++++++++++++ src/internal/operations/backup.go | 3 +- src/internal/operations/inject/inject.go | 24 ---------------- src/internal/operations/manifests.go | 2 +- src/internal/streamstore/streamstore.go | 2 +- 5 files changed, 40 insertions(+), 27 deletions(-) create mode 100644 src/internal/kopia/inject/inject.go diff --git a/src/internal/kopia/inject/inject.go b/src/internal/kopia/inject/inject.go new file mode 100644 index 000000000..9c1f8c697 --- /dev/null +++ b/src/internal/kopia/inject/inject.go @@ -0,0 +1,36 @@ +package inject + +import ( + "context" + + "github.com/alcionai/corso/src/internal/common/prefixmatcher" + "github.com/alcionai/corso/src/internal/data" + "github.com/alcionai/corso/src/internal/kopia" + "github.com/alcionai/corso/src/pkg/backup/details" + "github.com/alcionai/corso/src/pkg/fault" + "github.com/alcionai/corso/src/pkg/path" +) + +type ( + BackupConsumer interface { + ConsumeBackupCollections( + ctx context.Context, + bases []kopia.IncrementalBase, + cs []data.BackupCollection, + pmr prefixmatcher.StringSetReader, + tags map[string]string, + buildTreeWithBase bool, + errs *fault.Bus, + ) (*kopia.BackupStats, *details.Builder, kopia.DetailsMergeInfoer, error) + } + + RestoreProducer interface { + ProduceRestoreCollections( + ctx context.Context, + snapshotID string, + paths []path.RestorePaths, + bc kopia.ByteCounter, + errs *fault.Bus, + ) ([]data.RestoreCollection, error) + } +) diff --git a/src/internal/operations/backup.go b/src/internal/operations/backup.go index 033fca8bb..dc2f1f954 100644 --- a/src/internal/operations/backup.go +++ b/src/internal/operations/backup.go @@ -15,6 +15,7 @@ import ( "github.com/alcionai/corso/src/internal/diagnostics" "github.com/alcionai/corso/src/internal/events" "github.com/alcionai/corso/src/internal/kopia" + kinject "github.com/alcionai/corso/src/internal/kopia/inject" "github.com/alcionai/corso/src/internal/model" "github.com/alcionai/corso/src/internal/observe" "github.com/alcionai/corso/src/internal/operations/inject" @@ -434,7 +435,7 @@ func builderFromReason(ctx context.Context, tenant string, r kopia.Reason) (*pat // calls kopia to backup the collections of data func consumeBackupCollections( ctx context.Context, - bc inject.BackupConsumer, + bc kinject.BackupConsumer, tenantID string, reasons []kopia.Reason, mans []*kopia.ManifestEntry, diff --git a/src/internal/operations/inject/inject.go b/src/internal/operations/inject/inject.go index 55c472f7c..f262e3ac0 100644 --- a/src/internal/operations/inject/inject.go +++ b/src/internal/operations/inject/inject.go @@ -6,13 +6,11 @@ import ( "github.com/alcionai/corso/src/internal/common/idname" "github.com/alcionai/corso/src/internal/common/prefixmatcher" "github.com/alcionai/corso/src/internal/data" - "github.com/alcionai/corso/src/internal/kopia" "github.com/alcionai/corso/src/pkg/account" "github.com/alcionai/corso/src/pkg/backup/details" "github.com/alcionai/corso/src/pkg/control" "github.com/alcionai/corso/src/pkg/control/repository" "github.com/alcionai/corso/src/pkg/fault" - "github.com/alcionai/corso/src/pkg/path" "github.com/alcionai/corso/src/pkg/selectors" ) @@ -31,28 +29,6 @@ type ( Wait() *data.CollectionStats } - BackupConsumer interface { - ConsumeBackupCollections( - ctx context.Context, - bases []kopia.IncrementalBase, - cs []data.BackupCollection, - pmr prefixmatcher.StringSetReader, - tags map[string]string, - buildTreeWithBase bool, - errs *fault.Bus, - ) (*kopia.BackupStats, *details.Builder, kopia.DetailsMergeInfoer, error) - } - - RestoreProducer interface { - ProduceRestoreCollections( - ctx context.Context, - snapshotID string, - paths []path.RestorePaths, - bc kopia.ByteCounter, - errs *fault.Bus, - ) ([]data.RestoreCollection, error) - } - RestoreConsumer interface { ConsumeRestoreCollections( ctx context.Context, diff --git a/src/internal/operations/manifests.go b/src/internal/operations/manifests.go index 16e2029f9..476b99126 100644 --- a/src/internal/operations/manifests.go +++ b/src/internal/operations/manifests.go @@ -11,8 +11,8 @@ import ( "github.com/alcionai/corso/src/internal/connector/graph" "github.com/alcionai/corso/src/internal/data" "github.com/alcionai/corso/src/internal/kopia" + "github.com/alcionai/corso/src/internal/kopia/inject" "github.com/alcionai/corso/src/internal/model" - "github.com/alcionai/corso/src/internal/operations/inject" "github.com/alcionai/corso/src/pkg/backup" "github.com/alcionai/corso/src/pkg/fault" "github.com/alcionai/corso/src/pkg/logger" diff --git a/src/internal/streamstore/streamstore.go b/src/internal/streamstore/streamstore.go index 146f0d1c7..25bad8c2d 100644 --- a/src/internal/streamstore/streamstore.go +++ b/src/internal/streamstore/streamstore.go @@ -12,7 +12,7 @@ import ( "github.com/alcionai/corso/src/internal/common/prefixmatcher" "github.com/alcionai/corso/src/internal/data" "github.com/alcionai/corso/src/internal/kopia" - "github.com/alcionai/corso/src/internal/operations/inject" + "github.com/alcionai/corso/src/internal/kopia/inject" "github.com/alcionai/corso/src/internal/stats" "github.com/alcionai/corso/src/pkg/fault" "github.com/alcionai/corso/src/pkg/path"