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

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

Introduction

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

Prototype

public TerminateInstancesRequest() 

Source Link

Document

Default constructor for TerminateInstancesRequest object.

Usage

From source file:elasticity.services.AmazonService.java

License:Open Source License

/**
 * Terminates a VM instance.//from   w ww . java  2  s . co m
 * 
 * @param instanceIp The IP address of the instance to be removed
 */
public void terminateInstance(String instanceIp) throws Exception {
    logger.log(Level.INFO, "Terminating instance with IP: " + instanceIp + "..");
    String instanceId = ip2id.get(instanceIp);

    TerminateInstancesRequest terminateInstancesRequest = new TerminateInstancesRequest();
    terminateInstancesRequest.withInstanceIds(instanceId);
    ec2.terminateInstances(terminateInstancesRequest);

    ip2id.remove(instanceIp);
    logger.log(Level.INFO, "Terminated instance successfully.");
}

From source file:eu.stratosphere.nephele.instance.ec2.FloatingInstance.java

License:Apache License

/**
 * This method checks if this floating instance has reached the end of its life cycle and, if so, terminates
 * itself.//from w  ww .  j a v a  2 s.c om
 */
public boolean hasLifeCycleEnded() {

    final long currentTime = System.currentTimeMillis();
    final long msremaining = this.leasePeriod - ((currentTime - this.launchTime) % this.leasePeriod);

    if (msremaining < TIME_THRESHOLD) {
        // Destroy this instance
        final AmazonEC2Client client = EC2ClientFactory.getEC2Client(this.awsAccessKey, this.awsSecretKey);
        final TerminateInstancesRequest tr = new TerminateInstancesRequest();
        final LinkedList<String> instanceIDlist = new LinkedList<String>();
        instanceIDlist.add(this.instanceID);
        tr.setInstanceIds(instanceIDlist);
        client.terminateInstances(tr);
        return true;
    }

    return false;
}

From source file:hu.mta.sztaki.lpds.cloud.entice.imageoptimizer.iaashandler.amazontarget.EC2VirtualMachine.java

License:Apache License

@Override
protected void terminateInstance() throws VMManagementException {
    try {//from w w  w. ja v  a  2  s. co  m
        int requests = reqCounter.decrementAndGet();
        if (requests < 0) {
            Shrinker.myLogger.severe("Terminating shrinking process, too much VM termination requests");
            Thread.dumpStack();
        }

        Shrinker.myLogger.info("Instance " + getInstanceId() + " received a terminate request");
        TerminateInstancesRequest terminateInstancesRequest = new TerminateInstancesRequest();
        terminateInstancesRequest.withInstanceIds(getInstanceIds());
        TerminateInstancesResult res = this.amazonEC2Client.terminateInstances(terminateInstancesRequest);
        Shrinker.myLogger.info("Terminate request dispatched for instance " + getInstanceId());

        List<InstanceStateChange> stateChanges = res.getTerminatingInstances();
        InstanceStateChange state = null;
        for (InstanceStateChange stateChange : stateChanges)
            if (getInstanceId().contains(stateChange.getInstanceId()))
                state = stateChange;
        if (state != null)
            Shrinker.myLogger.info("State of instance " + getInstanceId() + ": "
                    + state.getPreviousState().getName() + " -> " + state.getCurrentState().getName());
        else
            Shrinker.myLogger.info("null state for instance " + getInstanceId());

        // re-send terminate
        if (state == null || !TERMINATED_STATE.equals(state.getCurrentState().getName())) {
            int timeout = 0;
            int counter = 1;
            while (timeout < TERMINATE_TIMEOUT) {
                try {
                    Thread.sleep(5000);
                } catch (Exception x) {
                }
                Shrinker.myLogger.info("Re-sending (" + counter
                        + "x) terminate request dispatched for instance " + getInstanceId());
                try {
                    res = this.amazonEC2Client.terminateInstances(terminateInstancesRequest);
                    stateChanges = res.getTerminatingInstances();
                    for (InstanceStateChange stateChange : stateChanges)
                        if (getInstanceId().contains(stateChange.getInstanceId()))
                            state = stateChange;
                    if (state != null)
                        Shrinker.myLogger.info("State of instance " + getInstanceId() + ": "
                                + state.getPreviousState().getName() + " -> "
                                + state.getCurrentState().getName());
                    else
                        Shrinker.myLogger.info("null state for instance " + getInstanceId());
                } catch (AmazonServiceException x) { // terminated correctly
                    // it can happen that terminate seemingly didn't succeed for the first time (remains running), 
                    // but then the instance id is gone (correctly) so re-sending terminate will cause exception
                    if ("InvalidInstanceID.NotFound".equals(x.getErrorCode()))
                        break;
                    else
                        throw x;
                }
                if (state != null && TERMINATED_STATE.equals(state.getCurrentState().getName()))
                    break;
                timeout += 5000; // repeat every 5 second
                counter++;
            }

            if (timeout >= TERMINATE_TIMEOUT) {
                Shrinker.myLogger.info("ERROR: Cannot terminate instance: " + getInstanceId());
                System.exit(1);
            }
        }

    } catch (AmazonServiceException x) {
        Shrinker.myLogger.info("terminateInstance error: " + x.getMessage());
        throw new VMManagementException("terminateInstance exception", x);
    } catch (AmazonClientException x) {
        Shrinker.myLogger.info("terminateInstance error: " + x.getMessage());
        throw new VMManagementException("terminateInstance exception", x);
    }
    System.out.println("[T" + (Thread.currentThread().getId() % 100) + "] VM terminated: " + getInstanceId()
            + " " + this.ip + " (@" + new SimpleDateFormat("HH:mm:ss").format(Calendar.getInstance().getTime())
            + ")");
}

