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

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

Introduction

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

Prototype


public String getSourceRegion() 

Source Link

Document

The ID of the Region that contains the snapshot to be copied.

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.j ava  2 s  . c  o m
    }

    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;

}