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