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

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

Introduction

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

Prototype


public void setFilters(java.util.Collection<Filter> filters) 

Source Link

Document

The filters.

Usage

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;/*from  ww w.  j  av a  2 s  .c o 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.ipcglobal.awscdh.config.ManageEc2.java

License:Apache License

/**
 * Find EC2 instances./* w  w w  .  j  a  va 2  s .c o m*/
 *
 * @return the list
 * @throws Exception the exception
 */
public List<Instance> findInstances() throws Exception {
    List<Instance> instances = new ArrayList<Instance>();
    DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest();
    Filter filterVpcId = new Filter().withName("vpc-id").withValues(Arrays.asList(vpcId));
    Filter filterInstances = new Filter().withName("instance-id").withValues(instanceIds);
    describeInstancesRequest.setFilters(Arrays.asList(filterVpcId, filterInstances));
    DescribeInstancesResult describeInstancesResult = ec2Client.describeInstances(describeInstancesRequest);
    for (Reservation reservation : describeInstancesResult.getReservations()) {
        for (Instance instance : reservation.getInstances()) {
            instances.add(instance);
        }
    }

    return instances;
}

From source file:com.liferay.amazontools.AMIBuilder.java

License:Open Source License

protected Instance getRunningInstance(String instanceId) {
    DescribeInstancesRequest describeInstancesRequest = new DescribeInstancesRequest();

    List<Filter> filters = new ArrayList<Filter>();

    Filter filter = new Filter();

    filter.setName("instance-state-name");

    List<String> values = new ArrayList<String>();

    values.add("running");

    filter.setValues(values);/*from   ww  w .  ja  v a 2s.c  o  m*/

    filters.add(filter);

    describeInstancesRequest.setFilters(filters);

    List<String> instanceIds = new ArrayList<String>();

    instanceIds.add(instanceId);

    describeInstancesRequest.setInstanceIds(instanceIds);

    DescribeInstancesResult describeInstancesResult = amazonEC2Client
            .describeInstances(describeInstancesRequest);

    List<Reservation> reservations = describeInstancesResult.getReservations();

    if (reservations.isEmpty()) {
        return null;
    }

    Reservation reservation = reservations.get(0);

    List<Instance> instances = reservation.getInstances();

    return instances.get(0);
}

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);/*from   w w w .  jav  a2s.c o  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:eu.optimis.interopt.provider.aws.AmazonClient.java

License:Apache License

@Override
public List<VMProperties> queryServiceProperties(String serviceId) throws UnknownServiceException {

    List<VMProperties> list = null;

    AmazonEC2 ec2 = getAmazonEC2Client();
    log.info("Querying service VMs...");

    List<String> sids = new ArrayList<String>();
    sids.add(serviceId);//from ww  w .  j a  v  a2  s .  c o m
    Filter filt = new Filter("tag:serviceid", sids);
    List<Filter> filters = new ArrayList<Filter>();
    filters.add(filt);
    DescribeInstancesRequest req = new DescribeInstancesRequest();
    req.setFilters(filters);
    try {
        DescribeInstancesResult res = ec2.describeInstances(req);

        List<Instance> instances = new ArrayList<Instance>();
        for (Reservation r : res.getReservations()) {
            instances.addAll(r.getInstances());
        }
        log.info("#VMs found: " + instances.size());
        list = new ArrayList<VMProperties>();
        for (Instance inst : instances) {
            String status = inst.getState().getName().toString();
            if (!status.equals(InstanceStateName.Terminated.toString())) {
                VMProperties prop = new VMProperties();
                prop.setId(inst.getInstanceId());
                prop.setStatus(inst.getState().getName().toString());
                prop.setHostname(inst.getPublicDnsName());
                prop.setIp(inst.getPublicIpAddress());
                prop.put(VMProperties.AWS_INSTANCE_TYPE, inst.getInstanceType());
                list.add(prop);
            }

        }
    } catch (AmazonServiceException e) {
        log.error("Service query has failed: ");
        log.error(printServiceException(e));
        throw new UnknownServiceException("Service query has failed: " + e.getMessage());
    }

    return list;
}

From source file:eu.optimis.monitoring.amazoncollector.MeasurementsHelper.java

License:Apache License

public List<Measurement> getMeasurements() {
    AmazonEC2 ec2 = getAmazonEC2Client();
    List<Measurement> measurements = new LinkedList<Measurement>();

    List<Filter> filters = new LinkedList<Filter>();
    List<String> tags = new LinkedList<String>();
    tags.add(SERVICE_ID_TAG);//www.j  a va 2 s  . c  om
    Filter f = new Filter("tag-key", tags);
    filters.add(f);
    DescribeInstancesRequest req = new DescribeInstancesRequest();
    req.setFilters(filters);

    DescribeInstancesResult res;
    try {
        res = ec2.describeInstances(req);
    } catch (AmazonServiceException se) {
        printServiceException(se);
        throw new RuntimeException("Exception while trying to get information about running instances");
    }
    List<Instance> instances = new ArrayList<Instance>();
    for (Reservation r : res.getReservations()) {
        instances.addAll(r.getInstances());
    }

    for (Instance i : instances) {
        String instance_id = i.getInstanceId();
        InstanceType type = InstanceType.fromValue(i.getInstanceType());
        String ami_id = i.getImageId();
        String architecture = i.getArchitecture();
        String state = i.getState().getName();

        List<String> volume_ids = new LinkedList<String>();
        for (InstanceBlockDeviceMapping mapping : i.getBlockDeviceMappings()) {
            volume_ids.add(mapping.getEbs().getVolumeId());
        }

        String service_id = "";
        List<Tag> itags = i.getTags();
        for (Tag t : itags) {
            if (t.getKey().equals(SERVICE_ID_TAG)) {
                service_id = t.getValue();
                break;
            }
        }

        try {
            measurements.add(
                    new Measurement("machine_type", architecture, "", new Date(), instance_id, service_id));
            measurements.add(new Measurement("vm_status", state, "", new Date(), instance_id, service_id));

            Measurement m_mem = getTotalMemory(type, instance_id, service_id);
            Measurement m_cpu = getCPUSpeed(type, instance_id, service_id);
            Measurement m_cores = getNumVCores(type, instance_id, service_id);
            Measurement m_os = getOSRelease(ami_id, instance_id, service_id);
            Measurement m_disk = getTotalDiskSize(volume_ids, instance_id, service_id);
            Measurement m_memused = getCWMeasurement("MemoryUsed", "mem_used", true, instance_id, service_id);
            Measurement m_cpuutil = getCWMeasurement("CPUUtilization", "cpu_used", false, instance_id,
                    service_id);
            Measurement m_nout = getCWMeasurement("NetworkOut", "network_out", false, instance_id, service_id);
            Measurement m_nin = getCWMeasurement("NetworkIn", "network_in", false, instance_id, service_id);

            if (m_mem != null)
                measurements.add(m_mem);
            if (m_cpu != null)
                measurements.add(m_cpu);
            if (m_cores != null)
                measurements.add(m_cores);
            if (m_os != null)
                measurements.add(m_os);
            if (m_disk != null)
                measurements.add(m_disk);
            if (m_memused != null)
                measurements.add(m_memused);
            if (m_cpuutil != null)
                measurements.add(m_cpuutil);
            if (m_nout != null)
                measurements.add(m_nout);
            if (m_nin != null)
                measurements.add(m_nin);

        } catch (AmazonServiceException se) {
            printServiceException(se);
            throw new RuntimeException("Exception while trying to retrieve some metrics");
        }
    }

    return measurements;
}

From source file:hudson.plugins.ec2.SlaveTemplate.java

License:Open Source License

/**
 * Provisions an On-demand EC2 slave by launching a new instance or 
 * starting a previously-stopped instance.
 */// w  ww  . ja  v a  2  s  .c om
