package io.fathom.cloud.image.api.os.resources; // //import java.io.File; //import java.io.IOException; // //import javax.inject.Inject; //import javax.ws.rs.Consumes; //import javax.ws.rs.GET; //import javax.ws.rs.POST; //import javax.ws.rs.PUT; //import javax.ws.rs.Path; //import javax.ws.rs.PathParam; //import javax.ws.rs.Produces; //import javax.ws.rs.WebApplicationException; //import javax.ws.rs.core.Response; //import javax.ws.rs.core.Response.ResponseBuilder; //import javax.ws.rs.core.Response.Status; // //import org.joda.time.format.DateTimeFormatter; //import org.joda.time.format.ISODateTimeFormat; //import org.slf4j.Logger; //import org.slf4j.LoggerFactory; // //import io.fathom.cloud.CloudException; //import io.fathom.cloud.blobs.BlobData; //import io.fathom.cloud.images.ImageDataService; //import io.fathom.cloud.images.ImageService; //import io.fathom.cloud.images.api.os.model.Image; //import io.fathom.cloud.images.api.os.model.ImageListResponse; //import io.fathom.cloud.protobuf.CloudModel.ImageData; //import io.fathom.cloud.protobuf.CloudModel.ImageLocation; //import io.fathom.cloud.protobuf.CloudModel.ImageState; //import io.fathom.cloud.storage.Clock; //import com.fathomdb.utils.Hex; //import com.google.common.collect.Lists; //import com.google.inject.persist.Transactional; //import com.google.protobuf.ByteString; // //@Path("/openstack/images/v2/images") //@Transactional //public class ImagesV2Endpoint extends ImageResourceBase { // private static final Logger log = LoggerFactory // .getLogger(ImagesV2Endpoint.class); // // static DateTimeFormatter DATE_FORMAT = ISODateTimeFormat.dateTime(); // // @Inject // ImageService imageService; // // @Inject // ImageDataService imageDataService; // // @PathParam("imageId") // String imageId; // // private ImageData findImage() throws CloudException { // return imageService.findImage(getProject(), Long.valueOf(imageId)); // } // // @PUT // @Path("{imageId}/file") // public Response updateContent(File file) throws CloudException, IOException { // ImageData image = findImage(); // if (image == null) { // throw new WebApplicationException(Status.NOT_FOUND); // } // // BlobData data = BlobData.build(file); // // String stored = imageDataService.storeImageFile(image, data); // // ImageLocation.Builder b = ImageLocation.newBuilder(); // b.setStored(stored); // // imageService.setImageLocation(getProject(), image.getId(), data.size(), // data.getHash(), b.build()); // // return Response.status(Status.NO_CONTENT).build(); // } // // @GET // @Path("{id}/file") // public Response getContent() throws CloudException, IOException { // ImageData image = findImage(); // if (image == null) { // throw new WebApplicationException(Status.NOT_FOUND); // } // // ImageLocation imageLocation = image.getLocation(); // if (imageLocation.hasStored()) { // String cookie = imageLocation.getStored(); // // BlobData blob = imageDataService.getImageFile(cookie); // // ResponseBuilder response = Response.ok().entity(blob.asEntity()); // // ByteString md5 = blob.getHash(); // response.header("Content-MD5", Hex.toHex(md5.toByteArray())); // return response.build(); // } // // return Response.status(Status.NO_CONTENT).build(); // } // // @POST // @Consumes({ JSON }) // @Produces({ JSON }) // public Image createImage(Image image) throws CloudException { // ImageData.Builder b = ImageData.newBuilder(); // b.setName(image.name); // b.setImageState(ImageState.QUEUED); // // if (image.tags != null) { // b.addAllTag(image.tags); // } // // long t = Clock.getTimestamp(); // b.setCreatedAt(t); // b.setUpdatedAt(t); // // b.setIsPublic(image.isPublic); // // b.setOwnerProject(getProject().getId()); // // b.setDiskFormat(image.diskFormat); // b.setContainerFormat(image.containerFormat); // // ImageData created = imageService.createImage(b); // // return toModel(created); // } // // @GET // @Path("detail") // @Produces({ JSON }) // public ImageListResponse doImageDetailsGet() throws CloudException { // ImageListResponse response = new ImageListResponse(); // // response.images = Lists.newArrayList(); // // ImageFilter filter = new ImageFilter(); // filter.name = httpRequest.getParameter("name"); // // for (ImageData data : imageService.listImages(getProject(), filter)) { // response.images.add(toModel(data)); // } // return response; // } // }