public void Execute(OperationOptions options) { _logger.Info($"Starting objects restore {(options.DryRun ? "(dry run)" : string.Empty)}..."); var listRequest = new ListVersionsRequest { BucketName = options.BucketName, Prefix = options.Prefix, MaxKeys = options.MaxKeys }; var versions = new S3ObjectVersionsEnumerable(_s3Client, listRequest); var deleteRequest = new DeleteObjectsRequest { BucketName = listRequest.BucketName, Objects = versions.Where(_ => _.IsDeleteMarker).Select(dm => { _logger.Info($"Adding to restore chunk: {dm.Key} - [{dm.VersionId}]"); return(new KeyVersion { Key = dm.Key, VersionId = dm.VersionId }); }).ToList() }; if (!options.DryRun) { _s3Client.DeleteObjectsAsync(deleteRequest).Wait(); } _logger.Info("Restoring completed!"); }
public void Enumerable_Returns_All_Items_In_Multiple_Pages() { var expectedVersions = new System.Collections.Generic.List <S3ObjectVersion> { new S3ObjectVersion { }, new S3ObjectVersion { } }; var s3client = A.Fake <IAmazonS3>(); A.CallTo(() => s3client.ListVersionsAsync(default(ListVersionsRequest), default(CancellationToken))) .WithAnyArguments() .ReturnsNextFromSequence( new ListVersionsResponse { NextKeyMarker = "nextKeyMarker", Versions = expectedVersions }, new ListVersionsResponse { Versions = expectedVersions }); var enumerable = new S3ObjectVersionsEnumerable(s3client, A.Fake <ListVersionsRequest>()); Assert.True(enumerable.Count() == expectedVersions.Count * 2); }
public void Enumerable_Returns_All_Versions_In_A_Single_Page() { var expectedVersions = new System.Collections.Generic.List <S3ObjectVersion> { new S3ObjectVersion { }, new S3ObjectVersion { } }; var s3client = A.Fake <IAmazonS3>(); A.CallTo(() => s3client.ListVersionsAsync(default(ListVersionsRequest), default(CancellationToken))) .WithAnyArguments() .Returns(new ListVersionsResponse { Versions = expectedVersions }); var enumerable = new S3ObjectVersionsEnumerable(s3client, A.Fake <ListVersionsRequest>()); Assert.True(enumerable.ToList().Count == expectedVersions.Count); }
public void Enumerable_Returns_No_Items_When_Empty() { var enumerable = new S3ObjectVersionsEnumerable(A.Fake <IAmazonS3>(), A.Fake <ListVersionsRequest>()); Assert.True(enumerable.Count() == 0); }