Example usage for com.amazonaws.services.ec2.model CopySnapshotRequest getSourceSnapshotId

List of usage examples for com.amazonaws.services.ec2.model CopySnapshotRequest getSourceSnapshotId

Introduction

In this page you can find the example usage for com.amazonaws.services.ec2.model CopySnapshotRequest getSourceSnapshotId.

Prototype


public String getSourceSnapshotId() 

Source Link

Document

The ID of the EBS snapshot to copy.

Usage

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

public static CopySnapshotResult copySnapshot(AmazonEC2Client ec2Client, CopySnapshotRequest snapshotRequest,
        Integer numRetries, Integer maxApiRequestsPerSecond, String uniqueAwsAccountIdentifier) {
    CopySnapshotResult copySnapshotResult = null;

    if (numRetries >= 3) {
        numRetries = 3;// w  ww .ja  v a 2  s.  c om
    }

    for (int i = 0; i <= numRetries; i++) {
        try {
            // 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();
            }

            copySnapshotResult = ec2Client.copySnapshot(snapshotRequest);

            if (copySnapshotResult != null) {
                GlobalVariables.apiRequestCountersByAwsAccount.get(uniqueAwsAccountIdentifier)
                        .incrementAndGet();
                break;
            }
        } catch (Exception e) {
            if (e.toString().contains("20109") || e.toString().contains("Too many snapshot")
                    || e.toString().contains("retired")) {
                return copySnapshotResult;
            }

            logger.error("awsAccountNickname=\"" + uniqueAwsAccountIdentifier + "\","
                    + snapshotRequest.toString() + System.lineSeparator() + e.toString()
                    + System.lineSeparator() + StackTrace.getStringFromStackTrace(e));
        }
    }
    logger.info("awsAccountNickname=\"" + uniqueAwsAccountIdentifier
            + "\",Event=\"Snapshot Copied\", source_region=\"" + snapshotRequest.getSourceRegion()
            + "\", destination_region=\"" + snapshotRequest.getDestinationRegion() + "\", source_snapshot_id=\""
            + snapshotRequest.getSourceSnapshotId() + "\"");
    return copySnapshotResult;

}