public Ec2ImageDeregisterer(AwsImageDescribeOptionsValues options, AwsImageDeregisterOptionsValues deregisterOptions) { _client = new AmazonEC2Client(options.Credentials, options.RegionEndpoint); _imageHandler = new Ec2ImageHandler(_client); this.options = options; this.deregisterOptions = deregisterOptions; }
private IEnumerable <Image> GetImages(AwsImageDescribeOptionsValues options) { IEnumerable <Image> images = GetImages(options.DescribeImagesRequest); if (options.ExceptNewest > 0) { images = images.OrderByDescending(i => DateTime.Parse(i.CreationDate)).Skip(options.ExceptNewest); } return(images); }
internal void Deregister(AwsImageDescribeOptionsValues options, AwsImageDeregisterOptionsValues deregisterOptions) { var images = GetImages(options); var snapshotHandler = new Ec2SnapshotHandler(_client); foreach (var image in images) { Logger.Info($"Deregistering image: {image.Name}"); var snapshots = image.BlockDeviceMappings.Where(bdm => bdm.Ebs != null).Select(bdm => bdm.Ebs?.SnapshotId); try { _client.DeregisterImage(new DeregisterImageRequest(image.ImageId)); } catch (Exception e) { throw new CouldNotDeregisterImageException($"Error while deregistering image {image.ImageId}: {e.Message}"); } foreach (var snapshot in snapshots) { snapshotHandler.Delete(snapshot); } } }
public AwsDeregisterImagesOperation(AwsImageDescribeOptionsValues options, AwsImageDeregisterOptionsValues deregisterOptions) : base(options) { this.options = options; this.deregisterOptions = deregisterOptions; }