Search in sources :

Example 11 with TerminateInstancesRequest

use of software.amazon.awssdk.services.ec2.model.TerminateInstancesRequest in project airavata by apache.

the class AmazonUtil method terminateInstances.

/**
 * Terminate instances
 *
 * @param instanceIds
 */
public static void terminateInstances(String... instanceIds) {
    // terminate
    TerminateInstancesRequest request = new TerminateInstancesRequest();
    getEC2Client().terminateInstances(request.withInstanceIds(instanceIds));
}
Also used : TerminateInstancesRequest(com.amazonaws.services.ec2.model.TerminateInstancesRequest)

Example 12 with TerminateInstancesRequest

use of software.amazon.awssdk.services.ec2.model.TerminateInstancesRequest in project airavata by apache.

the class AmazonUtil method terminateInstances.

/**
 * Terminate instances
 *
 * @param instanceIds
 */
public static void terminateInstances(List<String> instanceIds) {
    // terminate
    TerminateInstancesRequest request = new TerminateInstancesRequest(instanceIds);
    getEC2Client().terminateInstances(request);
}
Also used : TerminateInstancesRequest(com.amazonaws.services.ec2.model.TerminateInstancesRequest)

Example 13 with TerminateInstancesRequest

use of software.amazon.awssdk.services.ec2.model.TerminateInstancesRequest in project cloudbreak by hortonworks.

the class AwsResourceConnector method downscale.

@Override
public List<CloudResourceStatus> downscale(AuthenticatedContext auth, CloudStack stack, List<CloudResource> resources, List<CloudInstance> vms, Object resourcesToRemove) {
    Collection<String> instanceIds = new ArrayList<>();
    for (CloudInstance vm : vms) {
        instanceIds.add(vm.getInstanceId());
    }
    String asGroupName = cfStackUtil.getAutoscalingGroupName(auth, vms.get(0).getTemplate().getGroupName(), auth.getCloudContext().getLocation().getRegion().value());
    DetachInstancesRequest detachInstancesRequest = new DetachInstancesRequest().withAutoScalingGroupName(asGroupName).withInstanceIds(instanceIds).withShouldDecrementDesiredCapacity(true);
    AmazonAutoScalingClient amazonASClient = awsClient.createAutoScalingClient(new AwsCredentialView(auth.getCloudCredential()), auth.getCloudContext().getLocation().getRegion().value());
    try {
        amazonASClient.detachInstances(detachInstancesRequest);
    } catch (AmazonServiceException e) {
        if (!"ValidationError".equals(e.getErrorCode()) || !e.getErrorMessage().contains("not part of Auto Scaling") || instanceIds.stream().anyMatch(id -> !e.getErrorMessage().contains(id))) {
            throw e;
        }
        LOGGER.info(e.getErrorMessage());
    }
    AmazonEC2Client amazonEC2Client = awsClient.createAccess(new AwsCredentialView(auth.getCloudCredential()), auth.getCloudContext().getLocation().getRegion().value());
    try {
        amazonEC2Client.terminateInstances(new TerminateInstancesRequest().withInstanceIds(instanceIds));
    } catch (AmazonServiceException e) {
        if (!"InvalidInstanceID.NotFound".equals(e.getErrorCode())) {
            throw e;
        }
        LOGGER.info(e.getErrorMessage());
    }
    LOGGER.info("Terminated instances in stack '{}': '{}'", auth.getCloudContext().getId(), instanceIds);
    return check(auth, resources);
}
Also used : AwsCredentialView(com.sequenceiq.cloudbreak.cloud.aws.view.AwsCredentialView) AmazonEC2Client(com.amazonaws.services.ec2.AmazonEC2Client) AmazonAutoScalingClient(com.amazonaws.services.autoscaling.AmazonAutoScalingClient) ArrayList(java.util.ArrayList) AmazonServiceException(com.amazonaws.AmazonServiceException) CloudInstance(com.sequenceiq.cloudbreak.cloud.model.CloudInstance) DetachInstancesRequest(com.amazonaws.services.autoscaling.model.DetachInstancesRequest) TerminateInstancesRequest(com.amazonaws.services.ec2.model.TerminateInstancesRequest)

Example 14 with TerminateInstancesRequest

use of software.amazon.awssdk.services.ec2.model.TerminateInstancesRequest in project druid by druid-io.

the class EC2AutoScaler method terminateWithIds.

@Override
public AutoScalingData terminateWithIds(List<String> ids) {
    if (ids.isEmpty()) {
        return new AutoScalingData(new ArrayList<>());
    }
    try {
        log.info("Terminating instances[%s]", ids);
        amazonEC2Client.terminateInstances(new TerminateInstancesRequest(ids));
        return new AutoScalingData(ids);
    } catch (Exception e) {
        log.error(e, "Unable to terminate any instances.");
    }
    return null;
}
Also used : AutoScalingData(org.apache.druid.indexing.overlord.autoscaling.AutoScalingData) TerminateInstancesRequest(com.amazonaws.services.ec2.model.TerminateInstancesRequest)

Aggregations

TerminateInstancesRequest (com.amazonaws.services.ec2.model.TerminateInstancesRequest)13 TerminateInstancesResult (com.amazonaws.services.ec2.model.TerminateInstancesResult)3 ArrayList (java.util.ArrayList)3 AmazonServiceException (com.amazonaws.AmazonServiceException)2 AmazonAutoScalingClient (com.amazonaws.services.autoscaling.AmazonAutoScalingClient)1 DetachInstancesRequest (com.amazonaws.services.autoscaling.model.DetachInstancesRequest)1 AmazonEC2 (com.amazonaws.services.ec2.AmazonEC2)1 AmazonEC2Client (com.amazonaws.services.ec2.AmazonEC2Client)1 AwsCredentialView (com.sequenceiq.cloudbreak.cloud.aws.view.AwsCredentialView)1 CloudInstance (com.sequenceiq.cloudbreak.cloud.model.CloudInstance)1 AutoScalingData (io.druid.indexing.overlord.autoscaling.AutoScalingData)1 Collection (java.util.Collection)1 LinkedList (java.util.LinkedList)1 Message (org.apache.camel.Message)1 AutoScalingData (org.apache.druid.indexing.overlord.autoscaling.AutoScalingData)1 Ec2Exception (software.amazon.awssdk.services.ec2.model.Ec2Exception)1 InstanceStateChange (software.amazon.awssdk.services.ec2.model.InstanceStateChange)1 TerminateInstancesRequest (software.amazon.awssdk.services.ec2.model.TerminateInstancesRequest)1 TerminateInstancesResponse (software.amazon.awssdk.services.ec2.model.TerminateInstancesResponse)1