Example usage for com.amazonaws.services.ec2.model DescribeInstancesRequest withInstanceIds

List of usage examples for com.amazonaws.services.ec2.model DescribeInstancesRequest withInstanceIds

Introduction

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

Prototype


public DescribeInstancesRequest withInstanceIds(java.util.Collection<String> instanceIds) 

Source Link

Document

The instance IDs.

Usage

From source file:ca.roussil.ec2instancestarter.SimpleEc2Service.java

License:Open Source License

private Instance getSingleEc2InstanceById(String ec2InstanceId) {
    DescribeInstancesRequest describeRequest = new DescribeInstancesRequest();
    describeRequest.withInstanceIds(ec2InstanceId);
    DescribeInstancesResult result = config.getAmazonEC2Client().describeInstances(describeRequest);

    List<Reservation> reservations = result.getReservations();
    List<Instance> instances = reservations.get(0).getInstances();
    if (instances.size() == 0)
        throw new RuntimeException(
                "There is a problem, could not find an ec2 instance for id=" + ec2InstanceId);
    return instances.get(0);
}

From source file:com.appdynamics.connectors.AWSConnector.java

License:Apache License

private Instance getEc2Instance(IMachine machine, AmazonEC2 connector) throws ConnectorException {
    DescribeInstancesResult describeInstancesResult = null;
    try {//  w w  w .j a va2 s.c om
        DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest();
        describeInstancesResult = connector
                .describeInstances(describeInstancesRequest.withInstanceIds(machine.getName()));
        List<Reservation> reservations = describeInstancesResult.getReservations();
        if (reservations.size() == 0) {
            // machine not found MUST have been terminated
            return null;
        }

        // always it will be in the first reservation as the query is on
        // only one machine
        List<Instance> instances = reservations.get(0).getInstances();
        for (Instance instance : instances) {
            if (instance.getInstanceId().equals(machine.getName())) {
                // found the machine
                return instance;
            }
        }
    } catch (Exception e) {
        throw new ConnectorException(e);
    }

    return null;
}

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

License:Apache License

/**
 * Convert from AWS ASG Instances to Turbine Instances
 *
 * @param asg/*from ww  w. j av a2 s. c om*/
 * @return list of Turbine Instances (not AWS Instances)
 */
private List<Instance> getTurbineInstances(AutoScalingGroup asg) {
    String clusterName = asg.getTags().stream().filter(t -> t.getKey().equals(CLUSTER_TAG_KEY.get())).findAny()
            .get().getValue();

    List<com.amazonaws.services.autoscaling.model.Instance> awsInstances = asg.getInstances();

    Collection<String> instanceIds = awsInstances.stream()
            .map(com.amazonaws.services.autoscaling.model.Instance::getInstanceId).collect(Collectors.toSet());

    DescribeInstancesRequest request = new DescribeInstancesRequest();
    request.withInstanceIds(instanceIds);

    DescribeInstancesResult describeInstancesResult = ec2Client.describeInstances(request);
    List<Reservation> reservations = describeInstancesResult.getReservations();
    List<Instance> turbineInstances = new ArrayList<>();

    // add all instances from each of the reservations - after converting to Turbine instance
    reservations.stream().flatMap(r -> r.getInstances().stream())
            .filter(i -> !Strings.isNullOrEmpty(i.getPublicDnsName()))
            .map(i -> createTurbineInstance(clusterName, i)).forEach(turbineInstances::add);

    return turbineInstances;
}

From source file:com.netflix.simianarmy.client.aws.AWSClient.java

License:Apache License

/**
 * Describe a set of specific instances.
 *
 * @param instanceIds the instance ids//w  w w .jav  a 2s  .  c om
 * @return the instances
 */
