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

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

Introduction

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

Prototype

@Override
public RequestSpotInstancesResult requestSpotInstances(RequestSpotInstancesRequest request) 

Source Link

Document

Creates a Spot Instance request.

Usage

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

License:Open Source License

private int addSpotInstance(List<VirtualServer> items) {

    RequestSpotInstancesRequest sir = new RequestSpotInstancesRequest();

    sir.setInstanceCount(items.size());//w  w w  .  j a v a  2s .c  om
    HashMap<String, String> map = items.get(0).getParametersMap();
    Injector.inject(sir, map);
    LaunchSpecification launchSpec = new LaunchSpecification();
    Injector.inject(launchSpec, map);
    if (map.containsKey("availabilityZone") || map.containsKey("groupName")) {
        Placement p = new Placement();
        if (map.containsKey("availabilityZone")) {
            String availabilityZone = map.get("availabilityZone");
            if (availabilityZone != null && !availabilityZone.equals("")) {
                p.setAvailabilityZone(map.get("availabilityZone"));
                launchSpec.setPlacement(p);
            }
        }
        if (map.containsKey("groupName")) {
            String groupName = map.get("groupName");
            if (groupName != null && !groupName.equals("")) {
                p.setGroupName(map.get("groupName"));
                launchSpec.setPlacement(p);
            }
        }

    }
    sir.setLaunchSpecification(launchSpec);

    AmazonEC2Client client = getEC2Client(items.get(0).getAccessKey(), items.get(0).getEncryptedKey(),
            items.get(0).getLocation());
    RequestSpotInstancesResult result = null;
    try {
        result = client.requestSpotInstances(sir);
    } catch (AmazonServiceException e) {
        log.log(Level.WARNING, "EC2 error " + e.getErrorCode(), e);
        throw new WebApplicationException(e, Status.BAD_REQUEST);
    }
    int i = 0;
    for (SpotInstanceRequest spot : result.getSpotInstanceRequests()) {
        log.warning("Spot Instance[" + i + "] id " + spot.getSpotInstanceRequestId());
        items.get(i).setSpotId(spot.getSpotInstanceRequestId());
        i++;
    }

    return result.getSpotInstanceRequests().size();
}