Package io.fathom.cloud.compute.api.os.resources

Source Code of io.fathom.cloud.compute.api.os.resources.ComputeImagesResource

package io.fathom.cloud.compute.api.os.resources;

import io.fathom.cloud.CloudException;
import io.fathom.cloud.compute.api.os.model.Image;
import io.fathom.cloud.compute.api.os.model.ImageList;
import io.fathom.cloud.compute.api.os.model.WrappedImage;
import io.fathom.cloud.services.ImageService;

import javax.inject.Inject;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.google.common.collect.Lists;

/**
* This is a passthrough to the image API.
*
* It's sort of deprecated, but still used by clients.
*
*/
@Path("/openstack/compute/{project}/images")
public class ComputeImagesResource extends ComputeResourceBase {
    private static final Logger log = LoggerFactory.getLogger(ComputeImagesResource.class);

    @Inject
    ImageService imageService;

    @GET
    public ImageList listImages() throws CloudException {
        return listImages(false);
    }

    @GET
    @Path("detail")
    public ImageList listImageDetails() throws CloudException {
        return listImages(true);
    }

    @GET
    @Path("{id}")
    public WrappedImage getImage(@PathParam("id") long imageId) throws CloudException {
        ImageService.Image image = imageService.findImage(getProject(), imageId);

        notFoundIfNull(image);

        WrappedImage response = new WrappedImage();
        response.image = toModel(image, true);
        return response;
    }

    private ImageList listImages(boolean details) throws CloudException {
        ImageList response = new ImageList();

        response.images = Lists.newArrayList();

        for (ImageService.Image image : imageService.listImages(getProject())) {
            response.images.add(toModel(image, details));
        }

        return response;
    }

    private Image toModel(ImageService.Image image, boolean details) {
        Image model = new Image();
        model.id = "" + image.getId();
        model.name = image.getName();

        if (details) {
            model.status = image.getStatus();

            // "created": "2011-01-01T01:02:03Z",
            // "id": "70a599e0-31e7-49b7-b260-868f441e862b",
            // "links": [
            // {
            // "href":
            // "http://openstack.example.com/v2/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b",
            // "rel": "self"
            // },
            // {
            // "href":
            // "http://openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b",
            // "rel": "bookmark"
            // },
            // {
            // "href":
            // "http://glance.openstack.example.com/openstack/images/70a599e0-31e7-49b7-b260-868f441e862b",
            // "rel": "alternate",
            // "type": "application/vnd.openstack.image"
            // }
            // ],
            // "metadata": {
            // "architecture": "x86_64",
            // "auto_disk_config": "True",
            // "kernel_id": "nokernel",
            // "ramdisk_id": "nokernel"
            // },
            // "minDisk": 0,
            // "minRam": 0,
            // "name": "fakeimage7",
            // "progress": 100,
            // "status": "ACTIVE",
            // "updated": "2011-01-01T01:02:03Z"
        }

        return model;
    }

}
TOP

Related Classes of io.fathom.cloud.compute.api.os.resources.ComputeImagesResource

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.