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:de.unibi.cebitec.bibigrid.meta.aws.ValidateIntentAWS.java

private boolean checkImages() {
    log.info("Checking Images...");
    boolean allCheck = true;
    /*//  w w w  . jav a2s.  com
     * Checking for Images in Config File
     */
    try {
        DescribeImagesRequest imageRequest = new DescribeImagesRequest()
                .withImageIds(Arrays.asList(conf.getMasterImage(), conf.getSlaveImage()));
        DescribeImagesResult imageResult = ec2.describeImages(imageRequest);
        boolean slave = false, master = false;
        boolean masterClusterType = conf.getMasterInstanceType().getSpec().clusterInstance;
        boolean slaveClusterType = conf.getSlaveInstanceType().getSpec().clusterInstance;
        /*
         * Checking if both are hvm or paravirtual types
         */
        if (masterClusterType != slaveClusterType) {
            log.error("If cluster instances are used please create a homogeneous group.");
            allCheck = false;
        } else if (masterClusterType) {
            /*
             * If master instance is a cluster instance check if the types are the same
             */
            if (conf.getMasterInstanceType() != conf.getSlaveInstanceType()) {
                log.error("If cluster instances are used please create a homogeneous group.");
                allCheck = false;
            }
        }
        for (Image image : imageResult.getImages()) {
            /*
             * Checking if Master Image is available.
             */
            if (image.getImageId().equals(conf.getMasterImage())) {
                master = true;
                if (image.getVirtualizationType().equals("hvm")) { // Image detected is of HVM Type
                    if (conf.getMasterInstanceType().getSpec().hvm) {
                        log.info(I, "Master instance can use HVM images."); // Instance and Image is HVM type
                    } else if (conf.getMasterInstanceType().getSpec().pvm) {
                        log.error("Master Instance type does not support hardware-assisted virtualization."); // HVM Image but instance type is not correct 
                        allCheck = false;
                    }
                } else {
                    if (conf.getMasterInstanceType().getSpec().pvm) {
                        log.info(I, "Master instance can use paravirtual images."); // Instance and Image fits.
                    } else if (conf.getMasterInstanceType().getSpec().hvm) {
                        log.error("Master Instance type does not support paravirtual images."); // Paravirtual Image but cluster instance type
                        allCheck = false;
                    }
                }

            }
            /*
             * Checking if Slave Image is available.
             */
            if (image.getImageId().equals(conf.getSlaveImage())) {
                slave = true;
                if (image.getVirtualizationType().equals("hvm")) { // Image detected is of HVM Type
                    if (conf.getSlaveInstanceType().getSpec().hvm) {
                        log.info(I, "Slave instance can use HVM images."); // Instance and Image is HVM type
                    } else if (conf.getSlaveInstanceType().getSpec().pvm) {
                        log.error("Slave Instance type does not support hardware-assisted virtualization."); // HVM Image but instance type is not correct 
                        allCheck = false;
                    }
                } else {
                    if (conf.getSlaveInstanceType().getSpec().pvm) {
                        log.info(I, "Slave instance can use paravirtual images."); // Instance and Image fits.
                    } else if (conf.getSlaveInstanceType().getSpec().hvm) {
                        log.error("Slave Instance type does not support paravirtual images."); // Paravirtual Image but cluster instance type
                        allCheck = false;
                    }
                }
            }
        }
        if (slave && master) {
            log.info(I, "Master and Slave AMIs have been found.");
        } else {
            log.error("Master and Slave AMIs could not be found.");
            allCheck = false;
        }
        return allCheck;
    } catch (AmazonServiceException e) {
        log.error("Master and Slave AMIs could not be found. Check if the ID is malformed (ami-XXXXXXXX).");
        allCheck = false;
        return allCheck;
    }

}

From source file:eu.optimis.interopt.provider.aws.AmazonClient.java

License:Apache License

public String describeImage(String imageId) {

    AmazonEC2 ec2 = getAmazonEC2Client();
    DescribeImagesRequest req = new DescribeImagesRequest();
    List<Filter> filters = new ArrayList<Filter>();
    List<String> imgs = new ArrayList<String>();
    imgs.add(imageId);/*from   w  w  w  . j ava2s.  c  o  m*/
    filters.add(new Filter("image-id", imgs));
    req.setFilters(filters);

    DescribeImagesResult res = ec2.describeImages(req);
    return res.getImages().get(0).getName() + "----" + res.getImages().get(0).getDescription();
}

From source file:eu.optimis.monitoring.amazoncollector.MeasurementsHelper.java

License:Apache License

