List of usage examples for com.amazonaws.services.ec2.model DescribeInstancesRequest setFilters
public void setFilters(java.util.Collection<Filter> filters)
The filters.
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; }