List of usage examples for com.amazonaws.services.ec2.model RunInstancesRequest isMonitoring
public Boolean isMonitoring()
Specifies whether detailed monitoring is enabled for the instance.
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; }