All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jclouds.digitalocean.features.DropletApi Maven / Gradle / Ivy

There is a newer version: 1.9.3
Show newest version
/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.jclouds.digitalocean.features;

import java.io.Closeable;
import java.util.List;

import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;

import org.jclouds.Fallbacks.NullOnNotFoundOr404;
import org.jclouds.digitalocean.domain.Droplet;
import org.jclouds.digitalocean.domain.DropletCreation;
import org.jclouds.digitalocean.domain.options.CreateDropletOptions;
import org.jclouds.digitalocean.http.filters.AuthenticationFilter;
import org.jclouds.javax.annotation.Nullable;
import org.jclouds.rest.annotations.Fallback;
import org.jclouds.rest.annotations.RequestFilters;
import org.jclouds.rest.annotations.SelectJson;

import com.google.inject.name.Named;

/**
 * Provides access to the Droplet management features.
 */
@RequestFilters(AuthenticationFilter.class)
@Consumes(MediaType.APPLICATION_JSON)
@Path("/droplets")
public interface DropletApi extends Closeable {

   /**
    * Lists all existing droplets.
    * 
    * @return The list of all existing droplets.
    */
   @Named("droplet:list")
   @GET
   @SelectJson("droplets")
   List list();

   /**
    * Gets the details of the given droplet.
    * 
    * @param id The id of the droplet to get.
    * @return The details of the droplet or null if no droplet exists with the given id.
    */
   @Named("droplet:get")
   @GET
   @Path("/{id}")
   @SelectJson("droplet")
   @Fallback(NullOnNotFoundOr404.class)
   @Nullable
   Droplet get(@PathParam("id") int id);

   /**
    * Creates a new droplet.
    * 
    * @param name The name for the new droplet.
    * @param imageId The id of the image to use to create the droplet.
    * @param sizeId The size to use to create the droplet.
    * @param regionId The region where the droplet must be created.
    * @return The created droplet.
    * 
    * @see #create(String, String, String, String)
    */
   @Named("droplet:create")
   @GET
   @Path("/new")
   @SelectJson("droplet")
   DropletCreation create(@QueryParam("name") String name, @QueryParam("image_id") int imageId,
         @QueryParam("size_id") int sizeId, @QueryParam("region_id") int regionId);

   /**
    * Creates a new droplet.
    * 
    * @param name The name for the new droplet.
    * @param imageId The id of the image to use to create the droplet.
    * @param sizeId The size to use to create the droplet.
    * @param regionId The region where the droplet must be created.
    * @param options Custom options to create the droplet.
    * @return The created droplet.
    * 
    * @see #create(String, String, String, String, CreateDropletOptions)
    */
   @Named("droplet:create")
   @GET
   @Path("/new")
   @SelectJson("droplet")
   DropletCreation create(@QueryParam("name") String name, @QueryParam("image_id") int imageId,
         @QueryParam("size_id") int sizeId, @QueryParam("region_id") int regionId, CreateDropletOptions options);

   /**
    * Creates a new droplet.
    * 
    * @param name The name for the new droplet.
    * @param imageSlug The slug of the image to use to create the droplet.
    * @param sizeSlug The slug of the size to use to create the droplet.
    * @param regionSlug The slug region where the droplet must be created.
    * @return The created droplet.
    * 
    * @see #create(String, int, int, int)
    */
   @Named("droplet:create")
   @GET
   @Path("/new")
   @SelectJson("droplet")
   DropletCreation create(@QueryParam("name") String name, @QueryParam("image_slug") String imageSlug,
         @QueryParam("size_slug") String sizeSlug, @QueryParam("region_slug") String regionSlug);

   /**
    * Creates a new droplet.
    * 
    * @param name The name for the new droplet.
    * @param imageSlug The slug of the image to use to create the droplet.
    * @param sizeSlug The slug of the size to use to create the droplet.
    * @param regionSlug The slug region where the droplet must be created.
    * @param options Custom options to create the droplet.
    * @return The created droplet.
    * 
    * @see #create(String, int, int, int, CreateDropletOptions)
    */
   @Named("droplet:create")
   @GET
   @Path("/new")
   @SelectJson("droplet")
   DropletCreation create(@QueryParam("name") String name, @QueryParam("image_slug") String imageSlug,
         @QueryParam("size_slug") String sizeSlug, @QueryParam("region_slug") String regionSlug,
         CreateDropletOptions options);

   /**
    * Reboots the given droplet.
    * 
    * @param id The id of the droplet to reboot.
    * @return The id of the event to track the reboot process.
    */
   @Named("droplet:reboot")
   @GET
   @Path("/{id}/reboot")
   @SelectJson("event_id")
   int reboot(@PathParam("id") int id);

