public override async Task DeleteDeploymentAsync(FinalizerProperties current, CancellationToken cancellationToken) { LogInfo($"Deleting Deployment: {current.DeploymentChecksum}"); // enumerate all S3 objects var request = new ListObjectsV2Request { BucketName = _bucketName }; var counter = 0; var deletions = new List <Task>(); do { var response = await _s3Client.ListObjectsV2Async(request); // delete any objects found if (response.S3Objects.Any()) { deletions.Add(_s3Client.DeleteObjectsAsync(new DeleteObjectsRequest { BucketName = _bucketName, Objects = response.S3Objects.Select(s3 => new KeyVersion { Key = s3.Key }).ToList(), Quiet = true })); counter += response.S3Objects.Count; } // continue until no more objects can be fetched request.ContinuationToken = response.NextContinuationToken; } while(request.ContinuationToken != null); // wait for all deletions to complete await Task.WhenAll(deletions); LogInfo($"Deleted {counter:N0} objects"); }
public override async Task DeleteDeploymentAsync(FinalizerProperties current, CancellationToken cancellationToken) { LogInfo($"Deleting Deployment: {current.DeploymentChecksum}"); }
public override async Task UpdateDeploymentAsync(FinalizerProperties current, FinalizerProperties previous, CancellationToken cancellationToken) { LogInfo($"Updating Deployment: {previous.DeploymentChecksum} -> {current.DeploymentChecksum}"); }
public override async Task DeleteDeployment(FinalizerProperties current) { LogInfo($"Deleting Deployment: {current.DeploymentChecksum}"); }
public override async Task UpdateDeployment(FinalizerProperties next, FinalizerProperties previous) { LogInfo($"Updating Deployment: {previous.DeploymentChecksum} -> {next.DeploymentChecksum}"); }
public override async Task UpdateDeployment(FinalizerProperties current, FinalizerProperties previous) { // TO-DO: add business logic when updating a CloudFormation stack }
public override async Task DeleteDeploymentAsync(FinalizerProperties current, CancellationToken cancellationToken) { // TO-DO: add business logic when deleting a CloudFormation stack }
public override Task DeleteDeploymentAsync(FinalizerProperties current, CancellationToken cancellationToken) => DeleteApiDeploymentAsync(cancellationToken);
public override async Task CreateDeployment(FinalizerProperties current) { // TO-DO: add business logic when creating a CloudFormation stack }
public override Task CreateDeploymentAsync(FinalizerProperties current, CancellationToken cancellationToken) => Task.CompletedTask;
public override Task UpdateDeploymentAsync(FinalizerProperties current, FinalizerProperties previous, CancellationToken cancellationToken) => UpdateApiDeploymentAsync(cancellationToken);
public override Task UpdateDeployment(FinalizerProperties next, FinalizerProperties previous) { return(CreateGeneralChannelAsync()); }
public override Task CreateDeployment(FinalizerProperties current) { return(CreateGeneralChannelAsync()); }
public override Task DeleteDeployment(FinalizerProperties current) => DeleteApiDeployments();
public override Task UpdateDeployment(FinalizerProperties current, FinalizerProperties previous) => UpdateApiDeployment();
public override Task CreateDeployment(FinalizerProperties current) => Task.CompletedTask;