Example usage for com.amazonaws.services.ec2.model Filter Filter

List of usage examples for com.amazonaws.services.ec2.model Filter Filter

Introduction

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

Prototype

public Filter(String name) 

Source Link

Document

Constructs a new Filter object.

Usage

From source file:Conductor.java

License:Open Source License

/**
 * Gets number of current running and pending instances in a security group.
 * //  w w  w  .  j a  v a  2 s .c om
 *  
 * @param inTheSecurityGroup if we put null for this argument it gives all of a region instances.
 * @return
 */
private static int getNumberOfPendingAndRunnedInstances(String inTheSecurityGroup) {

    try {

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

        ls.add(new Filter("instance-state-name").withValues("running").withValues("pending"));

        // Get the instances in the security group.
        if (inTheSecurityGroup.length() > 0)
            ls.add(new Filter("group-name").withValues(inTheSecurityGroup));

        DescribeInstancesResult describeInstancesRequest = ec2
                .describeInstances(new DescribeInstancesRequest().withFilters(ls));

        // instances.getPlacement().getAvailabilityZone();

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

        Set<Instance> instances = new HashSet<Instance>();

        for (Reservation reservation : reservations) {
            instances.addAll(reservation.getInstances());
            //   System.out.println(reservation.getInstances());
        }

        return instances.size();
    } catch (Exception e) {

        DebugMessage.ShowErrors("getNumberOfPendingAndRunnedInstances()", e.getMessage(), "", true);
        return -1;
    }

}

From source file:Conductor.java

License:Open Source License

/**
* Get number of running,pending,stopped,terminated,stopping,shutting-down servers in one security group.
* @param typeOfReport/*from ww  w  . j a v  a  2 s.com*/
* @return
*/
private static int getNumberofInstances(int typeOfReport) {

    try {

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

        if (typeOfReport == 0) {
            ls.add(new Filter("instance-state-name").withValues("running"));
        } else if (typeOfReport == 1) {
            ls.add(new Filter("instance-state-name").withValues("pending"));
        } else if (typeOfReport == 2) {
            ls.add(new Filter("instance-state-name").withValues("stopped"));
        } else if (typeOfReport == 3) {
            ls.add(new Filter("instance-state-name").withValues("terminated"));
        } else if (typeOfReport == 4) {
            ls.add(new Filter("instance-state-name").withValues("stopping"));
        } else if (typeOfReport == 5) {
            ls.add(new Filter("instance-state-name").withValues("shutting-down"));
        } else if (typeOfReport == 6) {
            ls.add(new Filter("instance-state-name").withValues("running").withValues("pending"));
        } else {
            ls.add(new Filter("instance-state-name").withValues("pending"));
            ls.add(new Filter("instance-state-name").withValues("running"));
        }

        // Get the instances in the security group.
        ls.add(new Filter("group-name").withValues(config.getProperty("InstanceAmiSecurityGroup")));

        DescribeInstancesResult describeInstancesRequest = ec2
                .describeInstances(new DescribeInstancesRequest().withFilters(ls));

        // instances.getPlacement().getAvailabilityZone();

        List<Reservation> reservations = describeInstancesRequest.getReservations();
        Set<Instance> instances = new HashSet<Instance>();

        for (Reservation reservation : reservations) {
            instances.addAll(reservation.getInstances());
        }

        return instances.size();
    } catch (Exception e) {

        DebugMessage.ShowErrors("getNumberofInstances()", e.getMessage(), "", true);

        return -1;
    }

}

From source file:Conductor.java

License:Open Source License

/**
 * Returns a security group or in a region running and pending servers.
 * If inTheSecurityGroup = "" then it returns all of servers (running and pending) in a region.
 *    //w  w  w  . j a va2  s.c  o  m
 * @param inTheSecurityGroup
 * @return
 */
