diff --git a/src/internal/m365/restore.go b/src/internal/m365/restore.go index 4237412cc..205f068e4 100644 --- a/src/internal/m365/restore.go +++ b/src/internal/m365/restore.go @@ -44,49 +44,45 @@ func (ctrl *Controller) ConsumeRestoreCollections( var ( service = rcc.Selector.PathService() status *support.ControllerOperationStatus - deets = &details.Builder{} + deets *details.Details err error ) switch service { case path.ExchangeService: - status, err = exchange.ConsumeRestoreCollections( + deets, status, err = exchange.ConsumeRestoreCollections( ctx, ctrl.AC, rcc, dcs, - deets, errs, ctr) case path.OneDriveService: - status, err = onedrive.ConsumeRestoreCollections( + deets, status, err = onedrive.ConsumeRestoreCollections( ctx, drive.NewUserDriveRestoreHandler(ctrl.AC), rcc, ctrl.backupDriveIDNames, dcs, - deets, errs, ctr) case path.SharePointService: - status, err = sharepoint.ConsumeRestoreCollections( + deets, status, err = sharepoint.ConsumeRestoreCollections( ctx, rcc, ctrl.AC, ctrl.backupDriveIDNames, dcs, - deets, errs, ctr) case path.GroupsService: - status, err = groups.ConsumeRestoreCollections( + deets, status, err = groups.ConsumeRestoreCollections( ctx, rcc, ctrl.AC, ctrl.backupDriveIDNames, ctrl.backupSiteIDWebURL, dcs, - deets, errs, ctr) default: @@ -96,5 +92,5 @@ func (ctrl *Controller) ConsumeRestoreCollections( ctrl.incrementAwaitingMessages() ctrl.UpdateStatus(status) - return deets.Details(), err + return deets, err } diff --git a/src/internal/m365/service/exchange/restore.go b/src/internal/m365/service/exchange/restore.go index 29a50a269..b13e2087c 100644 --- a/src/internal/m365/service/exchange/restore.go +++ b/src/internal/m365/service/exchange/restore.go @@ -24,15 +24,15 @@ func ConsumeRestoreCollections( ac api.Client, rcc inject.RestoreConsumerConfig, dcs []data.RestoreCollection, - deets *details.Builder, errs *fault.Bus, ctr *count.Bus, -) (*support.ControllerOperationStatus, error) { +) (*details.Details, *support.ControllerOperationStatus, error) { if len(dcs) == 0 { - return support.CreateStatus(ctx, support.Restore, 0, support.CollectionMetrics{}, ""), nil + return nil, support.CreateStatus(ctx, support.Restore, 0, support.CollectionMetrics{}, ""), nil } var ( + deets = &details.Builder{} resourceID = rcc.ProtectedResource.ID() directoryCache = make(map[path.CategoryType]graph.ContainerResolver) handlers = exchange.RestoreHandlers(ac) @@ -62,7 +62,7 @@ func ConsumeRestoreCollections( if directoryCache[category] == nil { gcr := handler.NewContainerCache(resourceID) if err := gcr.Populate(ictx, errs, handler.DefaultRootContainer()); err != nil { - return nil, clues.Wrap(err, "populating container cache") + return nil, nil, clues.Wrap(err, "populating container cache") } directoryCache[category] = gcr @@ -119,5 +119,5 @@ func ConsumeRestoreCollections( metrics, rcc.RestoreConfig.Location) - return status, el.Failure() + return deets.Details(), status, el.Failure() } diff --git a/src/internal/m365/service/groups/restore.go b/src/internal/m365/service/groups/restore.go index 39fa159b0..61652c73e 100644 --- a/src/internal/m365/service/groups/restore.go +++ b/src/internal/m365/service/groups/restore.go @@ -32,11 +32,11 @@ func ConsumeRestoreCollections( backupDriveIDNames idname.Cacher, backupSiteIDWebURL idname.Cacher, dcs []data.RestoreCollection, - deets *details.Builder, errs *fault.Bus, ctr *count.Bus, -) (*support.ControllerOperationStatus, error) { +) (*details.Details, *support.ControllerOperationStatus, error) { var ( + deets = &details.Builder{} restoreMetrics support.CollectionMetrics caches = drive.NewRestoreCaches(backupDriveIDNames) lrh = drive.NewSiteRestoreHandler(ac, rcc.Selector.PathService()) @@ -97,7 +97,7 @@ func ConsumeRestoreCollections( err = caches.Populate(ictx, lrh, srcc.ProtectedResource.ID()) if err != nil { - return nil, clues.Wrap(err, "initializing restore caches") + return nil, nil, clues.Wrap(err, "initializing restore caches") } metrics, err = drive.RestoreCollection( @@ -114,7 +114,7 @@ func ConsumeRestoreCollections( // Message cannot be restored as of now using Graph API. logger.Ctx(ictx).Debug("Skipping restore for channel messages") default: - return nil, clues.NewWC(ictx, "data category not supported"). + return nil, nil, clues.NewWC(ictx, "data category not supported"). With("category", category) } @@ -136,7 +136,7 @@ func ConsumeRestoreCollections( restoreMetrics, rcc.RestoreConfig.Location) - return status, el.Failure() + return deets.Details(), status, el.Failure() } func getSiteName( diff --git a/src/internal/m365/service/groups/restore_test.go b/src/internal/m365/service/groups/restore_test.go index 68fc0b5dd..1fecf07d3 100644 --- a/src/internal/m365/service/groups/restore_test.go +++ b/src/internal/m365/service/groups/restore_test.go @@ -53,14 +53,13 @@ func (suite *GroupsUnitSuite) TestConsumeRestoreCollections_noErrorOnGroups() { mock.Collection{Path: pth}, } - _, err = ConsumeRestoreCollections( + _, _, err = ConsumeRestoreCollections( ctx, rcc, api.Client{}, idname.NewCache(map[string]string{}), idname.NewCache(map[string]string{}), dcs, - nil, fault.New(false), nil) assert.NoError(t, err, "Groups Channels restore") diff --git a/src/internal/m365/service/onedrive/restore.go b/src/internal/m365/service/onedrive/restore.go index b71626663..57e348757 100644 --- a/src/internal/m365/service/onedrive/restore.go +++ b/src/internal/m365/service/onedrive/restore.go @@ -26,11 +26,11 @@ func ConsumeRestoreCollections( rcc inject.RestoreConsumerConfig, backupDriveIDNames idname.Cacher, dcs []data.RestoreCollection, - deets *details.Builder, errs *fault.Bus, ctr *count.Bus, -) (*support.ControllerOperationStatus, error) { +) (*details.Details, *support.ControllerOperationStatus, error) { var ( + deets = &details.Builder{} restoreMetrics support.CollectionMetrics el = errs.Local() caches = drive.NewRestoreCaches(backupDriveIDNames) @@ -41,7 +41,7 @@ func ConsumeRestoreCollections( err := caches.Populate(ctx, rh, rcc.ProtectedResource.ID()) if err != nil { - return nil, clues.Wrap(err, "initializing restore caches") + return nil, nil, clues.Wrap(err, "initializing restore caches") } // Reorder collections so that the parents directories are created @@ -91,7 +91,7 @@ func ConsumeRestoreCollections( restoreMetrics, rcc.RestoreConfig.Location) - return status, el.Failure() + return deets.Details(), status, el.Failure() } // Augment restore path to add extra files(meta) needed for restore as diff --git a/src/internal/m365/service/sharepoint/restore.go b/src/internal/m365/service/sharepoint/restore.go index e43a07dac..2c31b4aa2 100644 --- a/src/internal/m365/service/sharepoint/restore.go +++ b/src/internal/m365/service/sharepoint/restore.go @@ -28,11 +28,11 @@ func ConsumeRestoreCollections( ac api.Client, backupDriveIDNames idname.Cacher, dcs []data.RestoreCollection, - deets *details.Builder, errs *fault.Bus, ctr *count.Bus, -) (*support.ControllerOperationStatus, error) { +) (*details.Details, *support.ControllerOperationStatus, error) { var ( + deets = &details.Builder{} lrh = drive.NewSiteRestoreHandler(ac, rcc.Selector.PathService()) restoreMetrics support.CollectionMetrics caches = drive.NewRestoreCaches(backupDriveIDNames) @@ -41,7 +41,7 @@ func ConsumeRestoreCollections( err := caches.Populate(ctx, lrh, rcc.ProtectedResource.ID()) if err != nil { - return nil, clues.Wrap(err, "initializing restore caches") + return nil, nil, clues.Wrap(err, "initializing restore caches") } // Reorder collections so that the parents directories are created @@ -97,7 +97,7 @@ func ConsumeRestoreCollections( errs) default: - return nil, clues.Wrap(clues.New(category.String()), "category not supported").With("category", category) + return nil, nil, clues.Wrap(clues.New(category.String()), "category not supported").With("category", category) } restoreMetrics = support.CombineMetrics(restoreMetrics, metrics) @@ -118,5 +118,5 @@ func ConsumeRestoreCollections( restoreMetrics, rcc.RestoreConfig.Location) - return status, el.Failure() + return deets.Details(), status, el.Failure() }