Example usage for com.amazonaws.services.ec2 AmazonEC2Client deleteSnapshot

List of usage examples for com.amazonaws.services.ec2 AmazonEC2Client deleteSnapshot

Introduction

In this page you can find the example usage for com.amazonaws.services.ec2 AmazonEC2Client deleteSnapshot.

Prototype

@Override
public DeleteSnapshotResult deleteSnapshot(DeleteSnapshotRequest request) 

Source Link

Document

Deletes the specified snapshot.

Usage

From source file:com.pearson.eidetic.aws.EC2ClientMethods.java

public static void deleteSnapshot(AmazonEC2Client ec2Client, DeleteSnapshotRequest deletesnapshotRequest,
        Integer numRetries, Integer maxApiRequestsPerSecond, String uniqueAwsAccountIdentifier) {
    for (int i = 0; i <= numRetries; i++) {
        try {//from   w w  w  .  j a  va 2s  . c o  m
            // if the initial download attempt failed, wait for i * 500ms 
            if (i > 0) {
                long sleepTimeInMilliseconds = 500 * i;
                Threads.sleepMilliseconds(sleepTimeInMilliseconds);
            }

            AtomicLong requestAttemptCounter = GlobalVariables.apiRequestAttemptCountersByAwsAccount
                    .get(uniqueAwsAccountIdentifier);
            long currentRequestCount = requestAttemptCounter.incrementAndGet();

            while (currentRequestCount > maxApiRequestsPerSecond) {
                Threads.sleepMilliseconds(50);
                currentRequestCount = requestAttemptCounter.incrementAndGet();
            }

            try {
                ec2Client.deleteSnapshot(deletesnapshotRequest);
                try {
                    GlobalVariables.apiRequestCountersByAwsAccount.get(uniqueAwsAccountIdentifier)
                            .incrementAndGet();
                } catch (Exception e) {
                    logger.error("awsAccountNickname=\"" + uniqueAwsAccountIdentifier + "\","
                            + deletesnapshotRequest.toString() + System.lineSeparator() + e.toString()
                            + System.lineSeparator() + StackTrace.getStringFromStackTrace(e));
                }
                break;
            } catch (Exception e) {
                if (e.toString().contains("InvalidSnapshot.InUse")) {
                    logger.error("awsAccountNickname=\"" + uniqueAwsAccountIdentifier + "\","
                            + deletesnapshotRequest.toString() + System.lineSeparator() + e.toString()
                            + System.lineSeparator() + StackTrace.getStringFromStackTrace(e));
                    break;
                }
                logger.error("awsAccountNickname=\"" + uniqueAwsAccountIdentifier + "\","
                        + deletesnapshotRequest.toString() + System.lineSeparator() + e.toString()
                        + System.lineSeparator() + StackTrace.getStringFromStackTrace(e));
            }

        } catch (Exception e) {
            logger.error("awsAccountNickname=\"" + uniqueAwsAccountIdentifier + "\","
                    + deletesnapshotRequest.toString() + System.lineSeparator() + e.toString()
                    + System.lineSeparator() + StackTrace.getStringFromStackTrace(e));
        }
    }
    logger.info("awsAccountNickname=\"" + uniqueAwsAccountIdentifier
            + "\",Event=\"Snapshot Deleted\", Snapshot_id=\"" + deletesnapshotRequest.getSnapshotId() + "\"");
}