List of usage examples for com.amazonaws.services.ec2.model Placement Placement
public Placement()
From source file:com.cloudera.director.aws.ec2.EC2Provider.java
License:Apache License
/** * Builds a {@code RunInstancesRequest} starting from a template and a set of * virtual IDs.//from w ww . j a v a2s . c om * * @param template the instance template * @param virtualInstanceIds the virtual instance IDs */ @SuppressWarnings("ConstantConditions") private RunInstancesRequest newRunInstancesRequest(EC2InstanceTemplate template, Collection<String> virtualInstanceIds, int minCount) { LOG.info(">> Building instance requests"); int groupSize = virtualInstanceIds.size(); String image = template.getImage(); String type = template.getType(); InstanceNetworkInterfaceSpecification network = getInstanceNetworkInterfaceSpecification(template); List<BlockDeviceMapping> deviceMappings = getBlockDeviceMappings(template); LOG.info(">> Instance request type: {}, image: {}, group size: {}", type, image, groupSize); RunInstancesRequest request = new RunInstancesRequest().withImageId(image).withInstanceType(type) .withMaxCount(groupSize).withMinCount(minCount) .withClientToken( getHashOfVirtualInstanceIdsForClientToken(virtualInstanceIds, Optional.<Long>absent())) .withNetworkInterfaces(network).withBlockDeviceMappings(deviceMappings); if (template.getIamProfileName().isPresent()) { request.withIamInstanceProfile( new IamInstanceProfileSpecification().withName(template.getIamProfileName().get())); } if (template.getKeyName().isPresent()) { request.withKeyName(template.getKeyName().get()); } Placement placement = null; if (template.getAvailabilityZone().isPresent()) { placement = new Placement().withAvailabilityZone(template.getAvailabilityZone().get()); } if (template.getPlacementGroup().isPresent()) { placement = (placement == null) ? new Placement().withGroupName(template.getPlacementGroup().get()) : placement.withGroupName(template.getPlacementGroup().get()); } placement = (placement == null) ? new Placement().withTenancy(template.getTenancy()) : placement.withTenancy(template.getTenancy()); request.withPlacement(placement); return request; }
From source file:com.dowdandassociates.gentoo.bootstrap.InstanceUtils.java
License:Apache License
public static Optional<Instance> onDemandInstance(AmazonEC2 ec2Client, Optional<Image> image, Integer minCount, Integer maxCount, SecurityGroupInformation securityGroupInformation, KeyPairInformation keyPairInformation, Optional<String> instanceType, Optional<String> availabilityZone, Long sleep) {/* w w w. j a v a2 s .c om*/ if (!image.isPresent()) { return Optional.absent(); } RunInstancesRequest runInstancesRequest = new RunInstancesRequest().withImageId(image.get().getImageId()) .withMinCount(minCount).withMaxCount(maxCount) .withSecurityGroups(securityGroupInformation.getGroupName()) .withKeyName(keyPairInformation.getName()); log.info("ImageId=" + image.get().getImageId()); log.info("MinCount=" + minCount); log.info("MaxCount=" + maxCount); log.info("SecurityGroups.1=" + securityGroupInformation.getGroupName()); log.info("KeyName=" + keyPairInformation.getName()); if (instanceType.isPresent()) { runInstancesRequest.setInstanceType(instanceType.get()); log.info("InstanceType=" + instanceType.get()); } if (availabilityZone.isPresent()) { runInstancesRequest.setPlacement(new Placement().withAvailabilityZone(availabilityZone.get())); log.info("Placement.AvailabilityZone=" + availabilityZone.get()); } RunInstancesResult runInstancesResult = ec2Client.runInstances(runInstancesRequest); DescribeInstanceStatusRequest describeInstanceStatusRequest = new DescribeInstanceStatusRequest() .withInstanceIds(runInstancesResult.getReservation().getInstances().get(0).getInstanceId()); try { while (true) { log.info("Sleeping for " + sleep + " ms"); Thread.sleep(sleep); DescribeInstanceStatusResult describeInstanceStatusResult = ec2Client .describeInstanceStatus(describeInstanceStatusRequest); if (describeInstanceStatusResult.getInstanceStatuses().isEmpty()) { continue; } InstanceStatus instance = describeInstanceStatusResult.getInstanceStatuses().get(0); String instanceState = instance.getInstanceState().getName(); log.info("instanceState = " + instanceState); if ("pending".equals(instanceState)) { continue; } if (!"running".equals(instanceState)) { return Optional.absent(); } String instanceStatus = instance.getInstanceStatus().getStatus(); String systemStatus = instance.getSystemStatus().getStatus(); log.info("instanceStatus = " + instanceStatus); log.info("systemStatus = " + systemStatus); if ("impaired".equals(instanceStatus)) { return Optional.absent(); } if ("impaired".equals(systemStatus)) { return Optional.absent(); } if (!"ok".equals(instanceStatus)) { continue; } if (!"ok".equals(systemStatus)) { continue; } break; } } catch (InterruptedException e) { return Optional.absent(); } DescribeInstancesResult describeInstancesResult = ec2Client.describeInstances(new DescribeInstancesRequest() .withInstanceIds(runInstancesResult.getReservation().getInstances().get(0).getInstanceId())); return Optional.fromNullable(describeInstancesResult.getReservations().get(0).getInstances().get(0)); }
From source file:com.liferay.amazontools.AMIBuilder.java
License:Open Source License
protected void start() { RunInstancesRequest runInstancesRequest = new RunInstancesRequest(); String availabilityZone = properties.getProperty("availability.zone"); if (!isZoneAvailable(availabilityZone)) { throw new RuntimeException("Unavailable zone " + availabilityZone); }// www .ja va 2s. c om String imageId = properties.getProperty("image.id"); if (imageId == null) { imageId = getImageId(properties.getProperty("image.name")); } runInstancesRequest.setImageId(imageId); runInstancesRequest.setInstanceType(properties.getProperty("instance.type")); runInstancesRequest.setKeyName(properties.getProperty("key.name")); runInstancesRequest.setMaxCount(1); runInstancesRequest.setMinCount(1); Placement placement = new Placement(); placement.setAvailabilityZone(availabilityZone); runInstancesRequest.setPlacement(placement); List<String> securityGroupsIds = new ArrayList<String>(); securityGroupsIds.add(properties.getProperty("security.group.id")); runInstancesRequest.setSecurityGroupIds(securityGroupsIds); RunInstancesResult runInstancesResult = amazonEC2Client.runInstances(runInstancesRequest); Reservation reservation = runInstancesResult.getReservation(); List<Instance> instances = reservation.getInstances(); if (instances.isEmpty()) { throw new RuntimeException("Unable to create instances"); } Instance instance = instances.get(0); _instanceId = instance.getInstanceId(); _publicIpAddress = instance.getPublicIpAddress(); StringBuilder sb = new StringBuilder(13); sb.append("{imageId="); sb.append(instance.getImageId()); sb.append(", instanceId="); sb.append(_instanceId); sb.append(", instanceType="); sb.append(instance.getInstanceType()); sb.append(", keyName="); sb.append(instance.getKeyName()); sb.append(", reservationId="); sb.append(reservation.getReservationId()); sb.append(", state="); InstanceState instanceState = instance.getState(); sb.append(instanceState.getName()); sb.append("}"); System.out.println("Starting instance " + sb.toString()); boolean running = false; for (int i = 0; i < 6; i++) { sleep(30); instance = getRunningInstance(_instanceId); if (instance != null) { _publicIpAddress = instance.getPublicIpAddress(); running = true; sb = new StringBuilder(7); sb.append("{instanceId="); sb.append(_instanceId); sb.append(", publicIpAddress="); sb.append(_publicIpAddress); sb.append(", stat="); instanceState = instance.getState(); sb.append(instanceState.getName()); sb.append("}"); System.out.println("Started instance " + sb.toString()); break; } } if (!running) { throw new RuntimeException("Unable to start instance " + _instanceId); } }
From source file:com.norbl.cbp.ppe.Ec2Wrangler.java
License:Open Source License
/** Specifies a placemen group in the <tt>req</tt>. * If a the param cluster/*from www .j a va 2s . c o m*/ * @param req */ private void setupClusterPlacementGroup(RunInstancesRequest req) { String clusterName; if (params.clusterGroupName != null) clusterName = params.clusterGroupName; else clusterName = ConstantsEc2.CLUSTER_GROUP_DEFAULT; createClusterGroupIfNecessary(clusterName); Placement placement = new Placement(); placement.setGroupName(clusterName); req.setPlacement(placement); }
From source file:com.urbancode.terraform.tasks.aws.helpers.AWSHelper.java
License:Apache License
/** * Launches a single instance with given parameters. * The REQUIRED parameters are amiId;/*from w w w . ja va2 s. c om*/ * You should always pass in a keyPair also, unless you know exactly what you are doing. Chances * are that you won't be able to get into your instance and it will be useless. * If groups is null, the instance will be launched with the default security group. * Subnet is only required if you're launching into a VPC. * * This will return the instanceId of the instance launched. * * @param amiId * @param subnetId * @param keyPair * @param size * @param userData * @param groups * @param ec2Client * @return instanceId */ public String launchAmi(String amiId, String subnetId, String keyPair, String size, String userData, List<String> groups, List<BlockDeviceMapping> blockMaps, String ariId, String akiId, String zone, String privateIp, AmazonEC2 ec2Client) { String instanceId = null; RunInstancesRequest request = new RunInstancesRequest().withImageId(amiId).withMinCount(1).withMaxCount(1); if (subnetId != null && !subnetId.isEmpty()) { // launch in VPC request = request.withSubnetId(subnetId); } else if (zone != null && !zone.isEmpty()) { // launch in EC2 Placement placement = new Placement().withAvailabilityZone(zone); request = request.withPlacement(placement); } else { log.error("No place to launch the instance specified." + "\nPlease specify either a subnet or region"); } if (keyPair != null) { request = request.withKeyName(keyPair); } if (size != null) { request = request.withInstanceType(size); } if (userData != null) { request = request.withUserData(Base64.encodeBase64String(userData.getBytes())); } if (groups != null && !groups.isEmpty()) { request = request.withSecurityGroupIds(groups); } if (blockMaps != null && !blockMaps.isEmpty()) { request = request.withBlockDeviceMappings(blockMaps); } if (ariId != null && !ariId.isEmpty()) { request = request.withRamdiskId(ariId); } if (akiId != null && !akiId.isEmpty()) { request = request.withKernelId(akiId); } if (privateIp != null && !privateIp.isEmpty()) { request = request.withPrivateIpAddress(privateIp); } RunInstancesResult result = ec2Client.runInstances(request); List<Instance> instances = result.getReservation().getInstances(); if (instances == null) { instanceId = null; log.error("List of instances is null!"); } else if (instances.size() == 0) { instanceId = null; log.error("List of instances is empty!"); } else if (instances.size() == 1) { instanceId = instances.get(0).getInstanceId(); log.info("Created instance with Id: " + instanceId); } else if (instances.size() > 1) { log.error("Too many instances! This is not supported!"); } return instanceId; }
From source file:com.zotoh.cloudapi.aws.EC2Instance.java
License:Open Source License
@Override public VirtualMachine launch(String ami, VirtualMachineProduct type, String zone, String name, String descOrUserData, String keypair, String vpcId, boolean monitoring, boolean asImageSandbox, String[] firewalls, Tag... tags) throws InternalException, CloudException { tstEStrArg("image-id", ami); tstObjArg("product-type", type); tstEStrArg("keypair", keypair); tstEStrArg("zone", zone); RunInstancesRequest req = new RunInstancesRequest().withInstanceType(type.getProductId()).withImageId(ami) .withKeyName(keypair).withMaxCount(1).withMinCount(1).withMonitoring(monitoring); if (!isNilArray(firewalls)) { req.withSecurityGroups(firewalls); }//from w ww .j a v a 2 s . c om String[] ss = zone.split("\\|"); _svc.getCloud().setAWSSite(ss[0]); if (ss.length > 1) { req.withPlacement(new Placement().withAvailabilityZone(trim(ss[1]))); } if (!isEmpty(descOrUserData)) { req.withUserData(descOrUserData); } RunInstancesResult res = _svc.getCloud().getEC2().runInstances(req); Reservation r = res == null ? null : res.getReservation(); VirtualMachine vm = null; if (r != null) { List<Instance> lst = r.getInstances(); vm = toVM(r.getOwnerId(), isNil(lst) ? null : lst.get(0)); } return vm; }
From source file:de.fischer.thotti.ec2.EC2Executor.java
License:Apache License
void addPlacementConstraints(RunInstancesRequest request, RegionType region) { Placement placement = new Placement(); if ("default".equals(region.getAvailibleZone()) == false) placement.setAvailabilityZone(region.getAvailibleZone()); if (null == placement.getAvailabilityZone()) return;// w ww . j av a 2 s .c o m request.setPlacement(placement); }
From source file:de.fischer.thotti.ec2.ResourceDefinitionGeneratorUT.java
License:Apache License
@Test public void test1Region1AvailabilityZone1Server() { Comparator comparator;//from w w w . j a v a 2 s .c o m comparator = new EC2Executor.InstaceAvailabilityComparator(); SortedSet<Instance> instancesInA = new TreeSet<Instance>(comparator); Instance instanceA1 = new Instance(); instanceA1.setPlacement(new Placement()); instanceA1.getPlacement().setAvailabilityZone("Z1"); instanceA1.setInstanceId("A1ID"); instanceA1.setPublicDnsName("public"); instanceA1.setPrivateDnsName("private"); instanceA1.setPublicIpAddress("111.111.111.111"); instanceA1.setPrivateIpAddress("222.222.222.222"); instanceA1.setKeyName("KP"); instanceA1.setInstanceType("t1.micro"); instancesInA.add(instanceA1); instanceMap.put("A", instancesInA); ResourcesDefinition definition = generator.generate(instanceMap); assert definition.getRegions().size() == 1; assert definition.getRegions().get(0).getAvailibleZone().equals("Z1"); RegionType region = definition.getRegions().get(0); assert region.getInstances().size() == 1; InstanceType instance = region.getInstances().get(0); assert instance.getPublicDNSName().equals("public"); assert instance.getPrivatDNSName().equals("private"); assert instance.getPrivateIP().equals("222.222.222.222"); assert instance.getPublicIP().equals("111.111.111.111"); assert instance.getKeyPair().equals("KP"); }
From source file:de.fischer.thotti.ec2.ResourceDefinitionGeneratorUT.java
License:Apache License
@Test public void test1Region1AvailabilityZone2Server() { Comparator comparator;/*w w w. j av a2 s .com*/ comparator = new EC2Executor.InstaceAvailabilityComparator(); SortedSet<Instance> instancesInA = new TreeSet<Instance>(comparator); Instance instanceA1 = new Instance(); Instance instanceA2 = new Instance(); instanceA1.setPlacement(new Placement()); instanceA1.getPlacement().setAvailabilityZone("Z1"); instanceA1.setInstanceId("A1ID"); instanceA1.setPublicDnsName("public"); instanceA1.setPrivateDnsName("private"); instanceA1.setPublicIpAddress("111.111.111.111"); instanceA1.setPrivateIpAddress("222.222.222.222"); instanceA1.setKeyName("KP"); instanceA1.setInstanceType("t1.micro"); instanceA2.setPlacement(new Placement()); instanceA2.getPlacement().setAvailabilityZone("Z1"); instanceA2.setInstanceId("A2ID"); instanceA2.setPublicDnsName("public"); instanceA2.setPrivateDnsName("private"); instanceA2.setPublicIpAddress("111.111.111.111"); instanceA2.setPrivateIpAddress("222.222.222.222"); instanceA2.setKeyName("KP"); instanceA2.setInstanceType("t1.micro"); instancesInA.add(instanceA1); instancesInA.add(instanceA2); instanceMap.put("A", instancesInA); ResourcesDefinition definition = generator.generate(instanceMap); assert definition.getRegions().size() == 1; assert definition.getRegions().get(0).getAvailibleZone().equals("Z1"); RegionType region = definition.getRegions().get(0); assert region.getInstances().size() == 2; InstanceType instance = region.getInstances().get(1); assert instance.getPublicDNSName().equals("public"); assert instance.getPrivatDNSName().equals("private"); assert instance.getPrivateIP().equals("222.222.222.222"); assert instance.getPublicIP().equals("111.111.111.111"); assert instance.getKeyPair().equals("KP"); }
From source file:de.fischer.thotti.ec2.ResourceDefinitionGeneratorUT.java
License:Apache License
@Test public void test1Region2AvailabilityZone1Server() { Comparator comparator;/* w w w . ja v a 2 s. com*/ comparator = new EC2Executor.InstaceAvailabilityComparator(); SortedSet<Instance> instancesInA = new TreeSet<Instance>(comparator); Instance instanceA1 = new Instance(); Instance instanceA2 = new Instance(); instanceA1.setPlacement(new Placement()); instanceA1.getPlacement().setAvailabilityZone("Z1"); instanceA1.setInstanceId("A1ID"); instanceA1.setPublicDnsName("public"); instanceA1.setPrivateDnsName("private"); instanceA1.setPublicIpAddress("111.111.111.111"); instanceA1.setPrivateIpAddress("222.222.222.222"); instanceA1.setKeyName("KP"); instanceA1.setInstanceType("t1.micro"); instanceA2.setPlacement(new Placement()); instanceA2.getPlacement().setAvailabilityZone("Z2"); instanceA2.setInstanceId("A2ID"); instanceA2.setPublicDnsName("public"); instanceA2.setPrivateDnsName("private"); instanceA2.setPublicIpAddress("111.111.111.111"); instanceA2.setPrivateIpAddress("222.222.222.222"); instanceA2.setKeyName("KP"); instanceA2.setInstanceType("t1.micro"); instancesInA.add(instanceA1); instancesInA.add(instanceA2); instanceMap.put("A", instancesInA); ResourcesDefinition definition = generator.generate(instanceMap); assert definition.getRegions().size() == 2; assert definition.getRegions().get(0).getAvailibleZone().equals("Z1"); assert definition.getRegions().get(0).getName().equals("A"); assert definition.getRegions().get(1).getAvailibleZone().equals("Z2"); assert definition.getRegions().get(1).getName().equals("A"); }