   /**
    * Power cycles the given droplet.
    * 
    * @param id The id of the droplet to power cycle.
    * @return The id of the event to track the power cycle process.
    */
   @Named("droplet:powercycle")
   @GET
   @Path("/{id}/power_cycle")
   @SelectJson("event_id")
   int powerCycle(@PathParam("id") int id);

   /**
    * Shuts down the given droplet.
    * 
    * @param id The id of the droplet to shutdown.
    * @return The id of the event to track the shutdown process.
    */
   @Named("droplet:shutdown")
   @GET
   @Path("/{id}/shutdown")
   @SelectJson("event_id")
   int shutdown(@PathParam("id") int id);

   /**
    * Powers off the given droplet.
    * 
    * @param id The id of the droplet to power off.
    * @return The id of the event to track the power off process.
    */
   @Named("droplet:poweroff")
   @GET
   @Path("/{id}/power_off")
   @SelectJson("event_id")
   int powerOff(@PathParam("id") int id);

   /**
    * Powers on the given droplet.
    * 
    * @param id The id of the droplet to power on.
    * @return The id of the event to track the power on process.
    */
   @Named("droplet:poweron")
   @GET
   @Path("/{id}/power_on")
   @SelectJson("event_id")
   int powerOn(@PathParam("id") int id);

   /**
    * Resets the password for the given droplet.
    * 
    * @param id The id of the droplet to reset the password to.
    * @return The id of the event to track the password reset process.
    */
   @Named("droplet:resetpassword")
   @GET
   @Path("/{id}/password_reset")
   @SelectJson("event_id")
   int resetPassword(@PathParam("id") int id);

   /**
    * Changes the size for the given droplet.
    * 
    * @param id The id of the droplet to change the size to.
    * @param sizeId The id of the new size for the droplet.
    * @return The id of the event to track the resize process.
    */
   @Named("droplet:resize")
   @GET
   @Path("/{id}/resize")
   @SelectJson("event_id")
   int resize(@PathParam("id") int id, @QueryParam("size_id") int sizeId);

   /**
    * Takes a snapshot of the droplet once it has been powered off.
    * 
    * @param id The id of the droplet to take the snapshot of.
    * @return The id of the event to track the snapshot process.
    */
   @Named("droplet:snapshot")
   @GET
   @Path("/{id}/snapshot")
   @SelectJson("event_id")
   int snapshot(@PathParam("id") int id);

   /**
    * Takes a snapshot of the droplet once it has been powered off.
    * 
    * @param id The id of the droplet to take the snapshot of.
    * @param name The name for the snapshot.
    * @return The id of the event to track the snapshot process.
    */
   @Named("droplet:snapshot")
   @GET
   @Path("/{id}/snapshot")
   @SelectJson("event_id")
   int snapshot(@PathParam("id") int id, @QueryParam("name") String name);

   /**
    * Restores a droplet with a previous image or snapshot.
    * 

* This will be a mirror copy of the image or snapshot to your droplet. Be sure you have backed up any necessary * information prior to restore. * * @param id The id of the droplet to restore. * @param imageId The id of the image or snapshot to use to restore the droplet. * @return The id of the event to track the restore process. */ @Named("droplet:restore") @GET @Path("/{id}/restore") @SelectJson("event_id") int restore(@PathParam("id") int id, @QueryParam("image_id") int imageId); /** * Rebuilds a droplet with a default image. *

* This is useful if you want to start again but retain the same IP address for your droplet. * * @param id The id of the droplet to rebuild. * @param imageId The id of the image or snapshot to use to restore the droplet. * @return The id of the event to track the restore process. */ @Named("droplet:rebuild") @GET @Path("/{id}/rebuild") @SelectJson("event_id") int rebuild(@PathParam("id") int id, @QueryParam("image_id") int imageId); /** * Renames a droplet to the specified name. * * @param id The id of the droplet to rename. * @param name The new name for the droplet. * @return The id of the event to track the rename process. */ @Named("droplet:rename") @GET @Path("/{id}/rename") @SelectJson("event_id") int rename(@PathParam("id") int id, @QueryParam("name") String name); /** * Destroys the given droplet. * * @param id The id of the droplet to destroy. * @return The id of the event to track the destroy process. */ @Named("droplet:destroy") @GET @Path("/{id}/destroy") @SelectJson("event_id") int destroy(@PathParam("id") int id); /** * Destroys the given droplet. * * @param id The id of the droplet to destroy. * @param scrubData If true this will strictly write 0s to your prior partition to ensure that all data is completely * erased. * @return The id of the event to track the destroy process. */ @Named("droplet:destroy") @GET @Path("/{id}/destroy") @SelectJson("event_id") int destroy(@PathParam("id") int id, @QueryParam("scrub_data") boolean scrubData); }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy