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

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

Introduction

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

Prototype


public Boolean isMonitoring() 

Source Link

Document

Specifies whether detailed monitoring is enabled for the instance.

Usage

From source file:org.gridgain.grid.spi.cloud.ec2lite.GridEc2LiteCloudSpi.java

License:GNU General Public License

/**
 * Runs Amazon EC2 instances by command.
 * <p>//from   w w w  . j  a  va2 s  . c  o m
 * Command may be very complex and contain plenty of parameters.
 * Refer to class documentation for details.
 *
 * @param cmd Cloud command.
 * @throws GridSpiException Thrown if any exception occurs.
 */
private void runInstances(GridCloudCommand cmd) throws GridSpiException {
    assert cmd != null;

    RunInstancesRequest req = createRunInstancesRequest(cmd);

    Map<String, String> params = cmd.parameters();

    if (params != null && Boolean.parseBoolean(params.get(CMD_DRY_RUN_KEY))) {
        if (log.isDebugEnabled())
            log.debug("Dry run - instances run omitted.");

        return;
    }

    RunInstancesResult res;

    try {
        res = ec2.runInstances(req);
    } catch (AmazonClientException e) {
        throw new GridSpiException("Failed to perform run instances request.", e);
    }

    if (log.isDebugEnabled())
        log.debug("Sent run instances request [imgId=" + req.getImageId() + ", minCount=" + req.getMinCount()
                + ", maxCount=" + req.getMaxCount() + ']');

    Collection<String> instIds = new LinkedList<String>();

    boolean throwEx = false;

    for (Instance item : res.getReservation().getInstances()) {
        String instId = item.getInstanceId();
        String imgId = item.getImageId();

        instIds.add(instId);

        if (log.isDebugEnabled())
            log.debug("Added (ran) new instance [instId=" + instId + ", imgId=" + imgId + ']');

        if (!req.getImageId().equals(imgId))
            throwEx = true;
    }

    if (!instIds.isEmpty()) {
        if (req.isMonitoring()) {
            try {
                ec2.monitorInstances(new MonitorInstancesRequest().withInstanceIds(instIds));
            } catch (AmazonClientException e) {
                U.error(log, "Failed to start instance monitoring.", e);
            }

            if (log.isDebugEnabled())
                log.debug("Started instances monitoring: " + instIds);
        }
    }

    if (throwEx || instIds.size() != cmd.number())
        throw new GridSpiException("Cloud command has not been successfully executed: " + cmd);
}

From source file:org.gridgain.grid.spi.cloud.ec2lite.GridEc2LiteCloudSpi.java

License:GNU General Public License

/**
 * Creates Amazon EC2 run instances request by provided command.
 *
 * @param cmd Cloud command./*from   w  w w  .  j a v  a  2  s  .  c o  m*/
 * @return EC2 run instances request.
 * @throws GridSpiException If any exception occurs.
 */
private RunInstancesRequest createRunInstancesRequest(GridCloudCommand cmd) throws GridSpiException {
    assert cmd != null;

    Collection<GridCloudResource> rsrcs = cmd.resources();
    int num = cmd.number();

    assert rsrcs != null && !rsrcs.isEmpty();
    assert num > 0;

    GridCloudResource img = null;
    Collection<String> grps = new ArrayList<String>();

    // Separate image and security groups
    for (GridCloudResource rsrc : rsrcs)
        if (rsrc.type() == CLD_IMAGE)
            img = rsrc;
        else if (rsrc.type() == CLD_SECURITY_GROUP)
            grps.add(rsrc.id());

    assert img != null;

    Map<String, String> imgParams = img.parameters();
    Map<String, String> cmdParams = cmd.parameters();

    if (imgParams == null)
        throw new GridSpiException(
                "Unable to process command (image parameters are null) [cmd=" + cmd + ", image=" + img + ']');

    RunInstancesRequest req = new RunInstancesRequest();

    req.setImageId(img.id());
    req.setMinCount(num);
    req.setMaxCount(num);

    if (!grps.isEmpty())
        req.setSecurityGroups(grps);

    String val;

    if (!F.isEmpty(val = imgParams.get(IMG_KERNEL_ID)))
        req.setKernelId(val);

    if (!F.isEmpty(val = imgParams.get(IMG_RAMDISK_ID)))
        req.setRamdiskId(val);

    Collection<String> userDataList = new LinkedList<String>();

    if (cmdParams != null) {
        if (!F.isEmpty(val = cmdParams.get(INST_TYPE)))
            req.setInstanceType(val);

        if (!F.isEmpty(val = cmdParams.get(INST_PLACEMENT)))
            req.setPlacement(new Placement(val));

        if (!F.isEmpty(val = cmdParams.get(INST_KEY_PAIR_NAME)))
            req.setKeyName(val);

        if (!F.isEmpty(val = cmdParams.get(INST_MON)))
            req.setMonitoring(Boolean.parseBoolean(val));

        if (!F.isEmpty(val = cmdParams.get(INST_PASS_EC2_KEYS)) && Boolean.parseBoolean(val)) {
            userDataList.add(GRIDGAIN_ACCESS_KEY_ID_KEY + '=' + accessKeyId);
            userDataList.add(GRIDGAIN_SECRET_KEY_KEY + '=' + secretAccessKey);
        }

        if (!F.isEmpty(val = cmdParams.get(INST_MAIN_S3_BUCKET)))
            userDataList.add(GRIDGAIN_MAIN_S3_BUCKET_KEY + '=' + val);

        if (!F.isEmpty(val = cmdParams.get(INST_USER_S3_BUCKET)))
            userDataList.add(GRIDGAIN_EXT_S3_BUCKET_KEY + '=' + val);

        if (!F.isEmpty(val = cmdParams.get(INST_JVM_OPTS)))
            userDataList.add(val);
    }

    if (req.isMonitoring() == null)
        // Monitoring was not set from params, set default value
        req.setMonitoring(enableMon);

    if (!userDataList.isEmpty())
        req.setUserData(new String(Base64.encodeBase64(F.concat(userDataList, USER_DATA_DELIM).getBytes())));

    return req;
}