List of usage examples for com.amazonaws.services.ec2 AmazonEC2Client describeInstances
@Override
public DescribeInstancesResult describeInstances(DescribeInstancesRequest request)
Describes the specified instances or all of AWS account's instances.
From source file:com.boxupp.dao.AwsProjectDAOManager.java
License:Apache License
private String getPrivateHostName(String instanceID, String accessKeyId, String secretKey, String instanceRegion) {/*from w w w .j a v a 2 s . com*/ String privateHostName = null; BasicAWSCredentials cred = new BasicAWSCredentials(accessKeyId, secretKey); AmazonEC2Client ec2Client = new AmazonEC2Client(cred); try { ec2Client.setRegion(Region.getRegion(Regions.fromName(instanceRegion))); ArrayList<String> instanceIds = new ArrayList<String>(); instanceIds.add(instanceID); DescribeInstancesRequest req = new DescribeInstancesRequest(); req.setInstanceIds(instanceIds); DescribeInstancesResult result = ec2Client.describeInstances(req); Instance instance = result.getReservations().get(0).getInstances().get(0); privateHostName = instance.getPrivateDnsName(); } catch (AmazonServiceException amazonServiceException) { logger.info("Error while fecthing instance info from aws " + amazonServiceException.getMessage()); } catch (Exception exception) { logger.info("Error while fecthing instance info from aws " + exception.getMessage()); } return privateHostName; }
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);/*www. j a v a 2 s . co 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 Set<Instance> query(final AmazonEC2Client ec2, final DescribeInstancesRequest request) { //create "running" filter final DescribeInstancesResult describeInstancesRequest = ec2.describeInstances(request); return examineResult(describeInstancesRequest); }
From source file:com.lunabeat.dooper.ClusterList.java
License:Apache License
public static Map<String, Map<String, List<Instance>>> getClusterMap(ClusterConfig config) { HashMap<String, Map<String, List<Instance>>> clusterMap = new HashMap<String, Map<String, List<Instance>>>(); AmazonEC2Client ec2 = new AmazonEC2Client(config); DescribeSecurityGroupsRequest dsr = new DescribeSecurityGroupsRequest().withFilters( new Filter().withName(HadoopCluster.GROUP_NAME_KEY).withValues("*" + HadoopCluster.MASTER_SUFFIX)); DescribeSecurityGroupsResult groupsResult = ec2.describeSecurityGroups(dsr); if (groupsResult == null) return null; List<SecurityGroup> groups = groupsResult.getSecurityGroups(); ArrayList<String> groupNames = new ArrayList<String>(); for (SecurityGroup sg : groups) { groupNames.add(sg.getGroupName()); groupNames.add(sg.getGroupName().replace(HadoopCluster.MASTER_SUFFIX, "")); }// w ww. j a v a2 s. c om for (String group : groupNames) { String clusterName = group.replace(HadoopCluster.MASTER_SUFFIX, ""); if (clusterMap.get(clusterName) == null) clusterMap.put(clusterName, new HashMap<String, List<Instance>>()); if (clusterMap.get(clusterName).get(group) == null) clusterMap.get(clusterName).put(group, new ArrayList<Instance>()); } DescribeInstancesRequest dir = new DescribeInstancesRequest() .withFilters(new Filter().withName(HadoopCluster.GROUP_NAME_KEY).withValues(groupNames)); DescribeInstancesResult instanceResult = ec2.describeInstances(dir); if (instanceResult == null) return null; for (Reservation r : instanceResult.getReservations()) { String group = r.getGroupNames().get(0); String clusterName = group.replace(HadoopCluster.MASTER_SUFFIX, ""); if (clusterMap.get(clusterName) == null) clusterMap.put(clusterName, new HashMap<String, List<Instance>>()); if (clusterMap.get(clusterName).get(group) == null) clusterMap.get(clusterName).put(group, new ArrayList<Instance>()); for (Instance i : r.getInstances()) { clusterMap.get(clusterName).get(group).add(i); } } return clusterMap; }
From source file:com.pearson.eidetic.aws.EC2ClientMethods.java
public static DescribeInstancesResult describeInstances(AmazonEC2Client ec2Client, DescribeInstancesRequest describeInstancesRequest, Integer numRetries, Integer maxApiRequestsPerSecond, String uniqueAwsAccountIdentifier) { DescribeInstancesResult describeInstancesResult = null; for (int i = 0; i <= numRetries; i++) { try {// www .j a v a 2 s . c o m // if the initial download attempt failed, wait for i * 500ms if (i > 0) { long sleepTimeInMilliseconds = 500 * i; Threads.sleepMilliseconds(sleepTimeInMilliseconds); } AtomicLong requestAttemptCounter = GlobalVariables.apiRequestAttemptCountersByAwsAccount .get(uniqueAwsAccountIdentifier); long currentRequestCount = requestAttemptCounter.incrementAndGet(); while (currentRequestCount > maxApiRequestsPerSecond) { Threads.sleepMilliseconds(50); currentRequestCount = requestAttemptCounter.incrementAndGet(); } describeInstancesResult = ec2Client.describeInstances(describeInstancesRequest); if (describeInstancesResult != null) { GlobalVariables.apiRequestCountersByAwsAccount.get(uniqueAwsAccountIdentifier) .incrementAndGet(); break; } } catch (Exception e) { logger.error("awsAccountNickname=\"" + uniqueAwsAccountIdentifier + "\"," + describeInstancesRequest.toString() + System.lineSeparator() + e.toString() + System.lineSeparator() + StackTrace.getStringFromStackTrace(e)); } } return describeInstancesResult; }
From source file:com.swap.aws.elb.client.AWSHelper.java
License:Apache License
public Instance getInstanceByIP(String ip) { DescribeInstancesRequest request = new DescribeInstancesRequest(); // List<Filter> filters = new ArrayList<Filter>(); ///* w w w .j av a2s . c o m*/ // List<String> ips = new ArrayList<String>(); // ips.add(ip); // // Filter ipFilter = new Filter("ip-address", ips); // filters.add(ipFilter); // List<String> zones = new ArrayList<String>(); // zones.add("us-east-1c"); // Filter zoneFilter = new Filter("availability-zone", zones); // filters.add(zoneFilter); //request.setFilters(filters); AmazonElasticLoadBalancingClient lbClient = new AmazonElasticLoadBalancingClient(awsCredentials, clientConfiguration); AmazonEC2Client cl = new AmazonEC2Client(awsCredentials); DescribeInstancesResult result = cl.describeInstances(request); List<Reservation> reservations = result.getReservations(); for (Reservation reservation : reservations) { List<com.amazonaws.services.ec2.model.Instance> instances = reservation.getInstances(); for (com.amazonaws.services.ec2.model.Instance instance : instances) { System.out.println(instance.getInstanceId()); //return transformInstace(instance); } } return null; }
From source file:dsmwatcher.DSMWatcher.java
License:Open Source License
public void doRetrieveAgentInformation() throws Exception { HostStatusTransport hostStatus;// ww w .j a v a2 s . com boolean isolationCandidate; List<NetworkInterface> netInts = EC2MetadataUtils.getNetworkInterfaces(); String vpcid = EC2MetadataUtils.getData( "/latest/meta-data/network/interfaces/macs/" + netInts.get(0).getMacAddress() + "/vpc-id/"); String placement = EC2MetadataUtils.getData("/latest/meta-data/placement/availability-zone/"); region = Regions.fromName(placement.substring(0, placement.length() - 1)); AmazonEC2Client ec2 = new AmazonEC2Client().withRegion(region); DescribeInstancesResult descInstances = ec2.describeInstances(new DescribeInstancesRequest().withFilters( new Filter("vpc-id").withValues(vpcid), new Filter("instance-state-name").withValues("running"))); List<Reservation> runningInstances = descInstances.getReservations(); _ManagerService = _Service.getManager(new URL(dsmSOAP)); try { _sid = _ManagerService.authenticate(dsmUser, dsmPass); HostTransport host; RegisterBuiltin.register(ResteasyProviderFactory.getInstance()); ApacheHttpClient4Executor executor = new ApacheHttpClient4Executor(); ICloudAccountAPI cloudAPI = ProxyFactory.create(ICloudAccountAPI.class, dsmREST, executor); // resync the cloud accounts to ensure the DSM has the latest info try { CloudAccountListing cloudAccounts = cloudAPI.getCloudAccounts(_sid); List<CloudAccountElement> accounts = cloudAccounts.getCloudAccounts(); for (CloudAccountElement account : accounts) if (account.getCloudType().equals("AMAZON")) cloudAPI.synchronizeCloudAccount(account.getCloudAccountId(), _sid); } catch (ClientResponseFailure e) { ClientResponse<?> clientResponse = e.getResponse(); javax.ws.rs.core.Response.Status status = clientResponse.getResponseStatus(); log("Server returned error status code " + status.getStatusCode() + " (" + status + ")"); ErrorMessage errorMessage = clientResponse.getEntity(ErrorMessage.class); log("Returned error message: " + errorMessage.getMessage()); e.printStackTrace(); } catch (Exception e) { this.log("error:" + e.getMessage()); e.printStackTrace(); } for (Reservation reservation : runningInstances) { List<Instance> instances = reservation.getInstances(); for (Instance instance : instances) { Boolean beenNotified = notifiedInstances.contains(instance.getInstanceId()); Boolean isExempt = checkExempt(instance, ec2); ArrayList<String> violationReasons = new ArrayList<String>(); host = null; isolationCandidate = false; if (!instance.getPrivateDnsName().isEmpty()) host = _ManagerService.hostRetrieveByName(instance.getPrivateDnsName(), _sid); if (host == null) host = _ManagerService.hostRetrieveByName(instance.getInstanceId(), _sid); if (host == null && !instance.getPublicDnsName().isEmpty()) host = _ManagerService.hostRetrieveByName(instance.getPublicDnsName(), _sid); if (host == null && !(instance.getPublicIpAddress() == null)) host = _ManagerService.hostRetrieveByName(instance.getPublicIpAddress(), _sid); if (host == null) host = _ManagerService.hostRetrieveByName(instance.getPrivateIpAddress(), _sid); if (host == null) //giveup error("Error: instance found in DescribeInstances but not found in DSM"); if (host != null) { hostStatus = (HostStatusTransport) _ManagerService.hostGetStatus(host.getID(), _sid); Boolean isIsolated = checkIfIsolated(instance, ec2); if (hostStatus.getOverallStatus().equals("Unmanaged (Unknown)")) { if (!isIsolated && !isExempt && !beenNotified) log("Found unmanaged instance in EC2:" + instance.getInstanceId() + " with IP address of " + instance.getPrivateIpAddress() + " is currently running and not managed by Deep Security."); isolationCandidate = true; violationReasons.add("Instance is unmanaged"); } else { // SecurityProfileTransport hostSecurityProfile = _ManagerService.securityProfileRetrieve(hostSecurityProfileID, _sid); if (requireAV && (hostStatus.getOverallAntiMalwareStatus().startsWith(avOn) == false)) { if (!isIsolated && !isExempt && !beenNotified && (hostStatus.getOverallAntiMalwareStatus().compareTo( "Anti-Malware: Smart Protection Server Disconnected for Smart Scan") != 0)) { log("Policy violation: Instance " + instance.getInstanceId() + " with IP address of " + instance.getPrivateIpAddress() + " found with AV agent disabled"); //log("DEBUG: getOverallAntiMalwareStatus() returned:" + hostStatus.getOverallAntiMalwareStatus()); } if (!isIsolated && (hostStatus.getOverallAntiMalwareStatus().compareTo( "Anti-Malware: Smart Protection Server Disconnected for Smart Scan") != 0)) { isolationCandidate = true; violationReasons.add("AV is required but disabled"); } } if (requireFW && (hostStatus.getOverallFirewallStatus().substring(0, fwOn.length()) .compareTo(fwOn) != 0)) { if (!isIsolated && !isExempt && !beenNotified) log("Policy violation: Instance " + instance.getInstanceId() + " with IP address of " + instance.getPrivateIpAddress() + " found with host based firewall disabled"); isolationCandidate = true; violationReasons.add("Firewall is required but disabled"); } if (requireFIM && (hostStatus.getOverallIntegrityMonitoringStatus() .substring(0, fimOn.length()).compareTo(fimOn) != 0)) { if (!isIsolated && !isExempt && !beenNotified) log("Policy violation: Instance " + instance.getInstanceId() + " with IP address of " + instance.getPrivateIpAddress() + " found with file integrity monitoring disabled"); isolationCandidate = true; violationReasons.add("File Integrity Monitoring is required but disabled"); } if (requireDPI && (hostStatus.getOverallDpiStatus().substring(0, dpiOn.length()) .compareTo(dpiOn) != 0)) { if (!isIsolated && !isExempt && !beenNotified) log("Policy violation: Instance " + instance.getInstanceId() + " with IP address of " + instance.getPrivateIpAddress() + " found with deep packet inspection disabled or in an invalid mode"); isolationCandidate = true; violationReasons.add( "Deep Packet Instection is required but disabled or not in enforce mode"); } } if (isolationCandidate && enableIsolation && !isIsolated && !isExempt) { log("Instance " + instance.getInstanceId() + " will be isolated for failing one or more policy checks"); notifyAdmin(instance, violationReasons, false); notifiedInstances.add(instance.getInstanceId()); isolateInstance(instance, ec2); } if (isolationCandidate && !enableIsolation && !isIsolated && !isExempt && !beenNotified) { log("Instance " + instance.getInstanceId() + " is elligable for isolation but enforcement is disabled"); notifyAdmin(instance, violationReasons, false); notifiedInstances.add(instance.getInstanceId()); } if (!isolationCandidate && isIsolated) { removeIsolation(instance, ec2); notifyAdmin(instance, violationReasons, true); } if (beenNotified && !isolationCandidate) notifiedInstances.remove(instance.getInstanceId()); } } } } catch (Exception e) { this.log("Error: " + e.getMessage()); e.printStackTrace(); } if (_sid != null) _ManagerService.endSession(_sid); }
From source file:edu.brandeis.wisedb.aws.VMCreator.java
License:Open Source License
public VM createInstance(VMType type, VMDiskConfiguration disk, boolean waitForRunning) throws VirtualMachineException { AmazonEC2Client ec2 = getEC2(); RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); // TODO: figure out how to change storage type String instanceType = ""; switch (type) { case C4_LARGE: instanceType = "c4.large"; break;// ww w. j a v a2s . c o m case C4_XLARGE: instanceType = "c4.xlarge"; break; case M3_LARGE: instanceType = "m3.large"; break; case M3_MEDIUM: instanceType = "m3.medium"; break; case T2_MEDIUM: instanceType = "t2.medium"; break; case T2_SMALL: instanceType = "t2.small"; break; default: break; } BlockDeviceMapping bdm = null; switch (disk) { case HD100: bdm = new BlockDeviceMapping().withDeviceName("/dev/sda1") .withEbs(new EbsBlockDevice().withVolumeSize(100).withVolumeType(VolumeType.Standard) .withDeleteOnTermination(true).withSnapshotId(config.getSnapshotID())); case SSD10: bdm = new BlockDeviceMapping().withDeviceName("/dev/sda1") .withEbs(new EbsBlockDevice().withVolumeSize(10).withVolumeType(VolumeType.Gp2) .withDeleteOnTermination(true).withSnapshotId(config.getSnapshotID())); case SSD30: bdm = new BlockDeviceMapping().withDeviceName("/dev/sda1") .withEbs(new EbsBlockDevice().withVolumeSize(30).withVolumeType(VolumeType.Gp2) .withDeleteOnTermination(true).withSnapshotId(config.getSnapshotID())); default: break; } System.out.println(instanceType); runInstancesRequest = runInstancesRequest.withImageId(config.getAMIID()).withInstanceType(instanceType) .withMinCount(1).withMaxCount(1).withKeyName(config.getKeyPairName()) .withSubnetId(config.getSubnet()).withBlockDeviceMappings(bdm); RunInstancesResult rir = ec2.runInstances(runInstancesRequest); String instanceID = rir.getReservation().getInstances().get(0).getInstanceId(); String ip; if (waitForRunning) { int maxTry = 60; while (true) { try { DescribeInstancesResult dir = ec2 .describeInstances(new DescribeInstancesRequest().withInstanceIds(instanceID)); InstanceState is = dir.getReservations().get(0).getInstances().get(0).getState(); //System.out.println("Got state: " + is); // apparently this constant isn't stored anywhere... *sigh* if (is.getCode() == 16) { ip = dir.getReservations().get(0).getInstances().get(0).getPublicIpAddress(); break; } } catch (AmazonServiceException e) { //System.err.println("Trouble with AWS: " + e.getMessage()); } maxTry--; if (maxTry == 0) { throw new VirtualMachineException("machine never entered running state"); } try { Thread.sleep(2000); } catch (InterruptedException e) { } } VM toR = new VM(instanceID, ip, this); return toR; } VM toR = new VM(instanceID, null, this); return toR; }
From source file:eu.stratosphere.nephele.instance.ec2.EC2CloudManager.java
License:Apache License
/** * Converts a reserved instance into a cloud instance and returns it. * //from ww w . j a va2 s . c o m * @param instanceConnectionInfo * the {@link InstanceConnectionInfo} object identifying the instance * @param hardwareDescription * the actual hardware description of the instance * @return a cloud instance * @throws InstanceException * something wrong happens to the global configuration */ private EC2CloudInstance isReservedInstance(final InstanceConnectionInfo instanceConnectionInfo, final HardwareDescription hardwareDescription) throws InstanceException { if (instanceConnectionInfo == null) { LOG.warn("Supplied instance connection info is null"); return null; } synchronized (this.reservedInstancesToJobMapping) { if (this.reservedInstancesToJobMapping.size() == 0) { return null; } // Collect Jobs that have reserved instances final HashSet<JobID> jobsWithReservedInstances = new HashSet<JobID>(); for (JobID id : this.reservedInstancesToJobMapping.values()) { jobsWithReservedInstances.add(id); } // Now we call the web service for each job.. for (final JobID jobID : jobsWithReservedInstances) { JobToInstancesMapping mapping = null; synchronized (this.jobToInstancesAssignmentMap) { mapping = this.jobToInstancesAssignmentMap.get(jobID); } if (mapping == null) { LOG.error("Unknown mapping for job ID " + jobID); continue; } AmazonEC2Client ec2client = EC2ClientFactory.getEC2Client(mapping.getAwsAccessId(), mapping.getAwsSecretKey()); DescribeInstancesRequest request = new DescribeInstancesRequest(); DescribeInstancesResult result = ec2client.describeInstances(request); // Iterate over all Instances for (Reservation r : result.getReservations()) { for (Instance t : r.getInstances()) { InetAddress candidateAddress = null; try { candidateAddress = InetAddress.getByName(t.getPrivateIpAddress()); } catch (UnknownHostException e) { LOG.warn("Cannot convert " + t.getPrivateIpAddress() + " into an IP address"); continue; } if (instanceConnectionInfo.getAddress().equals(candidateAddress)) { NetworkTopology networkTopology; synchronized (this.networkTopologies) { networkTopology = this.networkTopologies.get(jobID); } if (networkTopology == null) { throw new InstanceException("Cannot find network topology for job " + jobID); } return convertIntoCloudInstance(t, instanceConnectionInfo, mapping.getAwsAccessId(), mapping.getAwsSecretKey(), networkTopology.getRootNode(), hardwareDescription); } } } } } return null; }
From source file:eu.stratosphere.nephele.instance.ec2.EC2CloudManager.java
License:Apache License
/** * Checks, if there are any orphaned Instances listed that are accessible via the provided configuration. * If so, orphaned Instances will be converted to floating instances related to the given configuration. * /*from w w w .jav a 2s . c om*/ * @param conf * The configuration provided upon instances request * @throws InstanceException * thrown if an error occurs while communicating with Amazon EC2 */ private void checkAndConvertOrphanedInstances(final Configuration conf) throws InstanceException { if (this.orphanedInstances.size() == 0) { return; } final String awsAccessId = conf.getString(AWS_ACCESS_ID_KEY, null); final String awsSecretKey = conf.getString(AWS_SECRET_KEY_KEY, null); if (LOG.isDebugEnabled()) { LOG.debug("Checking orphaned instances, " + this.orphanedInstances.size() + " orphaned instances listed."); } final AmazonEC2Client ec2client = EC2ClientFactory.getEC2Client(awsAccessId, awsSecretKey); DescribeInstancesResult result = null; try { final DescribeInstancesRequest request = new DescribeInstancesRequest(); result = ec2client.describeInstances(request); } catch (AmazonClientException e) { throw new InstanceException(StringUtils.stringifyException(e)); } // Iterate over all Instances for (final Reservation r : result.getReservations()) { for (final Instance t : r.getInstances()) { InstanceType type = null; // Find out type of the instance for (int i = 0; i < this.availableInstanceTypes.length; i++) { if (this.availableInstanceTypes[i].getIdentifier().equals(t.getInstanceType())) { type = this.availableInstanceTypes[i]; break; } } InetAddress inetAddress = null; try { inetAddress = InetAddress.getByName(t.getPrivateIpAddress()); } catch (UnknownHostException e) { LOG.error("Cannot resolve " + t.getPrivateDnsName() + " into an IP address: " + StringUtils.stringifyException(e)); continue; } final Iterator<Map.Entry<InstanceConnectionInfo, HardwareDescription>> it = this.orphanedInstances .entrySet().iterator(); while (it.hasNext()) { final Map.Entry<InstanceConnectionInfo, HardwareDescription> entry = it.next(); final InstanceConnectionInfo oi = entry.getKey(); final HardwareDescription hd = entry.getValue(); if (oi.getAddress().equals(inetAddress) && type != null) { LOG.info("Orphaned instance " + oi + " converted into floating instance."); // We have found the corresponding orphaned TM.. convert it back to a floating instance. final FloatingInstance floatinginstance = new FloatingInstance(t.getInstanceId(), oi, t.getLaunchTime().getTime(), this.leasePeriod, type, hd, awsAccessId, awsSecretKey); this.floatingInstances.put(oi, floatinginstance); it.remove(); break; } } } } }