From source file:jp.aws.test.ec2.EC2Instance.java

License:Apache License

public void terminate(String instanceId) {
    ArrayList<String> instanceIds = new ArrayList<String>();
    instanceIds.add(instanceId);/*  w w  w  .j av  a2  s  .co m*/

    TerminateInstancesRequest terminateInstancesRequest = new TerminateInstancesRequest();
    terminateInstancesRequest.setInstanceIds(instanceIds); // ??
    clientManager.ec2().terminateInstances(terminateInstancesRequest);
}

From source file:jp.primecloud.auto.process.aws.AwsInstanceProcess.java

License:Open Source License

public void terminate(AwsProcessClient awsProcessClient, Long instanceNo) {
    AwsInstance awsInstance = awsInstanceDao.read(instanceNo);
    String instanceId = awsInstance.getInstanceId();

    // /*from   w  w  w . j av  a  2 s. c o  m*/
    Instance instance = instanceDao.read(instanceNo);
    processLogger.debug(null, instance, "AwsInstanceDelete",
            new Object[] { awsProcessClient.getPlatform().getPlatformName(), instanceId });

    // ?
    TerminateInstancesRequest request = new TerminateInstancesRequest();
    request.withInstanceIds(instanceId);
    TerminateInstancesResult result = awsProcessClient.getEc2Client().terminateInstances(request);
    List<InstanceStateChange> terminatingInstances = result.getTerminatingInstances();

    // API??
    if (terminatingInstances.size() == 0) {
        // 
        throw new AutoException("EPROCESS-000107", instanceId);

    } else if (terminatingInstances.size() > 1) {
        // ?????
        AutoException exception = new AutoException("EPROCESS-000108", instanceId);
        exception.addDetailInfo("result=" + terminatingInstances);
        throw exception;
    }

    // 
    if (log.isInfoEnabled()) {
        log.info(MessageUtils.getMessage("IPROCESS-100117", instanceId));
    }

    // 
    awsInstance.setStatus(terminatingInstances.get(0).getCurrentState().getName());
    awsInstanceDao.update(awsInstance);
}

From source file:n3phele.factory.ec2.VirtualServerResource.java

License:Open Source License

/**
 * Check if a zombie has expired and clean up if it has
 * /*from www . j  av a  2s  .com*/
 * @param s
 *            virtual server
 * @return TRUE if zombie
 */
private boolean checkForZombieExpiry(VirtualServer s) {
    boolean debugInstance = s.getName().equals("debug");
    boolean zombieInstance = s.getName().equals("zombie");
    if (zombieInstance || debugInstance) {
        refreshVirtualServer(s);
        if (s.getStatus().equals(InstanceStateName.Terminated.toString())) {
            log.info("Found dead " + s.getName() + " with id " + s.getInstanceId() + " created "
                    + s.getCreated());
            manager.delete(s);
            return true;
        }
        long created = s.getCreated().getTime();
        long now = new Date().getTime();
        long age = ((now - created) % (60 * 60 * 1000)) / 60000; // minutes
        // into
        // hourly
        // cycle
        if (age > 55 || s.getName().equals("Zombie") || s.getName().equals("Debug")
                || !s.getStatus().equals(InstanceStateName.Running.toString())) {
            log.info("Killing " + s.getName() + " with id " + s.getInstanceId() + " created " + s.getCreated());
            s.setName(debugInstance ? "Debug" : "Zombie");
            update(s);
            try {
                AmazonEC2 client = null;
                client = getEC2Client(s.getAccessKey(), s.getEncryptedKey(), s.getLocation());
                TerminateInstancesResult result = client.terminateInstances(
                        (new TerminateInstancesRequest()).withInstanceIds(s.getInstanceId()));
                log.info("Terminated " + result.getTerminatingInstances().size());
            } catch (Exception e) {
                log.log(Level.SEVERE, "Failed to delete zombie", e);
            }
            return true;
        }
    }
    return false;
}