public List<Instance> describeInstances(String... instanceIds) {
    if (instanceIds == null || instanceIds.length == 0) {
        LOGGER.info(String.format("Getting all EC2 instances in region %s.", region));
    } else {
        LOGGER.info(
                String.format("Getting EC2 instances for %d ids in region %s.", instanceIds.length, region));
    }

    List<Instance> instances = new LinkedList<Instance>();

    AmazonEC2 ec2Client = ec2Client();
    DescribeInstancesRequest request = new DescribeInstancesRequest();
    if (instanceIds != null) {
        request.withInstanceIds(Arrays.asList(instanceIds));
    }
    DescribeInstancesResult result = ec2Client.describeInstances(request);
    for (Reservation reservation : result.getReservations()) {
        instances.addAll(reservation.getInstances());
    }

    LOGGER.info(String.format("Got %d EC2 instances in region %s.", instances.size(), region));
    return instances;
}

From source file:com.netflix.turbine.discovery.AwsUtil.java

License:Apache License

/**
 * Convert from AWS ASG Instances to Turbine Instances
 * // w  ww  . j  av a2 s. co m
 * @param asgName
 * @return list of Turbine Instances (not AWS Instances)
 */
public List<Instance> getTurbineInstances(String asgName) {
    List<com.amazonaws.services.autoscaling.model.Instance> awsInstances = getAutoScalingGroup(asgName)
            .getInstances();

    Collection<String> instanceIds = Collections2.transform(awsInstances,
            new Function<com.amazonaws.services.autoscaling.model.Instance, String>() {
                @Override
                public String apply(com.amazonaws.services.autoscaling.model.Instance asgInstance) {
                    return asgInstance.getInstanceId();
                }
            });

    DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest();
    describeInstancesRequest.withInstanceIds(instanceIds);

    DescribeInstancesResult describeInstancesResult = ec2Client.describeInstances(describeInstancesRequest);
    List<Reservation> reservations = describeInstancesResult.getReservations();
    List<Instance> turbineInstances = new ArrayList<Instance>();

    // add all instances from each of the reservations - after converting to Turbine instance
    for (Reservation reservation : reservations) {
        List<com.amazonaws.services.ec2.model.Instance> ec2Instances = reservation.getInstances();
        for (com.amazonaws.services.ec2.model.Instance ec2Instance : ec2Instances) {
            String hostname = ec2Instance.getPublicDnsName();

            String statusName = ec2Instance.getState().getName();
            boolean status = statusName.equals("running"); // see com.amazonaws.services.ec2.model.InstanceState for values

            Instance turbineInstance = new Instance(hostname, asgName, status);
            turbineInstance.getAttributes().put("asg", asgName);

            turbineInstances.add(turbineInstance);
        }
    }

    return turbineInstances;
}

From source file:com.rmn.qa.aws.AwsTagReporter.java

License:Open Source License

@Override
public void run() {
    log.info("AwsTagReporter thread initialized");
    DescribeInstancesRequest request = new DescribeInstancesRequest();
    Collection<String> instanceIds = new ArrayList<>();
    for (Instance instance : instances) {
        instanceIds.add(instance.getInstanceId());
    }/*  ww w . ja v  a2 s .c o m*/
    request.withInstanceIds(instanceIds);
    long startTime = System.currentTimeMillis();
    boolean instancesFound = false;
    do {
        // Wait up to 10 seconds for the instances to exist with AWS
        if (System.currentTimeMillis() > startTime + AwsTagReporter.TIMEOUT_IN_SECONDS) {
            throw new RuntimeException("Error waiting for instances to exist to add tags");
        }
        try {
            DescribeInstancesResult existingInstances = ec2Client.describeInstances(request);
            if (existingInstances.getReservations().get(0).getInstances().size() == instances.size()) {
                log.info("Correct instances were found to add tags to!");
                instancesFound = true;
            }
        } catch (Throwable t) {
            log.warn("Error finding instances.  Sleeping for 500ms.");
            try {
                sleep();
            } catch (InterruptedException e) {
                log.error("Error sleeping for adding tags", e);
            }
        }
    } while (!instancesFound);
    associateTags(instances);
    log.info("AwsTagReporter thread completed successfully");
}

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.  j  a  va 2  s  .c  o m
        // 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.urbancode.terraform.tasks.aws.helpers.AWSHelper.java