private EC2AbstractSlave provisionOndemand(TaskListener listener) throws AmazonClientException, IOException {
    PrintStream logger = listener.getLogger();
    AmazonEC2 ec2 = getParent().connect();

    try {
        String msg = "Launching " + ami + " for template " + description;
        logger.println(msg);
        LOGGER.info(msg);

        KeyPair keyPair = getKeyPair(ec2);

        RunInstancesRequest riRequest = new RunInstancesRequest(ami, 1, 1);
        InstanceNetworkInterfaceSpecification net = new InstanceNetworkInterfaceSpecification();

        if (useEphemeralDevices) {
            setupEphemeralDeviceMapping(riRequest);
        } else {
            setupCustomDeviceMapping(riRequest);
        }

        List<Filter> diFilters = new ArrayList<Filter>();
        diFilters.add(new Filter("image-id").withValues(ami));

        if (StringUtils.isNotBlank(getZone())) {
            Placement placement = new Placement(getZone());
            if (getUseDedicatedTenancy()) {
                placement.setTenancy("dedicated");
            }
            riRequest.setPlacement(placement);
            diFilters.add(new Filter("availability-zone").withValues(getZone()));
        }

        if (StringUtils.isNotBlank(getSubnetId())) {
            if (getAssociatePublicIp()) {
                net.setSubnetId(getSubnetId());
            } else {
                riRequest.setSubnetId(getSubnetId());
            }

            diFilters.add(new Filter("subnet-id").withValues(getSubnetId()));

            /* If we have a subnet ID then we can only use VPC security groups */
            if (!securityGroupSet.isEmpty()) {
                List<String> group_ids = getEc2SecurityGroups(ec2);

                if (!group_ids.isEmpty()) {
                    if (getAssociatePublicIp()) {
                        net.setGroups(group_ids);
                    } else {
                        riRequest.setSecurityGroupIds(group_ids);
                    }

                    diFilters.add(new Filter("instance.group-id").withValues(group_ids));
                }
            }
        } else {
            /* No subnet: we can use standard security groups by name */
            riRequest.setSecurityGroups(securityGroupSet);
            if (securityGroupSet.size() > 0)
                diFilters.add(new Filter("instance.group-name").withValues(securityGroupSet));
        }

        String userDataString = Base64.encodeBase64String(userData.getBytes());
        riRequest.setUserData(userDataString);
        riRequest.setKeyName(keyPair.getKeyName());
        diFilters.add(new Filter("key-name").withValues(keyPair.getKeyName()));
        riRequest.setInstanceType(type.toString());
        diFilters.add(new Filter("instance-type").withValues(type.toString()));

        if (getAssociatePublicIp()) {
            net.setAssociatePublicIpAddress(true);
            net.setDeviceIndex(0);
            riRequest.withNetworkInterfaces(net);
        }

        boolean hasCustomTypeTag = false;
        HashSet<Tag> inst_tags = null;
        if (tags != null && !tags.isEmpty()) {
            inst_tags = new HashSet<Tag>();
            for (EC2Tag t : tags) {
                inst_tags.add(new Tag(t.getName(), t.getValue()));
                diFilters.add(new Filter("tag:" + t.getName()).withValues(t.getValue()));
                if (StringUtils.equals(t.getName(), EC2Tag.TAG_NAME_JENKINS_SLAVE_TYPE)) {
                    hasCustomTypeTag = true;
                }
            }
        }
        if (!hasCustomTypeTag) {
            if (inst_tags == null) {
                inst_tags = new HashSet<Tag>();
            }
            inst_tags.add(new Tag(EC2Tag.TAG_NAME_JENKINS_SLAVE_TYPE, "demand"));
        }

        DescribeInstancesRequest diRequest = new DescribeInstancesRequest();
        diFilters.add(new Filter("instance-state-name").withValues(InstanceStateName.Stopped.toString(),
                InstanceStateName.Stopping.toString()));
        diRequest.setFilters(diFilters);

        msg = "Looking for existing instances with describe-instance: " + diRequest;
        logger.println(msg);
        LOGGER.fine(msg);

        DescribeInstancesResult diResult = ec2.describeInstances(diRequest);

        Instance existingInstance = null;
        if (StringUtils.isNotBlank(getIamInstanceProfile())) {
            riRequest.setIamInstanceProfile(
                    new IamInstanceProfileSpecification().withArn(getIamInstanceProfile()));
            // cannot filter on IAM Instance Profile, so search in result
            reservationLoop: for (Reservation reservation : diResult.getReservations()) {
                for (Instance instance : reservation.getInstances()) {
                    if (instance.getIamInstanceProfile() != null
                            && instance.getIamInstanceProfile().getArn().equals(getIamInstanceProfile())) {
                        existingInstance = instance;
                        break reservationLoop;
                    }
                }
            }
        } else if (diResult.getReservations().size() > 0) {
            existingInstance = diResult.getReservations().get(0).getInstances().get(0);
        }

        if (existingInstance == null) {
            // Have to create a new instance
            Instance inst = ec2.runInstances(riRequest).getReservation().getInstances().get(0);

            /* Now that we have our instance, we can set tags on it */
            if (inst_tags != null) {
                for (int i = 0; i < 5; i++) {
                    try {
                        updateRemoteTags(ec2, inst_tags, inst.getInstanceId());
                        break;
                    } catch (AmazonServiceException e) {
                        if (e.getErrorCode().equals("InvalidInstanceRequestID.NotFound")) {
                            Thread.sleep(5000);
                            continue;
                        }
                        throw e;
                    }
                }

                // That was a remote request - we should also update our local instance data.
                inst.setTags(inst_tags);
            }
            msg = "No existing instance found - created: " + inst;
            logger.println(msg);
            LOGGER.info(msg);
            return newOndemandSlave(inst);
        }

        msg = "Found existing stopped instance: " + existingInstance;
        logger.println(msg);
        LOGGER.info(msg);

        List<String> instances = new ArrayList<String>();
        instances.add(existingInstance.getInstanceId());
        StartInstancesRequest siRequest = new StartInstancesRequest(instances);
        StartInstancesResult siResult = ec2.startInstances(siRequest);

        msg = "Starting existing instance: " + existingInstance + " result:" + siResult;
        logger.println(msg);
        LOGGER.fine(msg);

        for (EC2AbstractSlave ec2Node : NodeIterator.nodes(EC2AbstractSlave.class)) {
            if (ec2Node.getInstanceId().equals(existingInstance.getInstanceId())) {
                msg = "Found existing corresponding Jenkins slave: " + ec2Node;
                logger.println(msg);
                LOGGER.finer(msg);
                return ec2Node;
            }
        }

        // Existing slave not found
        msg = "Creating new Jenkins slave for existing instance: " + existingInstance;
        logger.println(msg);
        LOGGER.info(msg);
        return newOndemandSlave(existingInstance);

    } catch (FormException e) {
        throw new AssertionError(); // we should have discovered all configuration issues upfront
    } catch (InterruptedException e) {
        throw new RuntimeException(e);
    }
}

