Example usage for com.amazonaws.services.ec2.model RunInstancesRequest setClientToken

List of usage examples for com.amazonaws.services.ec2.model RunInstancesRequest setClientToken

Introduction

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

Prototype


public void setClientToken(String clientToken) 

Source Link

Document

Unique, case-sensitive identifier you provide to ensure the idempotency of the request.

Usage

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

License:Open Source License

private int addOnDemandInstance(List<VirtualServer> items) {

    RunInstancesRequest vs = new RunInstancesRequest();

    vs.setMinCount(items.size());//ww w  .jav a2  s.  c  om
    vs.setMaxCount(items.size());
    String token = items.get(0).getIdempotencyKey();

    if (token != null && token.length() > 64) {
        token = token.substring(token.length() - 64);
    }
    vs.setClientToken(token);
    HashMap<String, String> map = items.get(0).getParametersMap();
    Injector.inject(vs, 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"));
                vs.setPlacement(p);
            }
        }
        if (map.containsKey("groupName")) {
            String groupName = map.get("groupName");
            if (groupName != null && !groupName.equals("")) {
                p.setGroupName(map.get("groupName"));
                vs.setPlacement(p);
            }
        }

    }
    if (items.size() == 1 && createWithZombie(items.get(0))) {
        return 1;
    }
    AmazonEC2Client client = getEC2Client(items.get(0).getAccessKey(), items.get(0).getEncryptedKey(),
            items.get(0).getLocation());
    RunInstancesResult result = null;
    try {
        result = client.runInstances(vs);
    } catch (AmazonServiceException e) {
        log.log(Level.WARNING, "EC2 error " + e.getErrorCode(), e);
        throw new WebApplicationException(e, Status.BAD_REQUEST);
    } catch (AmazonClientException e) {
        log.log(Level.SEVERE, "EC2 AmazonClientException", e);
        log.severe("Check for orphaned VMs");
        try {
            result = client.runInstances(vs);
        } catch (Exception e2) {
            log.log(Level.SEVERE, "EC2 AmazonClientException", e2);
            throw new WebApplicationException(e, Status.BAD_REQUEST);
        }
    }
    int i = 0;
    for (Instance ec2Instance : result.getReservation().getInstances()) {
        log.info("Create VM[" + i + "] has Instance id " + ec2Instance.getInstanceId());
        items.get(i).setInstanceId(ec2Instance.getInstanceId());
        i++;
    }

    return result.getReservation().getInstances().size();
}