List of usage examples for com.amazonaws.services.ec2.model DescribeInstanceStatusResult getNextToken
public String getNextToken()
The token to use to retrieve the next page of results.
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())); }