Rework restore return status so that later PRs will have a smaller diff Instead of returning a status and then waiting on the message just return the restore stats directly. The status getter was only setup to wait for one item anyway and was setup to wait after the entire restore operation already completed (at end of m365/restore.go:ConsumeRestoreCollections()) --- #### Does this PR need a docs update or release note? - [ ] ✅ Yes, it's included - [ ] 🕐 Yes, but in a later PR - [x] ⛔ No #### Type of change - [ ] 🌻 Feature - [ ] 🐛 Bugfix - [ ] 🗺️ Documentation - [ ] 🤖 Supportability/Tests - [ ] 💻 CI/Deployment - [x] 🧹 Tech Debt/Cleanup #### Issue(s) * #4254 #### Test Plan - [ ] 💪 Manual - [x] ⚡ Unit test - [x] 💚 E2E
112 lines
2.6 KiB
Go
112 lines
2.6 KiB
Go
package mock
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/alcionai/clues"
|
|
|
|
"github.com/alcionai/corso/src/internal/common/idname"
|
|
"github.com/alcionai/corso/src/internal/common/prefixmatcher"
|
|
"github.com/alcionai/corso/src/internal/data"
|
|
kinject "github.com/alcionai/corso/src/internal/kopia/inject"
|
|
"github.com/alcionai/corso/src/internal/operations/inject"
|
|
"github.com/alcionai/corso/src/pkg/backup/details"
|
|
"github.com/alcionai/corso/src/pkg/control"
|
|
"github.com/alcionai/corso/src/pkg/count"
|
|
"github.com/alcionai/corso/src/pkg/export"
|
|
"github.com/alcionai/corso/src/pkg/fault"
|
|
"github.com/alcionai/corso/src/pkg/path"
|
|
)
|
|
|
|
var _ inject.BackupProducer = &Controller{}
|
|
|
|
type Controller struct {
|
|
Collections []data.BackupCollection
|
|
Exclude *prefixmatcher.StringSetMatcher
|
|
|
|
Deets *details.Details
|
|
|
|
Err error
|
|
|
|
Stats data.CollectionStats
|
|
|
|
ProtectedResourceID string
|
|
ProtectedResourceName string
|
|
ProtectedResourceErr error
|
|
}
|
|
|
|
func (ctrl Controller) ProduceBackupCollections(
|
|
_ context.Context,
|
|
_ inject.BackupProducerConfig,
|
|
_ *count.Bus,
|
|
_ *fault.Bus,
|
|
) (
|
|
[]data.BackupCollection,
|
|
prefixmatcher.StringSetReader,
|
|
bool,
|
|
error,
|
|
) {
|
|
return ctrl.Collections, ctrl.Exclude, ctrl.Err == nil, ctrl.Err
|
|
}
|
|
|
|
func (ctrl *Controller) GetMetadataPaths(
|
|
ctx context.Context,
|
|
r kinject.RestoreProducer,
|
|
base inject.ReasonAndSnapshotIDer,
|
|
errs *fault.Bus,
|
|
) ([]path.RestorePaths, error) {
|
|
return nil, clues.New("not implemented")
|
|
}
|
|
|
|
func (ctrl Controller) IsServiceEnabled(
|
|
_ context.Context,
|
|
_ path.ServiceType,
|
|
_ string,
|
|
) (bool, error) {
|
|
return true, ctrl.Err
|
|
}
|
|
|
|
func (ctrl Controller) Wait() *data.CollectionStats {
|
|
return &ctrl.Stats
|
|
}
|
|
|
|
func (ctrl Controller) ConsumeRestoreCollections(
|
|
_ context.Context,
|
|
_ inject.RestoreConsumerConfig,
|
|
_ []data.RestoreCollection,
|
|
_ *fault.Bus,
|
|
_ *count.Bus,
|
|
) (*details.Details, *data.CollectionStats, error) {
|
|
return ctrl.Deets, &ctrl.Stats, ctrl.Err
|
|
}
|
|
|
|
func (ctrl Controller) CacheItemInfo(dii details.ItemInfo) {}
|
|
|
|
func (ctrl Controller) ProduceExportCollections(
|
|
_ context.Context,
|
|
_ int,
|
|
_ control.ExportConfig,
|
|
_ []data.RestoreCollection,
|
|
_ *data.ExportStats,
|
|
_ *fault.Bus,
|
|
) ([]export.Collectioner, error) {
|
|
return nil, ctrl.Err
|
|
}
|
|
|
|
func (ctrl Controller) PopulateProtectedResourceIDAndName(
|
|
ctx context.Context,
|
|
protectedResource string, // input value, can be either id or name
|
|
ins idname.Cacher,
|
|
) (idname.Provider, error) {
|
|
return idname.NewProvider(ctrl.ProtectedResourceID, ctrl.ProtectedResourceName),
|
|
ctrl.ProtectedResourceErr
|
|
}
|
|
|
|
func (ctrl Controller) SetRateLimiter(
|
|
ctx context.Context,
|
|
service path.ServiceType,
|
|
options control.Options,
|
|
) context.Context {
|
|
return ctx
|
|
}
|