コード例 #1
0
        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!");
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        public void Enumerable_Returns_No_Items_When_Empty()
        {
            var enumerable = new S3ObjectVersionsEnumerable(A.Fake <IAmazonS3>(), A.Fake <ListVersionsRequest>());

            Assert.True(enumerable.Count() == 0);
        }