private Measurement getOSRelease(String ami_id, String instance_id, String service_id) {
    AmazonEC2 ec2 = getAmazonEC2Client();
    DescribeImagesRequest req = new DescribeImagesRequest();
    List<String> ids = new LinkedList<String>();
    ids.add(ami_id);/* w ww  . ja  v  a  2  s.co  m*/
    req.setImageIds(ids);
    DescribeImagesResult res = ec2.describeImages(req);
    String platform = res.getImages().get(0).getPlatform();
    if (platform == null || platform.isEmpty()) {
        platform = "linux";
    }
    return new Measurement("os_release", platform, "", new Date(), instance_id, service_id);
}

From source file:fr.xebia.demo.amazon.aws.AmazonAwsShutdowner.java

License:Apache License

public void test() {
    String ownerId = "self";

    boolean dryRun = true;

    // RETRIEVE TAGS
    Map<String, Map<String, String>> tagsByResourceId = new MapMaker()
            .makeComputingMap(new Function<String, Map<String, String>>() {
                @Override/*from  w  w  w  .jav  a2  s  .  c o m*/
                public Map<String, String> apply(String input) {
                    return Maps.newHashMap();
                }
            });

    for (TagDescription tagDescription : ec2.describeTags().getTags()) {
        tagsByResourceId.get(tagDescription.getResourceId()).put(tagDescription.getKey(),
                tagDescription.getValue());
    }

    // RDS INSTANCEs
    for (DBInstance dbInstance : rds.describeDBInstances().getDBInstances()) {
        Map<String, String> instanceTags = tagsByResourceId.get(dbInstance.getDBInstanceIdentifier());
        logger.debug("Tags for " + dbInstance + ": " + instanceTags);

    }

    // EC2 INSTANCES
    List<Instance> instancesAlreadyNotStarted = Lists.newArrayList();
    List<Instance> instancesToStop = Lists.newArrayList();
    List<Instance> instancesToTerminate = Lists.newArrayList();
    List<Instance> instancesToKeepUnchanged = Lists.newArrayList();
    for (Reservation reservation : ec2.describeInstances().getReservations()) {
        for (Instance instance : reservation.getInstances()) {
            Map<String, String> instanceTags = tagsByResourceId.get(instance.getInstanceId());
            logger.debug("Tags for {}: {}", instance, instanceTags);
            if ("terminated".equals(instance.getState().getName())) {
                instancesToKeepUnchanged.add(instance);
            } else if (instanceTags.containsKey(TAG_DO_NOT_STOP)) {
                instancesToKeepUnchanged.add(instance);
            } else if (instanceTags.containsKey(TAG_DO_NOT_TERMINATE)) {
                if ("started".equals(instance.getState().getName())) {
                    instancesToStop.add(instance);
                } else {
                    instancesAlreadyNotStarted.add(instance);
                }
            } else {
                instancesToTerminate.add(instance);
            }
        }
    }
    System.out.println("EC2 INSTANCES");
    if (dryRun) {
        System.out.println("DRY RUN Terminate:" + instancesToTerminate);
        System.out.println("DRY RUN Stop:" + instancesToStop);
        System.out.println("DRY RUN No need to stop:" + instancesAlreadyNotStarted);
        System.out.println("DRY RUN Keep unchanged:" + instancesToKeepUnchanged);
    } else {
        System.out.println("Terminate:" + instancesToTerminate);
        if (!instancesToTerminate.isEmpty()) {
            ec2.terminateInstances(new TerminateInstancesRequest(
                    Lists.transform(instancesToTerminate, TO_INSTANCE_ID_FUNCTION)));
        }
        System.out.println("Stop:" + instancesToStop);
        if (!instancesToStop.isEmpty()) {
            ec2.stopInstances(
                    new StopInstancesRequest(Lists.transform(instancesToStop, TO_INSTANCE_ID_FUNCTION)));
        }
        System.out.println("No need to stop:" + instancesAlreadyNotStarted);
        System.out.println("Keep unchanged:" + instancesToKeepUnchanged);
    }

    // AMIs
    System.out.println("AMIs");
    List<Image> imagesToDeRegister = Lists.newArrayList();
    List<Image> imagesToKeep = Lists.newArrayList();
    for (Image image : ec2.describeImages(new DescribeImagesRequest().withOwners(ownerId)).getImages()) {
        Map<String, String> imageTags = tagsByResourceId.get(image.getImageId());
        logger.debug("Tags for {}: {}", image, imageTags);
        if (imageTags.containsKey(TAG_DO_NOT_DEREGISTER)) {
            imagesToKeep.add(image);
        } else {
            imagesToDeRegister.add(image);
        }
    }
    if (dryRun) {
        System.out.println("DRY RUN Deregister:" + imagesToDeRegister);
        System.out.println("DRY RUN Keep:" + imagesToKeep);

    } else {
        System.out.println("Deregister:" + imagesToDeRegister);
        for (Image image : imagesToDeRegister) {
            ec2.deregisterImage(new DeregisterImageRequest(image.getImageId()));
        }
        System.out.println("Keep:" + imagesToKeep);
    }

    List<String> imageIdsToKeep = Lists.transform(imagesToKeep, TO_IMAGE_ID_FUNCTION);

    // SNAPSHOTS
    System.out.println("SNAPSHOTs");
    for (Snapshot snapshot : ec2.describeSnapshots(new DescribeSnapshotsRequest().withOwnerIds(ownerId))
            .getSnapshots()) {

        if (snapshot.getDescription().contains("Created by CreateImage")) {
            boolean associatedWithAnImageToKeep = false;
            for (String imageIdToKeep : imageIdsToKeep) {
                if (snapshot.getDescription().contains(imageIdToKeep)) {
                    associatedWithAnImageToKeep = true;
                    break;
                }
            }
            if (associatedWithAnImageToKeep) {
                System.out.println("Keep: " + snapshot);
            } else {
                if (dryRun) {
                    System.out.println("DRY RUN delete: " + snapshot);
                } else {
                    System.out.println("Delete: " + snapshot);
                    ec2.deleteSnapshot(new DeleteSnapshotRequest(snapshot.getSnapshotId()));
                }
            }
        }
    }
    // ELASTIC LOAD BALANCERs
    // no tags on elb
}

