List of usage examples for com.amazonaws.services.ec2.model DescribeImagesRequest DescribeImagesRequest
DescribeImagesRequest
From source file:at.ac.tuwien.infosys.jcloudscale.vm.ec2.EC2Wrapper.java
License:Apache License
String lookupImageId(String imgName) { DescribeImagesRequest req = new DescribeImagesRequest(); if (imgName == null || imgName.length() == 0) return null; req.setRequestCredentials(creds);//from www .j av a2s .c om DescribeImagesResult result = ec2Client.describeImages(); for (Image image : result.getImages()) { if (image.getName() != null && image.getName().equals(imgName)) return image.getImageId(); } return null; }
From source file:Aws.Images.java
public void DescribeImages(AmazonEC2Client ec2) { Filter filtro = new Filter().withName("state").withValues("available"); DescribeImagesRequest ImageReq = new DescribeImagesRequest().withOwners("self").withFilters(filtro); DescribeImagesResult describeImagesRequest = ec2.describeImages(ImageReq); List<Image> Images = describeImagesRequest.getImages(); for (Object Image : Images.toArray()) { System.out.println(Image); }//from w w w.j ava 2 s . co m }
From source file:com.axemblr.yab.YaB.java
License:Apache License
/** * @return a list of (probably) backed images *//*from w w w .jav a 2 s . c o m*/ public List<Image> describeBackedImages() { DescribeImagesRequest request = new DescribeImagesRequest().withOwners("self"); DescribeImagesResult result = client.describeImages(request); return result.getImages(); }
From source file:com.boxupp.dao.AwsProjectDAOManager.java
License:Apache License
public StatusBean validateMachineAmi(JsonNode machineInfo) { StatusBean statusBean = new StatusBean(); String projectID = machineInfo.get("projectID").asText(); String machineAMI = machineInfo.get("machineAMI").asText(); String machineRegion = machineInfo.get("machineRegion").asText(); AwsProjectCredentialsBean awsCredentials = retireveAwsProjectCredentials(projectID); BasicAWSCredentials cred = new BasicAWSCredentials(awsCredentials.getAwsAccessKeyId(), awsCredentials.getAwsSecretAccessKey()); AmazonEC2Client ec2Client = new AmazonEC2Client(cred); try {/*from w ww .java 2 s. c om*/ DescribeImagesRequest imageRequest = new DescribeImagesRequest(); Collection<String> imageID = new ArrayList<String>(); imageID.add(machineAMI); imageRequest.withImageIds(imageID); ec2Client.setRegion(com.amazonaws.regions.Region.getRegion(Regions.fromName(machineRegion))); DescribeImagesResult imagesResult = ec2Client.describeImages(imageRequest); statusBean.setData(null); statusBean.setStatusCode(0); statusBean.setStatusMessage("AMI Id Validated"); } catch (Exception exception) { statusBean.setData(null); statusBean.setStatusCode(1); statusBean .setStatusMessage("Ami Id " + machineAMI + " doesnot exists in " + machineRegion + " region "); } return statusBean; }
From source file:com.carrotgarden.maven.aws.ecc.CarrotElasticCompute.java
License:BSD License
/** * @return valid image or null if missing *///from ww w. j a va 2 s.c om public Image findImage(final String imageId) throws Exception { /** * work around for image entry not being immediately available right * after create/register operation */ for (int index = 0; index < attemptCount; index++) { try { final DescribeImagesRequest request = new DescribeImagesRequest(); request.setImageIds(wrapList(imageId)); final DescribeImagesResult result = amazonClient.describeImages(request); final List<Image> imageList = result.getImages(); switch (imageList.size()) { case 0: logger.info("image find : missing imageId=" + imageId); break; case 1: logger.info("image find : success imageId=" + imageId); return imageList.get(0); default: logger.info("image find : duplicate imageId=" + imageId); break; } } catch (final Exception e) { logger.info("image find : exception imageId={} / {}", // imageId, e.getMessage()); } logger.info("image find : attempt=" + index); sleep(); } logger.error("image find : failure imageId=" + imageId); return null; }
From source file:com.carrotgarden.maven.aws.ecc.CarrotElasticCompute.java
License:BSD License
/** List AMI images matching a given filter and regex. */ public List<Image> imageList(// final String imageFilter, // final String imageRegex, // final String entrySplit, // final String keySplit, // final String valueSplit // ) throws Exception { final String[] entryArray = imageFilter.split(entrySplit); final List<Filter> filterList = new ArrayList<Filter>(); for (final String entry : entryArray) { final String[] termArray = entry.split(keySplit); final String key = termArray[0]; final String valuesText = termArray[1]; final String[] valueArray = valuesText.split(valueSplit); final Filter filter = new Filter(key, Arrays.asList(valueArray)); filterList.add(filter);// w ww . j ava2 s . co m } final DescribeImagesRequest request = new DescribeImagesRequest(); request.setFilters(filterList); final DescribeImagesResult result = amazonClient.describeImages(request); final List<Image> resultImages = result.getImages(); final List<Image> imageList = new ArrayList<Image>(); final Pattern pattern = Pattern.compile(imageRegex); for (final Image image : resultImages) { final String search = image.toString(); if (pattern.matcher(search).matches()) { imageList.add(image); } } return imageList; }
From source file:com.carrotgarden.maven.aws.ecc.CarrotElasticCompute.java
License:BSD License
private Image waitForImageCreate(final String imageId) throws Exception { if (findImage(imageId) == null) { throw new IllegalStateException("image create: missing imageId=" + imageId); }//from w w w . j a va 2 s.co m final long timeStart = System.currentTimeMillis(); final List<String> imageIdList = new ArrayList<String>(); imageIdList.add(imageId); final DescribeImagesRequest request = new DescribeImagesRequest(); request.setImageIds(imageIdList); while (true) { final DescribeImagesResult result = amazonClient.describeImages(request); final List<Image> imageList = result.getImages(); final Image image; if (isTimeoutPending(timeStart)) { image = newImageWithStatus(ImageState.UNKNOWN.value, "timeout", "image create: timeout while waiting"); } else if (imageList == null || imageList.isEmpty()) { image = newImageWithStatus(ImageState.UNKNOWN.value, "missing", "image create: missing in descriptions"); } else { image = imageList.get(0); } final String value = image.getState(); final ImageState state = ImageState.fromValue(value); switch (state) { case AVAILABLE: logger.info("image create: success"); return image; case PENDING: final long timeThis = System.currentTimeMillis(); final long timeDiff = timeThis - timeStart; logger.info("image create: in progress; time=" + timeDiff / 1000); sleep(); break; default: logger.error("image create: failure"); return image; } } }
From source file:com.cloudera.director.aws.ec2.EC2InstanceTemplateConfigurationValidator.java
License:Apache License
/** * Validates the configured AMI.// w w w. jav a 2 s. co m * * @param client the EC2 client * @param configuration the configuration to be validated * @param accumulator the exception condition accumulator * @param localizationContext the localization context */ @VisibleForTesting @SuppressWarnings("PMD.CollapsibleIfStatements") void checkImage(AmazonEC2Client client, Configured configuration, PluginExceptionConditionAccumulator accumulator, LocalizationContext localizationContext) { String imageName = configuration.getConfigurationValue(IMAGE, localizationContext); String type = configuration.getConfigurationValue(TYPE, localizationContext); int conditionCount = accumulator.getConditionsByKey().size(); if (!imageName.startsWith("ami-")) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_NAME_MSG, imageName); return; } LOG.info(">> Describing AMI '{}'", imageName); DescribeImagesResult result = null; try { result = client.describeImages(new DescribeImagesRequest().withImageIds(imageName)); checkCount(accumulator, IMAGE, localizationContext, imageName, result.getImages()); } catch (AmazonServiceException e) { if (e.getErrorCode().startsWith(INVALID_AMI_ID)) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_MSG, imageName); } else { throw Throwables.propagate(e); } } if ((result == null) || (accumulator.getConditionsByKey().size() > conditionCount)) { return; } Image image = Iterables.getOnlyElement(result.getImages()); if (!SIXTY_FOUR_BIT_ARCHITECTURE.equals(image.getArchitecture())) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_ARCHITECTURE_MSG, imageName, image.getArchitecture()); } AWSFilters imageFilters = templateFilters.getSubfilters(IMAGE.unwrap().getConfigKey()); boolean useSpotInstances = Boolean .parseBoolean(configuration.getConfigurationValue(USE_SPOT_INSTANCES, localizationContext)); String ownerId = image.getOwnerId(); if (ownerId != null) { String blacklistValue = imageFilters.getBlacklistValue(IMAGE_OWNER_ID_BLACKLIST_KEY, ownerId.toLowerCase()); if (blacklistValue != null) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_OWNER_MSG, imageName, ownerId, blacklistValue); } else { if (useSpotInstances) { blacklistValue = imageFilters.getBlacklistValue(IMAGE_SPOT_OWNER_ID_BLACKLIST_KEY, ownerId.toLowerCase()); if (blacklistValue != null) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_OWNER_SPOT_MSG, imageName, ownerId, blacklistValue); } } } } String platform = image.getPlatform(); if (platform != null) { String blacklistValue = imageFilters.getBlacklistValue(IMAGE_PLATFORM_BLACKLIST_KEY, platform.toLowerCase()); if (blacklistValue != null) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_PLATFORM_MSG, imageName, platform, blacklistValue); } else { if (useSpotInstances) { blacklistValue = imageFilters.getBlacklistValue(IMAGE_SPOT_PLATFORM_BLACKLIST_KEY, platform.toLowerCase()); if (blacklistValue != null) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_PLATFORM_SPOT_MSG, imageName, platform, blacklistValue); } } } } if (!AVAILABLE_STATE.equals(image.getState())) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_STATE_MSG, imageName, image.getState()); } if (!provider.getVirtualizationMappings().apply(image.getVirtualizationType()).contains(type)) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_INSTANCE_TYPE_COMPATIBILITY_MSG, type, image.getVirtualizationType(), imageName); } if (!ROOT_DEVICE_TYPE.equals(image.getRootDeviceType())) { addError(accumulator, IMAGE, localizationContext, null, INVALID_AMI_ROOT_DEVICE_TYPE_MSG, imageName, image.getRootDeviceType()); } }
From source file:com.cloudera.director.aws.ec2.EC2Provider.java
License:Apache License
/** * Creates block device mappings based on the specified instance template. * * @param template the instance template * @return the block device mappings//from www .ja v a2s . c om */ private List<BlockDeviceMapping> getBlockDeviceMappings(EC2InstanceTemplate template) { // Query the AMI about the root device name & mapping information DescribeImagesResult result = client .describeImages(new DescribeImagesRequest().withImageIds(template.getImage())); if (result.getImages().isEmpty()) { throw new IllegalArgumentException("The description for image " + template.getImage() + " is empty"); } Image templateImage = result.getImages().get(0); String rootDeviceType = templateImage.getRootDeviceType(); if (!DEVICE_TYPE_EBS.equals(rootDeviceType)) { throw new IllegalArgumentException("The root device for image " + template.getImage() + " must be \"" + DEVICE_TYPE_EBS + "\", found: " + rootDeviceType); } List<BlockDeviceMapping> originalMappings = templateImage.getBlockDeviceMappings(); LOG.info(">> Original image block device mappings: {}", originalMappings); if (originalMappings.isEmpty()) { throw new IllegalArgumentException( "The image " + template.getImage() + " has no block device mappings"); } BlockDeviceMapping rootDevice = selectRootDevice(originalMappings, templateImage.getRootDeviceName()); if (rootDevice == null) { throw new IllegalArgumentException("Could not determine root device for image " + template.getImage() + " based on root device name " + templateImage.getRootDeviceName()); } // The encrypted property was added to the block device mapping in version 1.8 of the SDK. // It is a Boolean, but defaults to false instead of being unset, so we set it to null here. rootDevice.getEbs().setEncrypted(null); rootDevice.getEbs().setVolumeSize(template.getRootVolumeSizeGB()); rootDevice.getEbs().setVolumeType(template.getRootVolumeType()); rootDevice.getEbs().setDeleteOnTermination(true); List<BlockDeviceMapping> deviceMappings = Lists.newArrayList(rootDevice); int ebsVolumeCount = template.getEbsVolumeCount(); EBSAllocationStrategy ebsAllocationStrategy = EBSAllocationStrategy.get(template); switch (ebsAllocationStrategy) { case NO_EBS_VOLUMES: // The volumes within an instance should be homogeneous. So we only add // instance store volumes when additional EBS volumes aren't mounted. deviceMappings.addAll(ephemeralDeviceMappings.apply(template.getType())); break; case AS_INSTANCE_REQUEST: LOG.info("EBS volumes will be allocated as part of instance launch request"); List<BlockDeviceMapping> ebsDeviceMappings = getEbsBlockDeviceMapping(ebsVolumeCount, template.getEbsVolumeType(), template.getEbsVolumeSizeGiB(), template.isEnableEbsEncryption()); deviceMappings.addAll(ebsDeviceMappings); break; case AS_SEPARATE_REQUESTS: LOG.info("EBS volumes will be separately allocated after instance launch request"); break; default: throw new IllegalStateException("Invalid EBS allocation strategy " + ebsAllocationStrategy); } LOG.info(">> Block device mappings: {}", deviceMappings); return deviceMappings; }
From source file:com.dowdandassociates.gentoo.bootstrap.DefaultBootstrapImageProvider.java
License:Apache License
@Override protected DescribeImagesRequest getRequest() { StringBuilder manifestLocation = new StringBuilder(); manifestLocation.append("*/amzn-ami-"); if ("hvm".equals(imageInfo.getVirtualizationType())) { manifestLocation.append("hvm"); } else {//from w w w. java 2 s .c o m manifestLocation.append("pv"); } // manifestLocation.append("-????.??.?.*"); manifestLocation.append("-2014.03.?.*"); if ("ebs".equals(imageInfo.getRootDeviceType())) { manifestLocation.append("-ebs"); } else if ("instance-store".equals(imageInfo.getRootDeviceType())) { manifestLocation.append("-s3"); } return new DescribeImagesRequest().withOwners("amazon").withFilters( new Filter().withName("image-type").withValues("machine"), new Filter().withName("virtualization-type").withValues(imageInfo.getVirtualizationType()), new Filter().withName("architecture").withValues(imageInfo.getArchitecture()), new Filter().withName("root-device-type").withValues(imageInfo.getRootDeviceType()), new Filter().withName("manifest-location").withValues(manifestLocation.toString())); }