DigitalOcean
Since Camel 2.19
The DigitalOcean component allows you to manage Droplets and resources within the DigitalOcean cloud with Camel by encapsulating [digitalocean-api-java](https://www.digitalocean.com/community/projects/api-client-in-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](https://cloud.digitalocean.com/settings/applications) 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.
Options
The DigitalOcean component has no options.
The DigitalOcean endpoint is configured using URI syntax:
digitalocean:operation
with the following path and query parameters:
Path Parameters (1 parameters):
Name | Description | Default | Type |
---|---|---|---|
operation |
The operation to perform to the given resource. |
DigitalOceanOperations |
Query Parameters (10 parameters):
Name | Description | Default | Type |
---|---|---|---|
page (producer) |
Use for pagination. Force the page number. |
1 |
Integer |
perPage (producer) |
Use for pagination. Set the number of item per request. The maximum number of results per page is 200. |
25 |
Integer |
resource (producer) |
Required The DigitalOcean resource type on which perform the operation. |
DigitalOceanResources |
|
digitalOceanClient (advanced) |
To use a existing configured DigitalOceanClient as client |
DigitalOceanClient |
|
synchronous (advanced) |
Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). |
false |
boolean |
httpProxyHost (proxy) |
Set a proxy host if needed |
String |
|
httpProxyPassword (proxy) |
Set a proxy password if needed |
String |
|
httpProxyPort (proxy) |
Set a proxy port if needed |
Integer |
|
httpProxyUser (proxy) |
Set a proxy host if needed |
String |
|
oAuthToken (security) |
DigitalOcean OAuth Token |
String |
Spring Boot Auto-Configuration
When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
<dependency>
<groupId>org.apache.camel</groupId>
<artifactId>camel-digitalocean-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
The component supports 2 options, which are listed below.
Name | Description | Default | Type |
---|---|---|---|
camel.component.digitalocean.enabled |
Enable digitalocean component |
true |
Boolean |
camel.component.digitalocean.resolve-property-placeholders |
Whether the component should resolve property placeholders on itself when starting. Only properties which are of String type can use property placeholders. |
true |
Boolean |
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](https://developers.digitalocean.com/documentation/v2/#rate-limit).
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 <br>`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<br>`CamelDigitalOceanName` String<br>`CamelDigitalOceanDescription`* String<br>`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<br>`CamelDigitalOceanRegion` String| com.myjeeva.digitalocean.pojo.Delete
| attach
| attach a Block Storage volume to a Droplet| CamelDigitalOceanId
Integer <br>`CamelDigitalOceanDropletId` Integer<br>`CamelDigitalOceanDropletRegion` String| com.myjeeva.digitalocean.pojo.Action
| attach
| attach a Block Storage volume to a Droplet by name| CamelDigitalOceanName
String<br>`CamelDigitalOceanDropletId` Integer<br>`CamelDigitalOceanDropletRegion` String| com.myjeeva.digitalocean.pojo.Action
| detach
| detach a Block Storage volume from a Droplet| CamelDigitalOceanId
Integer <br>`CamelDigitalOceanDropletId` Integer<br>`CamelDigitalOceanDropletRegion` String| com.myjeeva.digitalocean.pojo.Action
| attach
| detach a Block Storage volume from a Droplet by name| CamelDigitalOceanName
String<br>`CamelDigitalOceanDropletId` Integer<br>`CamelDigitalOceanDropletRegion` String| com.myjeeva.digitalocean.pojo.Action
| resize
| resize a Block Storage volume | CamelDigitalOceanVolumeSizeGigabytes
Integer<br>`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 <br>`CamelDigitalOceanDropletImage` String <br>`CamelDigitalOceanRegion` String <br>`CamelDigitalOceanDropletSize` String <br>`CamelDigitalOceanDropletSSHKeys`* List\<String\> <br>`CamelDigitalOceanDropletEnableBackups`* Boolean <br>`CamelDigitalOceanDropletEnableIpv6`* Boolean <br>`CamelDigitalOceanDropletEnablePrivateNetworking`* Boolean <br>`CamelDigitalOceanDropletUserData`* String <br>`CamelDigitalOceanDropletVolumes`* List\<String\> <br>`CamelDigitalOceanDropletTags` List\<String\>| com.myjeeva.digitalocean.pojo.Droplet
|
| create
| create multiple Droplets | CamelDigitalOceanNames
List\<String\> <br>`CamelDigitalOceanDropletImage` String <br>`CamelDigitalOceanRegion` String <br>`CamelDigitalOceanDropletSize` String <br>`CamelDigitalOceanDropletSSHKeys`* List\<String\> <br>`CamelDigitalOceanDropletEnableBackups`* Boolean <br>`CamelDigitalOceanDropletEnableIpv6`* Boolean <br>`CamelDigitalOceanDropletEnablePrivateNetworking`* Boolean <br>`CamelDigitalOceanDropletUserData`* String <br>`CamelDigitalOceanDropletVolumes`* List\<String\> <br>`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 <br>`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 <br>`CamelDigitalOceanDropletSize` String| com.myjeeva.digitalocean.pojo.Action
|
| rebuild
| rebuild a Droplet | CamelDigitalOceanId
Integer <br>`CamelDigitalOceanImageId` Integer| com.myjeeva.digitalocean.pojo.Action
|
| rename
| rename a Droplet | CamelDigitalOceanId
Integer <br>`CamelDigitalOceanName` String| com.myjeeva.digitalocean.pojo.Action
|
| changeKernel
| change the kernel of a Droplet | CamelDigitalOceanId
Integer <br>`CamelDigitalOceanKernelId` Integer| com.myjeeva.digitalocean.pojo.Action
|
| takeSnapshot
| snapshot a Droplet | CamelDigitalOceanId
Integer <br>`CamelDigitalOceanName`* String| com.myjeeva.digitalocean.pojo.Action
|
| tag
| tag a Droplet | CamelDigitalOceanId
Integer <br>`CamelDigitalOceanName` String| com.myjeeva.digitalocean.pojo.Response
|
| untag
| untag a Droplet | CamelDigitalOceanId
Integer <br>`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 <br>`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 <br>`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 <br>`CamelDigitalOceanName` String| com.myjeeva.digitalocean.pojo.Key
|
| update
| update a key by fingerprint| CamelDigitalOceanKeyFingerprint
String <br>`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 <br>`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 <br>`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")