Example usage for com.amazonaws.services.ec2.model DescribeInstanceStatusResult getNextToken

List of usage examples for com.amazonaws.services.ec2.model DescribeInstanceStatusResult getNextToken

Introduction

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

Prototype


public String getNextToken() 

Source Link

Document

The token to use to retrieve the next page of results.

Usage

From source file:com.cloudera.director.aws.ec2.EC2Provider.java

License:Apache License

/**
 * Returns a map from virtual instance IDs to instance state for the specified batch of virtual
 * instance IDs./*from   ww  w  . j a v a2  s. c  o m*/
 *
 * @param virtualInstanceIds batch of virtual instance IDs
 * @return the map from instance IDs to instance state for the specified batch of virtual
 * instance IDs
 */
private Map<String, InstanceState> getBatchInstanceState(Collection<String> virtualInstanceIds) {
    Map<String, InstanceState> instanceStateByVirtualInstanceId = Maps
            .newHashMapWithExpectedSize(virtualInstanceIds.size());

    BiMap<String, String> virtualInstanceIdsByEC2InstanceId = getEC2InstanceIdsByVirtualInstanceId(
            virtualInstanceIds).inverse();

    int page = 0;
    LOG.info(">> Fetching page {}", page);

    if (virtualInstanceIdsByEC2InstanceId.isEmpty()) {
        // No EC2 instances are found, which means these id's are already terminated and gone.
        // In practice, this is possible when no instances were provisioned to begin with.
        // For example, when a deployment fails due to tagging error.
        return instanceStateByVirtualInstanceId;
    }

    DescribeInstanceStatusResult result = client.describeInstanceStatus(new DescribeInstanceStatusRequest()
            // Note that sending in an empty set will result in fetching _all_ instance Ids.
            // It requires you to send one or more EC2 Ids
            .withInstanceIds(virtualInstanceIdsByEC2InstanceId.keySet()).withIncludeAllInstances(true));
    LOG.info("<< Result: {}", result);

    while (!result.getInstanceStatuses().isEmpty()) {
        for (InstanceStatus status : result.getInstanceStatuses()) {

            InstanceStateName currentState = InstanceStateName.fromValue(status.getInstanceState().getName());
            String ec2InstanceId = status.getInstanceId();
            String virtualInstanceId = virtualInstanceIdsByEC2InstanceId.get(ec2InstanceId);
            InstanceState instanceState = EC2InstanceState.fromInstanceStateName(currentState);
            instanceStateByVirtualInstanceId.put(virtualInstanceId, instanceState);
        }

        String nextToken = result.getNextToken();
        if (nextToken != null) {
            page++;
            LOG.info(">> Fetching page {} using token {}", page, nextToken);
            result = client
                    .describeInstanceStatus(new DescribeInstanceStatusRequest().withNextToken(nextToken));
            LOG.info("<< Result: {}", result);
        } else {
            break;
        }
    }

    return instanceStateByVirtualInstanceId;
}

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

License:Apache License

/**
 * Verify EC2 instances running./*from w  ww . j a  v  a  2s .  co m*/
 *
 * @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()));
}