Example usage for com.amazonaws.services.ec2.model Image getState

List of usage examples for com.amazonaws.services.ec2.model Image getState

Introduction

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

Prototype


public String getState() 

Source Link

Document

The current state of the AMI.

Usage

From source file:com.axemblr.yab.cli.ListCommand.java

License:Apache License

@Override
public void run() {
    YaB yab = YaB.createWithEnvironmentCredentials(getRegion());

    try {//from w w  w  .j  ava 2  s  .c  om
        System.out.println(";; using region " + getRegion());

        for (Image image : yab.describeBackedImages()) {
            System.out.printf("%s : %s : %s - %s (%s)%n", image.getImageId(),
                    (image.getPublic() ? "public" : "private"), image.getState(), image.getName(),
                    image.getDescription());
            System.out.printf(String.format("tags: %s%n", image.getTags()));
        }

    } finally {
        yab.close();
    }
}

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  ww .ja  v a 2s .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.carrotgarden.maven.aws.ecc.ElastiCompImageCreate.java

License:BSD License

@Override
public void execute() throws MojoFailureException {

    try {/*from   w  ww .  ja v  a  2 s. com*/

        getLog().info("image create init [" + imageName() + "]");

        final CarrotElasticCompute compute = newElasticCompute();

        final Image image = compute.imageCreate( //
                imageInstanceId(), //
                imageName(), //
                imageDescription //
        );

        final ImageState state = ImageState.fromValue(image.getState());

        switch (state) {
        case AVAILABLE:
            break;
        default:
            throw new IllegalStateException("image create failed : \n" + image);
        }

        final String imageId = image.getImageId();

        /** publish result */
        project().getProperties().put(imageResultProperty, image);
        project().getProperties().put(imageIdResultProperty, imageId);

        /** tag image */
        compute.tagCreate(imageId, amazonTagName(), imageName());

        /** tag image devices */
        for (final BlockDeviceMapping blockDevice : image.getBlockDeviceMappings()) {

            final EbsBlockDevice elasticDevice = blockDevice.getEbs();

            if (elasticDevice == null) {
                continue;
            }

            final String snapshotId = elasticDevice.getSnapshotId();

            if (snapshotId == null) {
                continue;
            }

            compute.tagCreate(snapshotId, amazonTagName(), imageName());

        }

        getLog().info("image create image=\n" + image);

        getLog().info("image create done [" + imageName() + "]");

    } catch (final Exception e) {

        throw new MojoFailureException("bada-boom", e);

    }

}

From source file:com.cloudera.director.aws.ec2.EC2InstanceTemplateConfigurationValidator.java

License:Apache License

/**
 * Validates the configured AMI.//w w  w.  ja va 2 s.c  o  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.dowdandassociates.gentoo.bootstrap.DefaultTestImageProvider.java

License:Apache License

public Optional<Image> get() {
    if (!testSnapshot.isPresent()) {
        log.info("test snapshot not present");
        return Optional.absent();
    }/*  w ww  .  ja v  a2s  .  c om*/

    StringBuilder name = new StringBuilder();
    name.append(prefix.get());

    if (StringUtils.isNotBlank(dateFormat.get())) {
        name.append(DateFormatUtils.formatUTC(System.currentTimeMillis(), dateFormat.get()));
    }

    String architecture = imageInformation.getArchitecture();
    String virtualizationType = imageInformation.getVirtualizationType();

    RegisterImageRequest registerImageRequest = new RegisterImageRequest().withArchitecture(architecture)
            .withVirtualizationType(virtualizationType).withDescription(description.get())
            .withName(name.toString()).withRootDeviceName(rootDeviceName.get());

    if ("paravirtual".equals(virtualizationType)) {
        if (!kernelImage.isPresent()) {
            log.info("kernel image not present");
            return Optional.absent();
        }

        registerImageRequest = registerImageRequest.withKernelId(kernelImage.get().getImageId());
    }

    if ("i386".equals(architecture)) {
        registerImageRequest = registerImageRequest.withBlockDeviceMappings(
                new BlockDeviceMapping().withDeviceName(rootDeviceName.get())
                        .withEbs(new EbsBlockDevice().withSnapshotId(testSnapshot.get().getSnapshotId())),
                new BlockDeviceMapping().withDeviceName("/dev/sda2").withVirtualName("ephemeral0"),
                new BlockDeviceMapping().withDeviceName("/dev/sda3").withVirtualName("ephemeral1"));
    } else {
        registerImageRequest = registerImageRequest.withBlockDeviceMappings(
                new BlockDeviceMapping().withDeviceName(rootDeviceName.get())
                        .withEbs(new EbsBlockDevice().withSnapshotId(testSnapshot.get().getSnapshotId())),
                new BlockDeviceMapping().withDeviceName("/dev/sdb").withVirtualName("ephemeral0"),
                new BlockDeviceMapping().withDeviceName("/dev/sdc").withVirtualName("ephemeral1"),
                new BlockDeviceMapping().withDeviceName("/dev/sdd").withVirtualName("ephemeral2"),
                new BlockDeviceMapping().withDeviceName("/dev/sde").withVirtualName("ephemeral3"));
    }

    RegisterImageResult registerImageResult = ec2Client.registerImage(registerImageRequest);

    String imageId = registerImageResult.getImageId();

    DescribeImagesRequest describeImagesRequest = new DescribeImagesRequest().withImageIds(imageId);

    try {
        while (true) {
            log.info("Sleeping for " + sleep.get() + " ms");
            Thread.sleep(sleep.get());
            DescribeImagesResult describeImagesResult = ec2Client.describeImages(describeImagesRequest);
            if (describeImagesResult.getImages().isEmpty()) {
                return Optional.absent();
            }
            Image image = describeImagesResult.getImages().get(0);
            String state = image.getState();
            log.info("Image state = " + state);
            if ("pending".equals(state)) {
                continue;
            }
            if (!"available".equals(state)) {
                return Optional.absent();
            }
            return Optional.fromNullable(image);
        }
    } catch (InterruptedException e) {
        return Optional.absent();
    }
}

