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

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

Introduction

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

Prototype


public void setBlockDeviceMappings(java.util.Collection<BlockDeviceMapping> blockDeviceMappings) 

Source Link

Document

The block device mapping entries.

Usage

From source file:eu.stratosphere.nephele.instance.ec2.EC2CloudManager.java

License:Apache License

/**
 * Requests (allocates) instances (VMs) from Amazon EC2.
 * //from  w w  w.j  a  v a  2s .  c o  m
 * @param awsAccessId
 *        the access ID into AWS
 * @param awsSecretKey
 *        the secret key used to generate signatures for authentication
 * @param instancesToBeRequested
 *        Map containing desired instances types and count
 * @param sshKeyPair
 *        Optional parameter to insert an EC2 SSH key/value pair
 * @return
 *         List containing the instance IDs of the allocated instances.
 */
private LinkedList<String> allocateCloudInstance(final Configuration conf, final InstanceType type,
        final int mincount, final int maxcount) {

    final String awsAccessId = conf.getString(AWS_ACCESS_ID_KEY, null);
    final String awsSecretKey = conf.getString(AWS_SECRET_KEY_KEY, null);

    final String imageID = conf.getString(AWS_AMI_KEY, null);
    LOG.info("Read Amazon Machine Image from job configuration: " + imageID);

    final String jobManagerIPAddress = GlobalConfiguration.getString("jobmanager.rpc.address", null);
    if (jobManagerIPAddress == null) {
        LOG.error("JobManager IP address is not set (jobmanager.rpc.address)");
        return null;
    }
    final String sshKeyPair = conf.getString("job.ec2.sshkeypair", null);

    final AmazonEC2Client ec2client = EC2ClientFactory.getEC2Client(awsAccessId, awsSecretKey);
    final LinkedList<String> instanceIDs = new LinkedList<String>();

    // Iterate over instance types..

    final RunInstancesRequest request = new RunInstancesRequest(imageID, mincount, maxcount);
    request.setInstanceType(type.getIdentifier());

    // Set availability zone if configured
    String av = null;
    if (this.availabilityZone != null) {
        av = this.availabilityZone;
    }
    final String jobAV = conf.getString("job.ec2.availabilityzone", null);
    if (jobAV != null) {
        LOG.info("Found " + jobAV + " as job-specific preference for availability zone");
        av = jobAV;
    }

    if (av != null) {
        request.setPlacement(new Placement(av));
    }

    // TODO: Make this configurable!
    final BlockDeviceMapping bdm = new BlockDeviceMapping();
    bdm.setVirtualName("ephemeral0");
    bdm.setDeviceName("/dev/sdb1");

    if (sshKeyPair != null) {
        request.setKeyName(sshKeyPair);
    }

    final LinkedList<BlockDeviceMapping> bdmlist = new LinkedList<BlockDeviceMapping>();
    bdmlist.add(bdm);
    request.setBlockDeviceMappings(bdmlist);

    // Setting User-Data parameters
    request.setUserData(EC2Utilities.createTaskManagerUserData(jobManagerIPAddress));

    // Request instances!
    try {
        final RunInstancesResult result = ec2client.runInstances(request);

        for (Instance i : result.getReservation().getInstances()) {
            instanceIDs.add(i.getInstanceId());
        }
    } catch (AmazonClientException e) {
        // Only log the error here
        LOG.error(StringUtils.stringifyException(e));
    }

    return instanceIDs;
}

From source file:hudson.plugins.ec2.SlaveTemplate.java

License:Open Source License

private void setupCustomDeviceMapping(RunInstancesRequest riRequest) {
    if (StringUtils.isNotBlank(customDeviceMapping)) {
        riRequest.setBlockDeviceMappings(DeviceMappingParser.parse(customDeviceMapping));
    }/*from w  w w.  j a v a 2 s  .  co  m*/
}