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

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

Introduction

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

Prototype


public String getNextToken() 

Source Link

Document

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

Usage

From source file:aws.example.ec2.DescribeInstances.java

License:Open Source License

public static void main(String[] args) {
    final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();
    boolean done = false;

    while (!done) {
        DescribeInstancesRequest request = new DescribeInstancesRequest();
        DescribeInstancesResult response = ec2.describeInstances(request);

        for (Reservation reservation : response.getReservations()) {
            for (Instance instance : reservation.getInstances()) {
                System.out.printf(
                        "Found reservation with id %s, " + "AMI %s, " + "type %s, " + "state %s "
                                + "and monitoring state %s",
                        instance.getInstanceId(), instance.getImageId(), instance.getInstanceType(),
                        instance.getState().getName(), instance.getMonitoring().getState());
            }/*from ww  w  .j  a va2 s.co m*/
        }

        request.setNextToken(response.getNextToken());

        if (response.getNextToken() == null) {
            done = true;
        }
    }
}

From source file:com.bodybuilding.turbine.discovery.Ec2TagInstanceDiscovery.java

License:Apache License

private Collection<Instance> getInstancesInternal() {
    List<Filter> filterList = new ArrayList<>(1);
    filterList.add(new Filter("tag-key", Lists.newArrayList(CLUSTER_TAG_KEY.get())));

    String nextToken = null;/*w  w  w .j  a  va 2  s.  co  m*/
    Collection<Instance> instances = new ArrayList<>();
    do {
        DescribeInstancesRequest request = new DescribeInstancesRequest();
        request.setFilters(filterList);
        request.setNextToken(nextToken);
        DescribeInstancesResult results = ec2Client.describeInstances(request);
        nextToken = results.getNextToken();
        instances.addAll(processReservations(results.getReservations()));
    } while (!Strings.isNullOrEmpty(nextToken));

    return instances;
}

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

License:Apache License

/**
 * Iterates through the instances in the specified {@code DescribeInstancesResult}
 * and calls the specified handler on each instance.
 *
 * @param result          the {@code DescribeInstancesResult}
 * @param instanceHandler the instance handler
 *///from  w w  w  .  j  a va 2s . com
private void forEachInstance(DescribeInstancesResult result, InstanceHandler instanceHandler) {
    List<Reservation> reservations;
    while (!(reservations = result.getReservations()).isEmpty()) {
        for (Reservation reservation : reservations) {
            for (Instance instance : reservation.getInstances()) {
                LOG.debug("Calling instance handler with instance {}", instance);
                instanceHandler.handle(instance);
            }
        }

        if (result.getNextToken() != null) {
            result = client
                    .describeInstances(new DescribeInstancesRequest().withNextToken(result.getNextToken()));
        } else {
            break;
        }
    }
}

From source file:com.netflix.spinnaker.clouddriver.aws.agent.ReconcileClassicLinkSecurityGroupsAgent.java

License:Apache License

@Override
public void run() {
    if (!deployDefaults.isReconcileClassicLinkAccount(account)) {
        return;/*w ww .  j  a  v  a2 s  .  co m*/
    }
    log.info("Checking classic link security groups in {}/{}", account.getName(), region);
    AmazonEC2 ec2 = amazonClientProvider.getAmazonEC2(account, region, true);
    List<String> classicLinkVpcIds = ec2.describeVpcClassicLink().getVpcs().stream()
            .filter(VpcClassicLink::getClassicLinkEnabled).map(VpcClassicLink::getVpcId)
            .collect(Collectors.toList());
    if (classicLinkVpcIds.size() > 1) {
        log.warn("Multiple classicLinkVpcs found: {}", classicLinkVpcIds);
        throw new IllegalStateException("More than 1 classicLinkVpc found: " + classicLinkVpcIds);
    }

    if (classicLinkVpcIds.isEmpty()) {
        return;
    }
    String classicLinkVpcId = classicLinkVpcIds.get(0);

    RateLimiter apiRequestRateLimit = RateLimiter.create(5);
    final Map<String, ClassicLinkInstance> classicLinkInstances = new HashMap<>();
    DescribeInstancesRequest describeInstances = new DescribeInstancesRequest().withMaxResults(500);
    while (true) {
        apiRequestRateLimit.acquire();
        DescribeInstancesResult instanceResult = ec2.describeInstances(describeInstances);
        instanceResult.getReservations().stream().flatMap(r -> r.getInstances().stream())
                .filter(i -> i.getVpcId() == null)
                .filter(i -> Optional
                        .ofNullable(i.getState()).filter(is -> is.getCode() == RUNNING_STATE).isPresent())
                .filter(this::isInstanceOldEnough)
                .map(i -> new ClassicLinkInstance().withInstanceId(i.getInstanceId())
                        .withVpcId(classicLinkVpcId).withTags(i.getTags()))
                .forEach(cli -> classicLinkInstances.put(cli.getInstanceId(), cli));

        if (instanceResult.getNextToken() == null) {
            break;
        }
        describeInstances.setNextToken(instanceResult.getNextToken());
    }

    DescribeClassicLinkInstancesRequest request = new DescribeClassicLinkInstancesRequest()
            .withMaxResults(1000);
    while (true) {
        apiRequestRateLimit.acquire();
        DescribeClassicLinkInstancesResult result = ec2.describeClassicLinkInstances(request);
        result.getInstances().forEach(i -> classicLinkInstances.put(i.getInstanceId(), i));
        if (result.getNextToken() == null) {
            break;
        }
        request.setNextToken(result.getNextToken());
    }

    log.info("{} existing classic instances in {}/{}", classicLinkInstances.size(), account.getName(), region);

    Map<String, String> groupNamesToIds = ec2
            .describeSecurityGroups(new DescribeSecurityGroupsRequest()
                    .withFilters(new Filter("vpc-id").withValues(classicLinkVpcId)))
            .getSecurityGroups().stream()
            .collect(Collectors.toMap(SecurityGroup::getGroupName, SecurityGroup::getGroupId));

    reconcileInstances(ec2, groupNamesToIds, classicLinkInstances.values());
}