License:Apache License

/**
 *
 * @param instanceIds// w ww  .  j  a v a2 s .  c  o  m
 * @param ec2Client
 * @return
 */
public List<Instance> getInstances(List<String> instanceIds, AmazonEC2 ec2Client) {
    DescribeInstancesRequest request = new DescribeInstancesRequest();

    if (instanceIds != null && !instanceIds.isEmpty()) {
        request = request.withInstanceIds(instanceIds);
    }
    DescribeInstancesResult result = ec2Client.describeInstances(request);

    List<Instance> instances = new ArrayList<Instance>();
    List<Reservation> reses = result.getReservations();
    if (reses != null) {
        for (Reservation res : result.getReservations()) {
            if (res.getInstances() != null && !res.getInstances().isEmpty()) {
                for (Instance instance : res.getInstances()) {
                    instances.add(instance);
                }
            }
        }
    }
    return instances;
}

From source file:de.fischer.thotti.ec2.clients.EC2Updater.java

License:Apache License

private void prepareRequestsPerRegion(EC2RequestData<DescribeInstancesRequest> requestData, RegionType region) {
    DescribeInstancesRequest request = new DescribeInstancesRequest();

    for (InstanceType server : region.getInstances()) {
        request.withInstanceIds(server.getInstanceID());
    }//from   w w w.  ja v  a 2 s .  c  o  m

    requestData.getRegion(region.getName()).addRequest(request);
}

From source file:elasticity.services.AmazonService.java

License:Open Source License

/**
 * Runs a VM instance on an EC2 compatible cloud.
 * //  www .jav a  2  s  .  c  o m
 * @return The IP of the started instance.
 */
public String runInstance() throws Exception {
    logger.log(Level.INFO, "Running new instance..");
    //Prepares the run request.
    RunInstancesRequest runInstancesRequest = new RunInstancesRequest();
    runInstancesRequest.setImageId(awsImageId);
    runInstancesRequest.setKeyName(awsKeypair);
    runInstancesRequest.setSecurityGroups(Collections.singleton(awsSecurityGroup));
    runInstancesRequest.setInstanceType(awsInstanceType);
    runInstancesRequest.setMaxCount(1);
    runInstancesRequest.setMinCount(1);

    //Executes the run request.
    String instanceId = ""; //Will be changed eventually.
    boolean done = false;
    while (!done) {
        try {
            RunInstancesResult runInstancesResult = ec2.runInstances(runInstancesRequest);
            instanceId = runInstancesResult.getReservation().getInstances().get(0).getInstanceId();
            done = true;
        } catch (Exception e) {
            logger.log(Level.INFO, "Error while sending RunInstanceRequest, retrying in 1s...");
            e.printStackTrace(System.out);
            Thread.sleep(1000);
        }
    }

    logger.log(Level.INFO, "Sent RunInstanceRequest successfully..");

    //Waits for the instance to be "running".
    String instanceIp = ""; //Will be changed eventually.
    done = false;
    while (!done) {
        try {
            Thread.sleep(1000);

            DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest();
            describeInstancesRequest.withInstanceIds(instanceId);
            DescribeInstancesResult describeInstancesResult = ec2.describeInstances(describeInstancesRequest);

            Instance instance = describeInstancesResult.getReservations().get(0).getInstances().get(0);
            logger.log(Level.INFO, "Current instance state: " + instance.getState().getName() + "..");
            if (instance.getState().getName().equals("running")) {
                instanceIp = instance.getPrivateIpAddress();
                ip2id.put(instanceIp, instanceId);
                done = true;
            }
        } catch (Exception e) {
            logger.log(Level.INFO, "Failed to get instance description, retrying..");
        }
    }

    logger.log(Level.INFO, "Instance ran with IP: " + instanceIp + ".");
    return instanceIp;
}