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

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

Introduction

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

Prototype

DescribeImagesRequest

Source Link

Usage

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()));

}