From source file:com.pinterest.arcee.aws.EC2HostInfoDAOImpl.java

License:Apache License

@Override
public Set<String> getTerminatedHosts(Set<String> staleIds) throws Exception {
    HashSet<String> ids = new HashSet<>(staleIds);
    HashSet<String> terminatedHosts = new HashSet<>();
    while (!ids.isEmpty()) {
        DescribeInstancesRequest request = new DescribeInstancesRequest();
        request.setInstanceIds(ids);/*from ww w . ja v  a  2  s .c  o m*/
        try {
            do {
                DescribeInstancesResult results = ec2Client.describeInstances(request);
                List<Reservation> reservations = results.getReservations();
                for (Reservation reservation : reservations) {
                    for (Instance instance : reservation.getInstances()) {
                        int stateCode = instance.getState().getCode();
                        String id = instance.getInstanceId();
                        if (stateCode == TERMINATED_CODE || stateCode == STOPPED_CODE) {
                            LOG.info(String.format("Instance %s has already been terminated or stopped.", id));
                            terminatedHosts.add(id);
                        }

                        ids.remove(id);
                    }
                }
                if (results.getNextToken() == null || results.getNextToken().isEmpty()) {
                    break;
                }
                request = new DescribeInstancesRequest();
                request.setInstanceIds(ids);
                request.setNextToken(results.getNextToken());
            } while (true);
            LOG.debug("Cannot find the following ids in AWS:", ids);
            terminatedHosts.addAll(ids);
            return terminatedHosts;
        } catch (AmazonServiceException ex) {
            Collection<String> invalidHostIds = handleInvalidInstanceId(ex);
            ids.removeAll(invalidHostIds);
            // add invalid host ids to the terminated host list.
            terminatedHosts.addAll(invalidHostIds);
        } catch (AmazonClientException ex) {
            LOG.error(String.format("Get AmazonClientException, exit with terminiatedHost %s",
                    terminatedHosts.toString()), ex);
            return terminatedHosts;
        }
    }
    return terminatedHosts;
}

From source file:com.pinterest.arcee.aws.EC2HostInfoDAOImpl.java

License:Apache License

@Override
public List<String> getRunningInstances(List<String> runningIds) throws Exception {
    HashSet<String> ids = new HashSet<>(runningIds);
    ArrayList<String> resultIds = new ArrayList<>();
    while (!ids.isEmpty()) {
        DescribeInstancesRequest request = new DescribeInstancesRequest();
        request.setInstanceIds(ids);/*w w  w. j  av  a 2s .  co m*/
        Filter filter = new Filter("instance-state-code", Arrays.asList(RUNNING_CODE));
        request.setFilters(Arrays.asList(filter));
        try {
            do {
                DescribeInstancesResult results = ec2Client.describeInstances(request);
                List<Reservation> reservations = results.getReservations();
                for (Reservation reservation : reservations) {
                    for (Instance instance : reservation.getInstances()) {
                        resultIds.add(instance.getInstanceId());
                    }
                }
                if (StringUtils.isEmpty(results.getNextToken())) {
                    break;
                }

                request = new DescribeInstancesRequest();
                request.setNextToken(results.getNextToken());
            } while (true);
            LOG.debug("Cannot find the following ids in AWS:", ids);
            return resultIds;
        } catch (AmazonServiceException ex) {
            // if the error code is not instance not found. return the terminated list we've already got.
            ids.removeAll(handleInvalidInstanceId(ex));
        } catch (AmazonClientException ex) {
            LOG.error(String.format("Get AmazonClientException, exit with terminiatedHost %s",
                    resultIds.toString()), ex);
            throw new Exception(String.format("Get AmazonClientException, exit with terminiatedHost %s",
                    resultIds.toString()), ex);
        }
    }
    return resultIds;
}

