Git Product home page Git Product logo

camel-digitalocean's Introduction

Camel DigitalOcean Component

The DigitalOcean component allows you to manage Droplets and resources within the DigitalOcean cloud with Camel by encapsulating digitalocean-api-java. All of the functionality that you are familiar with in the DigitalOcean control panel is also available through this Camel component.

Prerequisites

You must have a valid DigitalOcean account and a valid OAuth token. You can generate an OAuth token by visiting the Apps & API section of the DigitalOcean control panel for your account.

URI format

The DigitalOcean Component uses the following URI format:

digitalocean://endpoint?[options]

where endpoint is a DigitalOcean resource type.

Example : to list your droplets:

digitalocean://droplets?operation=list&oAuthToken=XXXXXX&page=1&perPage=10

The DigitalOcean component only supports producer endpoints so you cannot use this component at the beginning of a route to listen to messages in a channel.

URI Endpoints

There is one endpoint for each DigitalOcean resources (defined in DigitalOceanResources enumeration):

Endpoint Description
account Your account on DigitalOcean.
actions Actions are records of events that have occurred on the resources in your account.
blockStorages Block Storage volumes provide expanded storage capacity for your Droplets and can be moved between Droplets within a specific region.
droplets A Droplet is a DigitalOcean virtual machine.
images An image may refer to a snapshot that has been taken of a Droplet instance. It may also mean an image representing an automatic backup of a Droplet.
snapshots Snapshots are saved instances of a Droplet or a volume.
keys DigitalOcean allows you to add SSH public keys to the interface so that you can embed your public key into a Droplet at the time of creation.
regions A region in DigitalOcean represents a datacenter where Droplets can be deployed and images can be transferred.
sizes The sizes objects represent different packages of hardware resources that can be used for Droplets.
floatingIPs Floating IP objects represent a publicly-accessible static IP addresses that can be mapped to one of your Droplets.
tags A Tag is a label that can be applied to a resource (currently only Droplets) in order to better organize or facilitate the lookups and actions on it.

URI Options

You have to provide the digitalOceanClient in the Registry or your oAuthToken to access the DigitalOcean service.

Option Type Example Description
operation String operation=list The operation to perform to the resource. It can also be set with the CamelDigitalOceanOperation Message header.
oAuthToken String Your DigitalOcean oAuth token.
digitalOceanClient com.myjeeva.digitalocean.DigitalOcean Reference to a com.myjeeva.digitalocean.DigitalOcean in the Registry.
page Integer page=3 Can be used for list operations, for pagination. Force the page number.
perPage Integer perPage=50 Can be used for list operations, for pagiantion. Set the number of item per request.

You have to provide an operation value for each endpoint, with the operation URI option or the CamelDigitalOceanOperation message header.

All operation values are defined in DigitalOceanOperations enumeration.

All header names used by the component are defined in DigitalOceanHeaders enumeration.

Message body result

All message bodies returned are using objects provided by the digitalocean-api-java library.

API Rate Limits

DigitalOcean REST API encapsulated by camel-digitalocean component is subjected to API Rate Limiting. You can find the per method limits in the API Rate Limits documentation.

Account endpoint

operation Description Headers Result
get get account info com.myjeeva.digitalocean.pojo.Account

BlockStorages endpoint

operation Description Headers Result
list list all of the Block Storage volumes available on your account List<com.myjeeva.digitalocean.pojo.Volume>
get show information about a Block Storage volume CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Volume
get show information about a Block Storage volume by name CamelDigitalOceanName String
CamelDigitalOceanRegion String
com.myjeeva.digitalocean.pojo.Volume
listSnapshots retrieve the snapshots that have been created from a volume CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.Snapshot>
create create a new volume CamelDigitalOceanVolumeSizeGigabytes Integer
CamelDigitalOceanName String
CamelDigitalOceanDescription* String
CamelDigitalOceanRegion* String
com.myjeeva.digitalocean.pojo.Volume
delete delete a Block Storage volume, destroying all data and removing it from your account CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Delete
delete delete a Block Storage volume by name CamelDigitalOceanName String
CamelDigitalOceanRegion String
com.myjeeva.digitalocean.pojo.Delete
attach attach a Block Storage volume to a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanDropletId Integer
CamelDigitalOceanDropletRegion String
com.myjeeva.digitalocean.pojo.Action
attach attach a Block Storage volume to a Droplet by name CamelDigitalOceanName String
CamelDigitalOceanDropletId Integer
CamelDigitalOceanDropletRegion String
com.myjeeva.digitalocean.pojo.Action
detach detach a Block Storage volume from a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanDropletId Integer
CamelDigitalOceanDropletRegion String
com.myjeeva.digitalocean.pojo.Action
attach detach a Block Storage volume from a Droplet by name CamelDigitalOceanName String
CamelDigitalOceanDropletId Integer
CamelDigitalOceanDropletRegion String
com.myjeeva.digitalocean.pojo.Action
resize resize a Block Storage volume CamelDigitalOceanVolumeSizeGigabytes Integer
CamelDigitalOceanRegion String
com.myjeeva.digitalocean.pojo.Action
listActions retrieve all actions that have been executed on a volume CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.Action>

