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

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

Introduction

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

Prototype


public String getDestinationRegion() 

Source Link

Document

The destination Region to use in the PresignedUrl parameter of a snapshot copy operation.

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;/*from  w ww . j a va 2s. 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;

}