public Ec2ImageDeregisterer(AwsImageDescribeOptionsValues options, AwsImageDeregisterOptionsValues deregisterOptions)
 {
     _client                = new AmazonEC2Client(options.Credentials, options.RegionEndpoint);
     _imageHandler          = new Ec2ImageHandler(_client);
     this.options           = options;
     this.deregisterOptions = deregisterOptions;
 }
        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 AwsImageDeregisterOptionsBuilder()
 {
     _values = new AwsImageDeregisterOptionsValues();
 }
 public AwsDeregisterImagesOperation(AwsImageDescribeOptionsValues options, AwsImageDeregisterOptionsValues deregisterOptions) : base(options)
 {
     this.options           = options;
     this.deregisterOptions = deregisterOptions;
 }