From source file:com.zotoh.cloudapi.aws.AMImage.java

License:Open Source License

private MachineImage toMI(Image i) {
    MachineImage m = null;//from  ww  w .j  a  v  a  2  s. co  m
    if (i != null) {
        m = new MachineImage();
        m.setProviderRegionId(_svc.getCloud().getContext().getRegionId());
        m.setArchitecture(toArch(i.getArchitecture()));
        m.setCurrentState(toImageState(i.getState()));

        m.setProviderMachineImageId(i.getImageId());
        m.setName(i.getName());
        m.setProviderOwnerId(i.getOwnerId());
        m.setSoftware("");
        m.setType(toImageType(i.getRootDeviceType()));

        m.addTag("manifest-location", nsb(i.getImageLocation()));
        m.addTag("hypervisor", nsb(i.getHypervisor()));
        m.addTag("alias", nsb(i.getImageOwnerAlias()));
        m.addTag("kernel", nsb(i.getKernelId()));
        m.addTag("public", i.getPublic() ? "true" : "false");
        m.addTag("ramdisk", nsb(i.getRamdiskId()));
        m.addTag("root-dev-name", nsb(i.getRootDeviceName()));
        m.addTag("state-reason", nsb(i.getStateReason()));
        m.addTag("virtualization-type", nsb(i.getVirtualizationType()));

        m.setDescription(i.getDescription());
        m.setPlatform(nsb(i.getPlatform()).toLowerCase().indexOf("windows") >= 0 ? Platform.WINDOWS
                : Platform.UBUNTU);
    }

    return m;
}

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

License:Apache License

/**
 * AMI?/*w  w  w  . ja  v a 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:org.gridgain.grid.spi.cloud.ec2lite.GridEc2LiteCloudSpi.java

License:GNU General Public License

/**
 * Gets image resource from EC2 image.//from w  ww. j a  v a 2  s .  c  o  m
 *
 * @param img EC2 image.
 * @return Image resource.
 */
private GridCloudSpiResourceAdapter createImageResource(Image img) {
    assert img != null;

    Map<String, String> params = new HashMap<String, String>();

    params.put(IMG_ARCH, img.getArchitecture());
    params.put(IMG_LOC, img.getImageLocation());
    params.put(IMG_STATE, img.getState());
    params.put(INST_TYPE, img.getImageType());
    params.put(IMG_KERNEL_ID, img.getKernelId());
    params.put(OWNER_ID, img.getOwnerId());
    params.put(INST_PLATFORM, img.getPlatform());
    params.put(IMG_RAMDISK_ID, img.getRamdiskId());
    params.put(IMG_PUBLIC, String.valueOf(img.isPublic()));

    params.put(PRODUCT_CODE_IDS, F.concat(F.transform(img.getProductCodes(), new C1<ProductCode, String>() {
        @Override
        public String apply(ProductCode e) {
            return e.getProductCodeId();
        }
    }), VAL_DELIM));

    return new GridCloudSpiResourceAdapter(img.getImageId(), CLD_IMAGE, cloudId, params);
}

From source file:pl.edu.agh.samm.tadapter.eucalyptus.EucalyptusTransportAdapter.java

License:Open Source License

/**
 * starts new VM instance, <b>does not add new resource to core</b>
 *
 * @param resource//from  w  ww  .  j a  v  a2  s  .  c  o m
 * @param imageId
 * @param instanceType
 * @return
 * @throws Exception
 */
private Instance startOneInstanceAction(Resource resource, final String imageId, String instanceType,
        String userData) throws Exception {
    AmazonEC2Client client = ec2Clients.get(resource);

    Image image = getImageByImageID(client, imageId);
    if (!IMAGE_TYPE_MACHINE.equals(image.getImageType())) {
        throw new RuntimeException("Provided image type is not machine!");
    }
    if (!IMAGE_STATE_AVAILABLE.equals(image.getState())) {
        throw new RuntimeException("Provided image state is not " + IMAGE_STATE_AVAILABLE);
    }

    RunInstancesRequest command = new RunInstancesRequest();

    if (userData != null) {
        command.setUserData(userData);
    }

    command.setImageId(image.getImageId());
    command.setInstanceType(instanceType);
    command.setKernelId(image.getKernelId());
    command.setMaxCount(1);
    command.setMinCount(1);
    command.setRamdiskId(image.getRamdiskId());
    command.setKeyName(resource.getProperty(EUCALYPTUS_KEY_NAME).toString());

    RunInstancesResult result = client.runInstances(command);
    List<Instance> instances = result.getReservation().getInstances();
    if (instances.size() < 1) {
        logger.error("Something bad happend while running VM instance");
    }
    Instance instance = instances.get(0);
    instance = EC2Util.waitForRunningState(client, instance);

    logger.info("Started new instance of image " + imageId + "! InstanceId = " + instance.getInstanceId());
    instance = EC2Util.waitForPublicDNS(client, instance);
    logger.info("Instance IP address is: " + instance.getPublicDnsName());
    return instance;
}