From source file:com.steelbridgelabs.oss.neo4j.cluster.ecs.AutoscalingGroupMembers.java

License:Apache License

public static void main(String[] args) {
    // check arguments
    if (args.length == 1) {
        // create aws ec2 client
        AmazonEC2 client = AmazonEC2ClientBuilder.defaultClient();
        // create request
        DescribeInstancesRequest request = new DescribeInstancesRequest();
        // use instance ids associated to cluster
        request.withInstanceIds(ec2Instances(args[0]));
        // next token
        String token = null;/*from   w w w.java  2  s. c om*/
        // instance ip addresses
        List<String> addresses = new ArrayList<>();
        do {
            // set next token
            request.setNextToken(token);
            // describe instances
            DescribeInstancesResult result = client.describeInstances(request);
            // loop reservations
            result.getReservations().forEach(reservation -> {
                // append private ip addresses
                addresses.addAll(reservation.getInstances().stream().map(Instance::getPrivateIpAddress)
                        .collect(Collectors.toList()));
            });
            // check we have more data to retrieve
            token = result.getNextToken();
        } while (token != null);
        // dump initial cluster members
        System.out.print(addresses.stream().map(entry -> entry + ":5000").collect(Collectors.joining(",")));
    } else {
        // show information
        System.err.println("Invalid ECS cluster name: java -jar neo4j-cluster-ecs-tools.jar My-Cluster-Name");
    }
}

From source file:com.vb.aws.services.compute.ec2.EC2UtilsImpl.java

/**
 * This method returns all EC2 instances.
 * @return//from www.  j  a  v  a 2s . co  m
 * @throws AmazonClientException 
 */
public List<Instance> getAllInstances() throws AmazonClientException {

    String marker = null;
    List<Instance> allInstances = new ArrayList<>();

    try {

        while (true) {
            DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest();
            describeInstancesRequest.setNextToken(marker);
            DescribeInstancesResult describeInstancesResult = this.amazonEc2
                    .describeInstances(describeInstancesRequest);
            List<Reservation> reservations = describeInstancesResult.getReservations();
            for (Reservation reservation : reservations) {
                allInstances.addAll(reservation.getInstances());
            }

            marker = describeInstancesResult.getNextToken();
            if (marker == null) {
                break;
            }
        }

    } catch (AmazonClientException e) {
        System.out.println("ERROR : Fetching all EC2 instances.");
        e.printStackTrace();
        throw e;
    }

    System.out.println("INFO : Number of EC2 instances : " + allInstances.size());
    List<String> instancesId = allInstances.stream().map(e -> e.getInstanceId()).collect(Collectors.toList());
    System.out.println("INFO : EC2 Instances : " + instancesId);
    return allInstances;
}

From source file:ec2.DescribeInstances.java

License:Open Source License

public static void main(String[] args) {

    final AmazonEC2 ec2 = AmazonEC2ClientBuilder.defaultClient();

    boolean done = false;

    while (!done) {
        DescribeInstancesRequest request = new DescribeInstancesRequest();

        DescribeInstancesResult response = ec2.describeInstances(request);

        for (Reservation reservation : response.getReservations()) {
            for (Instance instance : reservation.getInstances()) {
                System.out.printf(
                        "Found reservation with id %s, AMI %s, type %s, state %s and monitoring state %s",
                        instance.getInstanceId(), instance.getImageId(), instance.getInstanceType(),
                        instance.getState().getName(), instance.getMonitoring().getState());
            }//w  w  w.  j a  va 2s  . c o  m
        }

        request.setNextToken(response.getNextToken());

        if (response.getNextToken() == null) {
            done = true;
        }
    }
}

From source file:io.macgyver.plugin.cloud.aws.scanner.EC2InstanceScanner.java

License:Apache License

private void forEachInstance(Region region, Consumer<Instance> consumer) {
    AmazonEC2Client client = getAWSServiceClient().createEC2Client(region);

    DescribeInstancesResult results = client.describeInstances(new DescribeInstancesRequest());
    String token = results.getNextToken();
    results.getReservations().forEach(reservation -> {
        reservation.getInstances().forEach(consumer);
    });//from   w w w .  jav  a 2s  .c o m

    while (!Strings.isNullOrEmpty(token) && !token.equals("null")) {
        results = client.describeInstances(new DescribeInstancesRequest().withNextToken(token));
        token = results.getNextToken();
        results.getReservations().forEach(reservation -> {
            reservation.getInstances().forEach(consumer);
        });
    }
}