Droplets endpoint

operation Description Headers Result
list list all Droplets in your account List<com.myjeeva.digitalocean.pojo.Droplet>
get show an individual droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Droplet
create create a new Droplet CamelDigitalOceanName String
CamelDigitalOceanDropletImage String
CamelDigitalOceanRegion String
CamelDigitalOceanDropletSize String
CamelDigitalOceanDropletSSHKeys* List<String>
CamelDigitalOceanDropletEnableBackups* Boolean
CamelDigitalOceanDropletEnableIpv6* Boolean
CamelDigitalOceanDropletEnablePrivateNetworking* Boolean
CamelDigitalOceanDropletUserData* String
CamelDigitalOceanDropletVolumes* List<String>
CamelDigitalOceanDropletTags List<String>
com.myjeeva.digitalocean.pojo.Droplet
create create multiple Droplets CamelDigitalOceanNames List<String>
CamelDigitalOceanDropletImage String
CamelDigitalOceanRegion String
CamelDigitalOceanDropletSize String
CamelDigitalOceanDropletSSHKeys* List<String>
CamelDigitalOceanDropletEnableBackups* Boolean
CamelDigitalOceanDropletEnableIpv6* Boolean
CamelDigitalOceanDropletEnablePrivateNetworking* Boolean
CamelDigitalOceanDropletUserData* String
CamelDigitalOceanDropletVolumes* List<String>
CamelDigitalOceanDropletTags List<String>
com.myjeeva.digitalocean.pojo.Droplet
delete delete a Droplet, CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Delete
enableBackups enable backups on an existing Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
disableBackups disable backups on an existing Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
enableIpv6 enable IPv6 networking on an existing Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
enablePrivateNetworking enable private networking on an existing Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
reboot reboot a Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
powerCycle power cycle a Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
shutdown shutdown a Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
powerOff power off a Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
powerOn power on a Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
restore shutdown a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanImageId Integer
com.myjeeva.digitalocean.pojo.Action
passwordReset reset the password for a Droplet CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action
resize resize a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanDropletSize String
com.myjeeva.digitalocean.pojo.Action
rebuild rebuild a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanImageId Integer
com.myjeeva.digitalocean.pojo.Action
rename rename a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanName String
com.myjeeva.digitalocean.pojo.Action
changeKernel change the kernel of a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanKernelId Integer
com.myjeeva.digitalocean.pojo.Action
takeSnapshot snapshot a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanName* String
com.myjeeva.digitalocean.pojo.Action
tag tag a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanName String
com.myjeeva.digitalocean.pojo.Response
untag untag a Droplet CamelDigitalOceanId Integer
CamelDigitalOceanName String
com.myjeeva.digitalocean.pojo.Response
listKernels retrieve a list of all kernels available to a Droplet CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.Kernel>
listSnapshots retrieve the snapshots that have been created from a Droplet CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.Snapshot>
listBackups retrieve any backups associated with a Droplet CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.Backup>
listActions retrieve all actions that have been executed on a Droplet CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.Action>
listNeighbors retrieve a list of droplets that are running on the same physical server CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.Droplet>
listAllNeighbors retrieve a list of any droplets that are running on the same physical hardware List<com.myjeeva.digitalocean.pojo.Droplet>

Images endpoint

operation Description Headers Result
list list images available on your account CamelDigitalOceanType* DigitalOceanImageTypes List<com.myjeeva.digitalocean.pojo.Image>
ownList retrieve only the private images of a user List<com.myjeeva.digitalocean.pojo.Image>
listActions retrieve all actions that have been executed on a Image CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.Action>
get retrieve information about an image (public or private) by id CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Image
get retrieve information about an public image by slug CamelDigitalOceanDropletImage String com.myjeeva.digitalocean.pojo.Image
update update an image CamelDigitalOceanId Integer
CamelDigitalOceanName String
com.myjeeva.digitalocean.pojo.Image
delete delete an image CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Delete
transfer transfer an image to another region CamelDigitalOceanId Integer
CamelDigitalOceanRegion String
com.myjeeva.digitalocean.pojo.Action
convert convert an image, for example, a backup to a snapshot CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Action

Snapshots endpoint

