List of usage examples for com.amazonaws.services.ec2.model RunInstancesRequest setClientToken
public void setClientToken(String clientToken)
Unique, case-sensitive identifier you provide to ensure the idempotency of the request.
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(); }