Example usage for com.amazonaws.services.ec2 AmazonEC2Client describeInstances

List of usage examples for com.amazonaws.services.ec2 AmazonEC2Client describeInstances

Introduction

In this page you can find the example usage for com.amazonaws.services.ec2 AmazonEC2Client describeInstances.

Prototype

@Override
public DescribeInstancesResult describeInstances(DescribeInstancesRequest request) 

Source Link

Document

Describes the specified instances or all of AWS account's instances.

Usage

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;
                }
            }
        }
    }
}