Example usage for com.amazonaws.services.ec2.model DescribeInstanceStatusRequest setNextToken

List of usage examples for com.amazonaws.services.ec2.model DescribeInstanceStatusRequest setNextToken

Introduction

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

Prototype


public void setNextToken(String nextToken) 

Source Link

Document

The token to retrieve the next page of results.

Usage

From source file:com.ipcglobal.awscdh.config.ManageEc2.java

License:Apache License

/**
 * Verify EC2 instances running./*from   w w  w  .  j  a  va2s .c  om*/
 *
 * @param instances the instances
 * @throws Exception the exception
 */
private void verifyInstancesRunning(List<Instance> instances) throws Exception {
    List<String> instanceIds = new ArrayList<String>();
    Map<String, InstanceStatusCheck> instanceStatusChecksByInstanceId = new HashMap<String, InstanceStatusCheck>();
    for (Instance instance : instances) {
        instanceIds.add(instance.getInstanceId());
        instanceStatusChecksByInstanceId.put(instance.getInstanceId(), new InstanceStatusCheck(instance));
    }
    boolean isSuccess = false;
    long pollExpiresAt = System.currentTimeMillis() + (60000 * timeoutMinutesStartEc2Instances);
    while (true) {
        for (InstanceStatusCheck instanceStatusCheck : instanceStatusChecksByInstanceId.values())
            instanceStatusCheck.reset();
        DescribeInstanceStatusRequest describeInstanceStatusRequest = new DescribeInstanceStatusRequest()
                .withInstanceIds(instanceIds);
        while (true) {
            DescribeInstanceStatusResult describeInstanceStatusResult = ec2Client
                    .describeInstanceStatus(describeInstanceStatusRequest);
            for (InstanceStatus instanceStatus : describeInstanceStatusResult.getInstanceStatuses()) {
                InstanceStatusCheck instanceStatusCheck = instanceStatusChecksByInstanceId
                        .get(instanceStatus.getInstanceId());
                instanceStatusCheck.updateState(instanceStatus.getInstanceState().getName(),
                        instanceStatus.getSystemStatus().getStatus());
                if (POLLING_VERBOSE)
                    log.info("Status: id=" + instanceStatus.getInstanceId() + ", instance state="
                            + instanceStatus.getInstanceState().getName() + ", status checks="
                            + instanceStatus.getSystemStatus().getStatus());
            }
            if (describeInstanceStatusResult.getNextToken() == null)
                break;
            describeInstanceStatusRequest.setNextToken(describeInstanceStatusResult.getNextToken());
        }
        // Check if all instances are running or stopped
        int numInstancesRunning = 0;
        for (InstanceStatusCheck instanceStatusCheck : instanceStatusChecksByInstanceId.values()) {
            if (instanceStatusCheck.isInstanceRunning())
                numInstancesRunning++;
        }
        if (numInstancesRunning == instanceStatusChecksByInstanceId.size()) {
            isSuccess = true;
            break;
        }

        //         log.info(">>>>> verifyCdhInstancesRunning Instance Status - Start"
        //               + ", numInstances=" + instanceStatusChecksByInstanceId.size() 
        //               + ", numInstancesInTargetStatus=" + numInstancesRunning );
        //         for( InstanceStatusCheck instanceStatusCheck : instanceStatusChecksByInstanceId.values() ) 
        //            log.info( instanceStatusCheck.toString() );
        //         log.info(">>>>> verifyCdhInstancesRunning Instance Status - End" );

        if (System.currentTimeMillis() > pollExpiresAt)
            break;
        Thread.sleep(POLLING_INTERVAL_SECONDS * 1000L);
    }
    if (!isSuccess)
        throw new InstanceStatusCheckException(InstanceTargetStatus.RUNNING.toString(),
                new ArrayList<InstanceStatusCheck>(instanceStatusChecksByInstanceId.values()));
}