From source file:org.elasticdroid.model.EC2InstancesModel.java

License:Open Source License

/**
 * /*w  ww .j  a  v  a  2  s.  c o  m*/
 * @param filters
 * @return This method can return:
 * <ul>
 * <li>ArrayList<SerializableInstance>: If all goes well</li>
 * <li>AmazonClientException: If there's connectivity problems on the client.</li>
 * <li>AmazonServiceException: If there's AWS service problems.</li>
 * <li>IllegalArgumentException: If the region can't be found.</li>
 * </ul>
 */
public Object getInstances(Filter... filters) {
    ArrayList<SerializableInstance> serInstances = new ArrayList<SerializableInstance>();
    //result passed to Activity
    List<Region> regions;
    List<Reservation> reservations; //restult from EC2

    //create credentials using the BasicAWSCredentials class
    BasicAWSCredentials credentials = new BasicAWSCredentials(connectionData.get("accessKey"),
            connectionData.get("secretAccessKey"));
    //create Amazon EC2 Client object, and set tye end point to the region. params[3]
    //contains endpoint
    AmazonEC2Client amazonEC2Client = new AmazonEC2Client(credentials);

    //1. create a filter for this region name
    Filter regionFilter = new Filter("region-name");
    regionFilter.setValues(new ArrayList<String>(Arrays.asList(new String[] { selectedRegion })));

    //2. query using this filter
    try {
        regions = amazonEC2Client.describeRegions(new DescribeRegionsRequest().withFilters(regionFilter))
                .getRegions();
    } catch (AmazonServiceException exc) {
        return exc;
    } catch (AmazonClientException exc) {
        return exc;
    }

    //3. Make sure the region was found.
    if (regions.size() != 1) {
        return new IllegalArgumentException("Invalid region passed to model.");
    }

    Log.v(TAG + ".doInBackground()",
            "endpoint for region : " + selectedRegion + "=" + regions.get(0).getEndpoint());
    //set the endpoint
    amazonEC2Client.setEndpoint(regions.get(0).getEndpoint());

    //now get the instances

    Log.v(TAG, "Size of filters:" + filters.length);
    DescribeInstancesRequest request = new DescribeInstancesRequest();
    request.setFilters(Arrays.asList(filters));

    //get the list of instances using this filter
    try {
        reservations = amazonEC2Client.describeInstances(request).getReservations();
    } catch (AmazonServiceException amazonServiceException) {
        return amazonServiceException;
    } catch (AmazonClientException amazonClientException) {
        return amazonClientException;
    }

    //add each instance found into the list of instances to return to the view
    for (Reservation reservation : reservations) {
        List<String> securityGroups = reservation.getGroupNames();
        //note to self: List is an interface ArrayList implements.
        //for each reservation, get the list of instances associated
        for (Instance instance : reservation.getInstances()) {
            serInstances.add(new SerializableInstance(instance, securityGroups));
        }
    }

    return serInstances;
}