public static String restGetServersInfo(String inTheSecurityGroup) {

    try {

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

        ls.add(new Filter("instance-state-name").withValues("running").withValues("pending"));

        // Get the instances in the security group if .
        if (inTheSecurityGroup.length() > 0)
            ls.add(new Filter("group-name").withValues(inTheSecurityGroup));

        DescribeInstancesResult describeInstancesRequest = ec2
                .describeInstances(new DescribeInstancesRequest().withFilters(ls));

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

        Set<Instance> instances = new HashSet<Instance>();
        String strResulttoReturn = null;
        for (Reservation reservation : reservations) {
            instances.addAll(reservation.getInstances());
            //   System.out.println(reservation.getInstances().toString());
            strResulttoReturn += reservation.getInstances().toString();
        }

        return strResulttoReturn;

    } catch (Exception e) {

        DebugMessage.ShowErrors("restGetServersInfo()", e.getMessage(), "", true);
        return "";
    }

}

From source file:com.bloomreach.bstore.highavailability.zookeeper.ZkClient.java

License:Apache License

/**
 * Fetch the public DNS names for the corresponding private Ips. SolrCloud defaults to private ips for all
 * interactions. If you want to run HAFT locally to copy data across 2 different zookeeper clusters, then we need
 * public IP translations to access the index. This method helps achieve that.
 *
 * @return {@link #getZkClusterData()} with private Ip to Public DNS Mapping based on EC2 api.
 *//*from w w w.j  a  v  a2s.c  o m*/
public ZkClusterData translatePrivateIpToPublicHostNames() {
    AWSCredentials credentials = new BasicAWSCredentials(AwsConfigReader.fetchAccessKey(),
            AwsConfigReader.fetchSecretyKey());
    AmazonEC2 ec2 = new AmazonEC2Client(credentials);

    Set<String> publicDnsNameHosts = new HashSet<String>();
    Map<String, String> privateIptoPublicHostNames = new HashMap<String, String>();

    if (allSolrNodes.isEmpty()) {
        logger.info("No valid solr hosts are found. Cannot do any mapping");
        return zkClusterData;
    }

    //Describe Filter with private-ips matching all solr nodes
    DescribeInstancesRequest request = new DescribeInstancesRequest()
            .withFilters(new Filter("private-ip-address").withValues(allSolrNodes));
    DescribeInstancesResult describeInstancesResult = ec2.describeInstances(request);
    List<Reservation> reservations = describeInstancesResult.getReservations();
    //Iterate over all instances and map their private Ip to Public Host Name
    logger.info("Fetching Public HostNames....");

    for (Reservation reservation : reservations) {
        List<Instance> instances = reservation.getInstances();
        for (Instance instance : instances) {
            logger.info("Private to Public Name of the Host is " + instance.getPrivateIpAddress() + " => "
                    + instance.getPublicDnsName());
            publicDnsNameHosts.add(instance.getPublicDnsName());
            privateIptoPublicHostNames.put(instance.getPrivateIpAddress(), instance.getPublicDnsName());
        }

    }
    //Point all zk data to point to the public dns names
    zkClusterData.updateSolrNodes(publicDnsNameHosts);
    //Set the data in a map so that it doesn't need to get recomputed by every function needing hostnames
    zkClusterData.setPrivateIpToPublicHostNameMap(privateIptoPublicHostNames);
    return zkClusterData;

}

From source file:com.dtolabs.rundeck.ec2.NodeGenerator.java

License:Apache License

private static Set<Instance> performQuery(AWSCredentials credentials, final String endPoint,
        final ArrayList<String> filterParams) {
    AmazonEC2Client ec2 = new AmazonEC2Client(credentials);
    if (null != endPoint && !"".equals(endPoint) && !"-".equals(endPoint)) {
        ec2.setEndpoint(endPoint);/*from  w  ww .j  a  va  2  s .c o m*/
    }

    //create "running" filter
    ArrayList<Filter> filters = new ArrayList<Filter>();
    Filter filter = new Filter("instance-state-name").withValues(InstanceStateName.Running.toString());
    filters.add(filter);

    if (null != filterParams) {
        for (final String filterParam : filterParams) {
            String[] x = filterParam.split("=", 2);
            if (!"".equals(x[0]) && !"".equals(x[1])) {
                filters.add(new Filter(x[0]).withValues(x[1]));
            }
        }
    }
    DescribeInstancesRequest request = new DescribeInstancesRequest().withFilters(filters);

    DescribeInstancesResult describeInstancesRequest = ec2.describeInstances(request);
    List<Reservation> reservations = describeInstancesRequest.getReservations();
    Set<Instance> instances = new HashSet<Instance>();

    for (final Reservation reservation : reservations) {
        instances.addAll(reservation.getInstances());
    }
    return instances;
}

