Example usage for com.amazonaws.services.ec2.model Placement Placement

List of usage examples for com.amazonaws.services.ec2.model Placement Placement

Introduction

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

Prototype

public Placement() 

Source Link

Document

Default constructor for Placement object.

Usage

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");
}