operation Description Headers Result
list list all of the snapshots available on your account CamelDigitalOceanType* DigitalOceanSnapshotTypes List<com.myjeeva.digitalocean.pojo.Snapshot>
get retrieve information about a snapshot CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Snapshot
delete delete an snapshot CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Delete

Keys endpoint

operation Description Headers Result
list list all of the keys in your account List<com.myjeeva.digitalocean.pojo.Key>
get retrieve information about a key by id CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Key
get retrieve information about a key by fingerprint CamelDigitalOceanKeyFingerprint String com.myjeeva.digitalocean.pojo.Key
update update a key by id CamelDigitalOceanId Integer
CamelDigitalOceanName String
com.myjeeva.digitalocean.pojo.Key
update update a key by fingerprint CamelDigitalOceanKeyFingerprint String
CamelDigitalOceanName String
com.myjeeva.digitalocean.pojo.Key
delete delete a key by id CamelDigitalOceanId Integer com.myjeeva.digitalocean.pojo.Delete
delete delete a key by fingerprint CamelDigitalOceanKeyFingerprint String com.myjeeva.digitalocean.pojo.Delete

Regions endpoint

operation Description Headers Result
list list all of the regions that are available List<com.myjeeva.digitalocean.pojo.Region>

Sizes endpoint

operation Description Headers Result
list list all of the sizes that are available List<com.myjeeva.digitalocean.pojo.Size>

Floating IPs endpoint

operation Description Headers Result
list list all of the Floating IPs available on your account List<com.myjeeva.digitalocean.pojo.FloatingIP>
create create a new Floating IP assigned to a Droplet CamelDigitalOceanId Integer List<com.myjeeva.digitalocean.pojo.FloatingIP>
create create a new Floating IP assigned to a Region CamelDigitalOceanRegion String List<com.myjeeva.digitalocean.pojo.FloatingIP>
get retrieve information about a Floating IP CamelDigitalOceanFloatingIPAddress String com.myjeeva.digitalocean.pojo.Key
delete delete a Floating IP and remove it from your account CamelDigitalOceanFloatingIPAddress String com.myjeeva.digitalocean.pojo.Delete
assign assign a Floating IP to a Droplet CamelDigitalOceanFloatingIPAddress String
CamelDigitalOceanDropletId Integer
com.myjeeva.digitalocean.pojo.Action
unassign unassign a Floating IP CamelDigitalOceanFloatingIPAddress String com.myjeeva.digitalocean.pojo.Action
listActions retrieve all actions that have been executed on a Floating IP CamelDigitalOceanFloatingIPAddress String List<com.myjeeva.digitalocean.pojo.Action>

Tags endpoint

operation Description Headers Result
list list all of your tags List<com.myjeeva.digitalocean.pojo.Tag>
create create a Tag CamelDigitalOceanName String com.myjeeva.digitalocean.pojo.Tag
get retrieve an individual tag CamelDigitalOceanName String com.myjeeva.digitalocean.pojo.Tag
delete delete a tag CamelDigitalOceanName String com.myjeeva.digitalocean.pojo.Delete
update update a tag CamelDigitalOceanName String
CamelDigitalOceanNewName String
com.myjeeva.digitalocean.pojo.Tag

Examples

Get your account info

from("direct:getAccountInfo")
    .setHeader(DigitalOceanConstants.OPERATION, constant(DigitalOceanOperations.get))
    .to("digitalocean:account?oAuthToken=XXXXXX")

Create a droplet

from("direct:createDroplet")
    .setHeader(DigitalOceanConstants.OPERATION, constant("create"))
    .setHeader(DigitalOceanHeaders.NAME, constant("myDroplet"))
    .setHeader(DigitalOceanHeaders.REGION, constant("fra1"))
    .setHeader(DigitalOceanHeaders.DROPLET_IMAGE, constant("ubuntu-14-04-x64"))
    .setHeader(DigitalOceanHeaders.DROPLET_SIZE, constant("512mb"))
    .to("digitalocean:droplet?oAuthToken=XXXXXX")

List all your droplets

from("direct:getDroplets")
    .setHeader(DigitalOceanConstants.OPERATION, constant("list"))
    .to("digitalocean:droplets?oAuthToken=XXXXXX")

Retrieve information for the Droplet (dropletId = 34772987)

from("direct:getDroplet")
    .setHeader(DigitalOceanConstants.OPERATION, constant("get"))
    .setHeader(DigitalOceanConstants.ID, 34772987)
    .to("digitalocean:droplet?oAuthToken=XXXXXX")

Shutdown information for the Droplet (dropletId = 34772987)

from("direct:shutdown")
    .setHeader(DigitalOceanConstants.ID, 34772987)
    .to("digitalocean:droplet?operation=shutdown&oAuthToken=XXXXXX")

camel-digitalocean's People

Contributors

tlehoux avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.