From source file:com.dtolabs.rundeck.plugin.resources.ec2.InstanceToNodeMapper.java

License:Apache License

private ArrayList<Filter> buildFilters() {
    final ArrayList<Filter> filters = new ArrayList<Filter>();
    if (isRunningStateOnly()) {
        final Filter filter = new Filter("instance-state-name")
                .withValues(InstanceStateName.Running.toString());
        filters.add(filter);//from  w  ww  .j a va 2  s. c o  m
    }

    if (null != getFilterParams()) {
        for (final String filterParam : getFilterParams()) {
            final String[] x = filterParam.split("=", 2);
            if (!"".equals(x[0]) && !"".equals(x[1])) {
                filters.add(new Filter(x[0]).withValues(x[1]));
            }
        }
    }
    return filters;
}

From source file:com.hazelcast.samples.amazon.elasticbeanstalk.HazelcastInstanceFactory.java

License:Open Source License

protected Properties getAwsProperties() {
    EC2MetadataUtils.InstanceInfo instanceInfo = EC2MetadataUtils.getInstanceInfo();
    String instanceId = instanceInfo.getInstanceId();

    // EB sets the environment ID and name as the elasticbeanstalk:environment-id and
    // elasticbeanstalk:environment-name EC2 tags on all of the parts of an EB app environment: load balancer,
    // EC2 instances, security groups, etc. Surprisingly, EC2 tags aren't available to instances through the
    // instance metadata interface, but they are available through the normal AWS APIs DescribeTags call.
    Collection<Filter> filters = new ArrayList<Filter>();
    filters.add(new Filter("resource-type").withValues("instance"));
    filters.add(new Filter("resource-id").withValues(instanceId));
    filters.add(new Filter("key").withValues(ELASTICBEANSTALK_ENVIRONMENT_NAME));

    DescribeTagsRequest describeTagsRequest = new DescribeTagsRequest();
    describeTagsRequest.setFilters(filters);
    DescribeTagsResult describeTagsResult = amazonEC2.describeTags(describeTagsRequest);

    if (describeTagsResult == null || describeTagsResult.getTags().isEmpty()) {
        throw new IllegalStateException(
                "No tag " + ELASTICBEANSTALK_ENVIRONMENT_NAME + " found for instance " + instanceId + ".");
    }//w w  w  .  j  av  a  2  s.  c o  m

    String environmentName = describeTagsResult.getTags().get(0).getValue();
    String environmentPassword = MD5Util.toMD5String(environmentName);

    Properties properties = new Properties();
    properties.setProperty(HAZELCAST_ENVIRONMENT_NAME, environmentName);
    properties.setProperty(HAZELCAST_ENVIRONMENT_PASSWORD, environmentPassword);
    properties.setProperty(HAZELCAST_AWS_IAM_ROLE, ELASTICBEANSTALK_EC2_ROLE_NAME);
    properties.setProperty(HAZELCAST_AWS_REGION, instanceInfo.getRegion());

    return properties;
}

From source file:com.lunabeat.dooper.HadoopCluster.java

License:Apache License

/**
 *
 * @return whether security groups exist for this cluster.
 *//*from  www  .j  av a2s. c  om*/
public boolean groupsExist() {
    update();
    DescribeSecurityGroupsResult dsr = _ec2.describeSecurityGroups(new DescribeSecurityGroupsRequest()
            .withFilters(new Filter(GROUP_NAME_KEY).withValues(_groupName, _masterGroupName)));
    if (dsr.getSecurityGroups().size() > 0) {
        return true;
    }
    return false;
}

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

License:Apache License

@Override
public void run() {
    if (!deployDefaults.isReconcileClassicLinkAccount(account)) {
        return;//from w  ww.  java  2 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.noctarius.hazelcast.aws.HazelcastAwsDiscoveryStrategy.java

License:Open Source License

private void configureFilter(DescribeInstancesRequest instancesRequest, String key, String... values) {
    instancesRequest.withFilters(new Filter(key).withValues(values));
}