From source file:integratedtoolkit.connectors.amazon.EC2.java

License:Apache License

private String classifyMachine(int CPU, float memory, float disk, String diskImage) {
    DescribeImagesRequest dirq = new DescribeImagesRequest();
    LinkedList<String> amiIds = new LinkedList<String>();
    amiIds.add(diskImage);/*  ww w .  ja  v  a 2s.c om*/
    dirq.setImageIds(amiIds);
    DescribeImagesResult dirt = client.describeImages(dirq);
    String imageArchitecture = "";
    for (Image image : dirt.getImages()) {
        imageArchitecture = image.getArchitecture();
    }
    if (imageArchitecture.compareTo("i386") == 0) {
        if (CPU <= smallCPUCount && memory <= smallMemory && disk <= smallDisk) {
            return smallCode;
        }
        return null;
    }

    if (CPU <= largeCPUCount && memory <= largeMemory && disk <= largeDisk) {
        return largeCode;
    }
    return xlargeCode;
}

From source file:io.macgyver.plugin.cloud.aws.scanner.AMIScanner.java

License:Apache License

@Override
public void scan(Region region) {
    AmazonEC2Client c = getAWSServiceClient().createEC2Client(region);

    NeoRxClient neoRx = getNeoRxClient();
    Preconditions.checkNotNull(neoRx);/*  ww w .  j a  va2  s .c om*/
    GraphNodeGarbageCollector gc = newGarbageCollector().label("AwsAmi").region(region);
    DescribeImagesRequest req = new DescribeImagesRequest().withOwners("self");
    DescribeImagesResult result = c.describeImages(req);

    result.getImages().forEach(i -> {
        try {
            ObjectNode n = convertAwsObject(i, region);

            String cypher = "merge (x:AwsAmi {aws_arn:{aws_arn}}) set x+={props} set x.updateTs=timestamp()";
            neoRx.execCypher(cypher, "aws_arn", n.path("aws_arn").asText(), "props", n)
                    .forEach(gc.MERGE_ACTION);

        } catch (RuntimeException e) {
            logger.warn("problem scanning AMI", e);
        }
    });
    gc.invoke();
}

From source file:jp.aws.test.ec2.EC2Instance.java

License:Apache License

/**
 * AMI?//from  w  ww.  ja va  2 s.  c o m
 *
 * @param HashMap
 *            <String,String> filterMap : ID: ownerid => self, amazon,
 *            redhat, 00000000  root-device-type => ebs, instance-store
 *            architecture => i386, x86_64 name => amzn-ami*
 * @return
 * @throws Exception
 * @note - ????????
 */