From source file:n3phele.factory.ec2.VirtualServerResource.java

License:Open Source License

private void deleteInstance(VirtualServer item, UUID reference, int sequence) throws Exception {

    String instanceId = item.getInstanceId();
    try {/*  www. jav  a  2s  . c om*/
        String spotId = item.getSpotId();
        boolean isSpotImage = (spotId != null) && spotId.length() != 0;
        if (isSpotImage) {
            try {
                cancelSpotVMRequest(item);
            } catch (Exception e) {
                // ignore
            }
        }

        if (!item.getStatus().equals("Terminated") && instanceId != null && instanceId.length() > 0) {
            AmazonEC2 client = null;
            client = getEC2Client(item.getAccessKey(), item.getEncryptedKey(), item.getLocation());
            TerminateInstancesResult result = client
                    .terminateInstances((new TerminateInstancesRequest()).withInstanceIds(instanceId));
            if (result.getTerminatingInstances().size() == 0) { // Openstack
                log.warning("Termination returned " + result);
                if (updateStatus(item, "Terminated", reference, sequence)) {
                    update(item);
                }
            } else {
                InstanceState now = result.getTerminatingInstances().get(0).getCurrentState();
                InstanceState previous = result.getTerminatingInstances().get(0).getPreviousState();
                log.warning("Deleting instanceId " + instanceId + " from " + previous + " now " + now);
                if (updateStatus(item, now.getName(), reference, sequence)) {
                    update(item);
                }
            }
        } else {
            if (updateStatus(item, "Terminated", reference, sequence)) {
                update(item);
            }
        }

    } catch (Exception e) {
        log.log(Level.SEVERE, "Cleanup delete of instanceId " + instanceId, e);
        throw e;
    }

}

From source file:net.roboconf.iaas.ec2.IaasEc2.java

License:Apache License

@Override
public void terminateVM(String instanceId) throws IaasException {
    try {// w w  w.  j  a v a 2  s.c om
        TerminateInstancesRequest terminateInstancesRequest = new TerminateInstancesRequest();
        terminateInstancesRequest.withInstanceIds(instanceId);
        this.ec2.terminateInstances(terminateInstancesRequest);

    } catch (AmazonServiceException e) {
        this.logger.severe("An error occurred on Amazon while terminating the machine. " + e.getMessage());
        throw new IaasException(e);

    } catch (AmazonClientException e) {
        this.logger.severe("An error occurred while terminating a machine on Amazon EC2. " + e.getMessage());
        throw new IaasException(e);
    }
}

From source file:net.roboconf.target.ec2.internal.Ec2IaasHandler.java

License:Apache License

@Override
public void terminateMachine(TargetHandlerParameters parameters, String machineId) throws TargetException {

    this.logger.fine("Terminating machine '" + machineId + "'.");
    cancelMachineConfigurator(machineId);
    try {/*from  w w  w  .  ja  v  a 2  s  .c  om*/
        AmazonEC2 ec2 = createEc2Client(parameters.getTargetProperties());
        TerminateInstancesRequest terminateInstancesRequest = new TerminateInstancesRequest();
        terminateInstancesRequest.withInstanceIds(machineId);
        ec2.terminateInstances(terminateInstancesRequest);

    } catch (Exception e) {
        this.logger.severe("An error occurred while terminating a machine on Amazon EC2. " + e.getMessage());
        throw new TargetException(e);
    }
}

From source file:org.apache.airavata.gfac.ec2.AmazonUtil.java

License:Apache License

/**
 * Terminate instances//from w  w  w.j  ava 2s  .  c om
 *
 * @param instanceIds  instance ids of the running instances.
 */
public static void terminateInstances(String... instanceIds) {
    // terminate
    TerminateInstancesRequest request = new TerminateInstancesRequest();
    getEC2Client().terminateInstances(request.withInstanceIds(instanceIds));
}