Updates to /connector/sharepoint/restore.go
Issue #2169: Restore Collection logic added.
This commit is contained in:
parent
09f92fabc6
commit
22c070885b
@ -68,7 +68,7 @@ func RestoreCollections(
|
|||||||
deets,
|
deets,
|
||||||
errUpdater)
|
errUpdater)
|
||||||
case path.ListsCategory:
|
case path.ListsCategory:
|
||||||
metrics, canceled = RestoreCollection(
|
metrics, canceled = RestoreListCollection(
|
||||||
ctx,
|
ctx,
|
||||||
service,
|
service,
|
||||||
dc,
|
dc,
|
||||||
@ -203,7 +203,7 @@ func restoreListItem(
|
|||||||
return dii, nil
|
return dii, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func RestoreCollection(
|
func RestoreListCollection(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
service graph.Servicer,
|
service graph.Servicer,
|
||||||
dc data.Collection,
|
dc data.Collection,
|
||||||
@ -211,7 +211,7 @@ func RestoreCollection(
|
|||||||
deets *details.Builder,
|
deets *details.Builder,
|
||||||
errUpdater func(string, error),
|
errUpdater func(string, error),
|
||||||
) (support.CollectionMetrics, bool) {
|
) (support.CollectionMetrics, bool) {
|
||||||
ctx, end := D.Span(ctx, "gc:sharepoint:restoreCollection", D.Label("path", dc.FullPath()))
|
ctx, end := D.Span(ctx, "gc:sharepoint:restoreListCollection", D.Label("path", dc.FullPath()))
|
||||||
defer end()
|
defer end()
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -219,7 +219,7 @@ func RestoreCollection(
|
|||||||
directory = dc.FullPath()
|
directory = dc.FullPath()
|
||||||
)
|
)
|
||||||
|
|
||||||
trace.Log(ctx, "gc:sharepoint:restoreCollection", directory.String())
|
trace.Log(ctx, "gc:sharepoint:restoreListCollection", directory.String())
|
||||||
siteID := directory.ResourceOwner()
|
siteID := directory.ResourceOwner()
|
||||||
|
|
||||||
// Restore items from the collection
|
// Restore items from the collection
|
||||||
@ -271,6 +271,76 @@ func RestoreCollection(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func RestorePageCollection(
|
||||||
|
ctx context.Context,
|
||||||
|
service graph.Servicer,
|
||||||
|
dc data.Collection,
|
||||||
|
restoreContainerName string,
|
||||||
|
deets *details.Builder,
|
||||||
|
errUpdater func(string, error),
|
||||||
|
) (support.CollectionMetrics, bool) {
|
||||||
|
ctx, end := D.Span(ctx, "gc:sharepoint:restorePageCollection", D.Label("path", dc.FullPath()))
|
||||||
|
defer end()
|
||||||
|
|
||||||
|
var (
|
||||||
|
metrics = support.CollectionMetrics{}
|
||||||
|
directory = dc.FullPath()
|
||||||
|
)
|
||||||
|
|
||||||
|
trace.Log(ctx, "gc:sharepoint:restorePageCollection", directory.String())
|
||||||
|
siteID := directory.ResourceOwner()
|
||||||
|
|
||||||
|
// Restore items from collection
|
||||||
|
items := dc.Items()
|
||||||
|
|
||||||
|
for {
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
errUpdater("context canceled", ctx.Err())
|
||||||
|
return metrics, true
|
||||||
|
|
||||||
|
case itemData, ok := <-items:
|
||||||
|
if !ok {
|
||||||
|
return metrics, false
|
||||||
|
}
|
||||||
|
metrics.Objects++
|
||||||
|
|
||||||
|
itemInfo, err := restoreSitePage(
|
||||||
|
ctx,
|
||||||
|
service,
|
||||||
|
itemData,
|
||||||
|
siteID,
|
||||||
|
restoreContainerName,
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
errUpdater(itemData.UUID(), err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
metrics.TotalBytes += itemInfo.SharePoint.Size
|
||||||
|
|
||||||
|
itemPath, err := dc.FullPath().Append(itemData.UUID(), true)
|
||||||
|
if err != nil {
|
||||||
|
logger.Ctx(ctx).DPanicw("transforming item to full path", "error", err)
|
||||||
|
errUpdater(itemData.UUID(), err)
|
||||||
|
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
deets.Add(
|
||||||
|
itemPath.String(),
|
||||||
|
itemPath.ShortRef(),
|
||||||
|
"",
|
||||||
|
true,
|
||||||
|
itemInfo,
|
||||||
|
)
|
||||||
|
|
||||||
|
metrics.Successes++
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
func restoreSitePage(
|
func restoreSitePage(
|
||||||
ctx context.Context,
|
ctx context.Context,
|
||||||
service graph.Servicer,
|
service graph.Servicer,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user