public List<AMIItem> ami_list(HashMap<String, String> filterMap) {

    List<AMIItem> amiItemList = new ArrayList<AMIItem>();

    // 
    this.clientManager.changeRegion();

    // AMI??
    DescribeImagesRequest describeImagesRequest = new DescribeImagesRequest();
    List<String> ownersList = new ArrayList<String>();

    // OwnerID?(self, amazon, redhat, 00000000)
    ownersList.add(filterMap.get("ownerid"));
    describeImagesRequest.setOwners(ownersList);

    // AMI????????Filter?
    ArrayList<Filter> filters = new ArrayList<Filter>();

    Filter filter = new Filter();
    filter.setName("image-type");

    // machine
    List<String> valueList = new ArrayList<String>();
    valueList.add("machine");
    filter.setValues(valueList);

    // Filter
    filters.add(filter);

    // 
    for (Iterator<String> it = filterMap.keySet().iterator(); it.hasNext();) {
        String key = it.next();
        Log.d("ami_list", String.format("key:%s, value:%s", key, filterMap.get(key)));
        if (key.toLowerCase().equals("ownerid"))
            continue;
        filters.add(new Filter().withName(key).withValues(filterMap.get(key)));
    }

    // Filter
    describeImagesRequest.setFilters(filters);

    // ????AMI??
    DescribeImagesResult describeImagesResult = this.clientManager.ec2().describeImages(describeImagesRequest);

    // AMI?List?(Image?com.amazonaws.services.ec2.model?Image???)
    List<Image> amiList = describeImagesResult.getImages();

    // ?AMI??
    for (Image image : amiList) {
        // http://docs.amazonwebservices.com/AWSAndroidSDK/latest/javadoc/com/amazonaws/services/ec2/model/Image.html
        AMIItem amiItem = new AMIItem();

        StringBuilder builder = new StringBuilder();

        amiItem.imageId = image.getImageId();
        amiItem.imageType = image.getImageType();
        amiItem.imageLocation = image.getImageLocation();
        amiItem.name = image.getName();
        amiItem.architecture = image.getArchitecture();
        amiItem.platform = image.getPlatform();
        amiItem.state = image.getState();
        amiItem.ownerId = image.getOwnerId();
        amiItem.rootDeviceType = image.getRootDeviceType();
        amiItem.rootDeviceName = image.getRootDeviceName();
        amiItem.description = image.getDescription();
        builder.setLength(0); // ?
        List<Tag> tags = image.getTags(); // tag
        for (Tag tag : tags) {
            builder.append(tag.getValue());
            builder.append(", ");
        }

        // ?
        amiItemList.add(amiItem);
    }

    return amiItemList;
}

From source file:jp.primecloud.auto.aws.typica.EucaEc2Client.java

License:Open Source License

@Override
public DescribeImagesResult describeImages() {
    return describeImages(new DescribeImagesRequest());
}

From source file:jp.primecloud.auto.process.aws.AwsCommonProcess.java

License:Open Source License

public Image describeImage(AwsProcessClient awsProcessClient, String imageId) {
    DescribeImagesRequest request = new DescribeImagesRequest();
    request.withImageIds(imageId);//from   w  w  w .  j  ava2 s  .c o m
    DescribeImagesResult result = awsProcessClient.getEc2Client().describeImages(request);
    List<Image> images = result.getImages();

    if (images.isEmpty()) {
        return null;
    }

    return images.get(0);
}

From source file:net.firejack.aws.web.controller.AWSController.java

License:Apache License

@ResponseBody
@ExceptionHandler(Exception.class)
@RequestMapping(value = "region/{region}", method = RequestMethod.GET)
public InstanceDetails changeRegion(@PathVariable("region") String region) {
    if (amazonEC2 == null)
        throw new AmazonServiceException("Amazon service can't initialize");
    if (region.isEmpty())
        throw new AmazonServiceException("Region is empty");

    amazonEC2.setRegion(RegionUtils.getRegion(region));

    InstanceDetails details = new InstanceDetails();

    DescribeImagesRequest request = new DescribeImagesRequest();
    request.setOwners(Arrays.asList(owner));
    DescribeImagesResult result = amazonEC2.describeImages(request);

    List<Image> images = result.getImages();
    List<Dropdown> amis = new ArrayList<Dropdown>(images.size());

    for (Image image : images)
        amis.add(new Dropdown(image.getImageId(), image.getName()));
    details.setAmis(amis);//from w w  w . j  av a2 s. c o  m

    DescribeSecurityGroupsResult securityGroupsResult = amazonEC2.describeSecurityGroups();

    List<SecurityGroup> securityGroups = securityGroupsResult.getSecurityGroups();
    List<Dropdown> groups = new ArrayList<Dropdown>(securityGroups.size());

    for (SecurityGroup group : securityGroups)
        groups.add(new Dropdown(group.getGroupId(), group.getGroupName()));
    details.setSecurityGroups(groups);

    DescribeKeyPairsResult keyPairsResult = amazonEC2.describeKeyPairs();

    List<KeyPairInfo> keyPairInfos = keyPairsResult.getKeyPairs();
    List<Dropdown> keyPairs = new ArrayList<Dropdown>(keyPairInfos.size());

    for (KeyPairInfo keyPairInfo : keyPairInfos)
        keyPairs.add(new Dropdown(keyPairInfo.getKeyName(), keyPairInfo.getKeyName()));
    details.setKeys(keyPairs);
    details.setInstanceTypes(InstanceType.values());

    return details;
}