DigitalOcean
Since Camel 2.19
Only producer is supported
The DigitalOcean component allows you to manage Droplets and resources within the DigitalOcean cloud with Camel by encapsulating digitalocean-api-java. All 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.
Configuring Options
Camel components are configured on two separate levels:
-
component level
-
endpoint level
Configuring Component Options
At the component level, you set general and shared configurations that are, then, inherited by the endpoints. It is the highest configuration level.
For example, a component may have security settings, credentials for authentication, urls for network connection and so forth.
Some components only have a few options, and others may have many. Because components typically have pre-configured defaults that are commonly used, then you may often only need to configure a few options on a component; or none at all.
You can configure components using:
-
the Component DSL.
-
in a configuration file (
application.properties
,*.yaml
files, etc). -
directly in the Java code.
Configuring Endpoint Options
You usually spend more time setting up endpoints because they have many options. These options help you customize what you want the endpoint to do. The options are also categorized into whether the endpoint is used as a consumer (from), as a producer (to), or both.
Configuring endpoints is most often done directly in the endpoint URI as path and query parameters. You can also use the Endpoint DSL and DataFormat DSL as a type safe way of configuring endpoints and data formats in Java.
A good practice when configuring options is to use Property Placeholders.
Property placeholders provide a few benefits:
-
They help prevent using hardcoded urls, port numbers, sensitive information, and other settings.
-
They allow externalizing the configuration from the code.
-
They help the code to become more flexible and reusable.
The following two sections list all the options, firstly for the component followed by the endpoint.
Component Options
The DigitalOcean component supports 2 options, which are listed below.
Name | Description | Default | Type |
---|---|---|---|
Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean | |
Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | boolean |
Endpoint 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 |
---|---|---|---|
The operation to perform to the given resource. Enum values:
| DigitalOceanOperations |
Query Parameters (10 parameters)
Name | Description | Default | Type |
---|---|---|---|
Use for pagination. Force the page number. | 1 | Integer | |
Use for pagination. Set the number of item per request. The maximum number of results per page is 200. | 25 | Integer | |
Required The DigitalOcean resource type on which perform the operation. Enum values:
| DigitalOceanResources | ||
Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | boolean | |
To use a existing configured DigitalOceanClient as client. | DigitalOceanClient | ||
Set a proxy host if needed. | String | ||
Set a proxy password if needed. | String | ||
Set a proxy port if needed. | Integer | ||
Set a proxy host if needed. | String | ||
DigitalOcean OAuth Token. | String |
Message Headers
The DigitalOcean component supports 24 message header(s), which is/are listed below:
Name | Description | Default | Type |
---|---|---|---|
CamelDigitalOceanOperation (producer) Constant: | The operation to perform. Enum values:
| DigitalOceanOperations | |
CamelDigitalOceanId (producer) Constant: | The id. | Integer or String | |
CamelDigitalOceanType (producer) Constant: | The type. Enum values:
| DigitalOceanImageTypes | |
CamelDigitalOceanName (producer) Constant: | The name. | String | |
CamelDigitalOceanNames (producer) Constant: | The names of the droplet. | List | |
CamelDigitalOceanRegion (producer) Constant: | The code name of the region aka DigitalOcean data centers. | String | |
CamelDigitalOceanDescription (producer) Constant: | The description. | String | |
CamelDigitalOceanDropletSize (producer) Constant: | The size of the droplet. | String | |
CamelDigitalOceanDropletImage (producer) Constant: | The image of the droplet. | String | |
CamelDigitalOceanDropletSSHKeys (producer) Constant: | The keys of the droplet. | List | |
CamelDigitalOceanDropletEnableBackups (producer) Constant: | The flag to enable backups. | Boolean | |
CamelDigitalOceanDropletEnableIpv6 (producer) Constant: | The flag to enable ipv6. | Boolean | |
CamelDigitalOceanDropletEnablePrivateNetworking (producer) Constant: | The flag to enable private networking. | Boolean | |
CamelDigitalOceanDropletUserData (producer) Constant: | The user data of the droplet. | String | |
CamelDigitalOceanDropletVolumes (producer) Constant: | The volumes' identifier of the droplet. | List | |
CamelDigitalOceanDropletTags (producer) Constant: | The tags of the droplet. | List | |
CamelDigitalOceanDropletId (producer) Constant: | The droplet identifier. | Integer | |
CamelDigitalOceanImageId (producer) Constant: | The id of the DigitalOcean public image or your private image. | Integer | |
CamelDigitalOceanKernelId (producer) Constant: | The kernel id to be changed for droplet. | Integer | |
CamelDigitalOceanVolumeName (producer) Constant: | The name of the volume. | String | |
CamelDigitalOceanVolumeSizeGigabytes (producer) Constant: | The size value in GB. | Integer or Double | |
CamelDigitalOceanFloatingIPAddress (producer) Constant: | The floating IP address. | String | |
CamelDigitalOceanKeyFingerprint (producer) Constant: | The SSH key fingerprint. | String | |
CamelDigitalOceanKeyPublicKey (producer) Constant: | The public key. | String |
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.
Usage
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. ou can find the per-method limits in the API Rate Limits documentation.
Account endpoint
operation | Description | Headers | Result |
---|---|---|---|
| get account info |
|
BlockStorages endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list all the Block Storage volumes available on your account |
| |
| show information about a Block Storage volume |
|
|
| show information about a Block Storage volume by name |
|
|
| retrieve the snapshots that have been created from a volume |
|
|
| create a new volume |
|
|
| delete a Block Storage volume, destroying all data and removing it from your account |
|
|
| delete a Block Storage volume by name |
|
|
| attach a Block Storage volume to a Droplet |
|
|
| attach a Block Storage volume to a Droplet by name |
|
|
| detach a Block Storage volume from a Droplet |
|
|
| detach a Block Storage volume from a Droplet by name |
|
|
| resize a Block Storage volume |
|
|
| retrieve all actions that have been executed on a volume |
|
|
Droplets endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list all Droplets in your account |
| |
| show an individual droplet |
|
|
| create a new Droplet |
|
|
| create multiple Droplets |
|
|
| delete a Droplet, |
|
|
| enable backups on an existing Droplet |
|
|
| disable backups on an existing Droplet |
|
|
| enable IPv6 networking on an existing Droplet |
|
|
| enable private networking on an existing Droplet |
|
|
| reboot a Droplet |
|
|
| power cycle a Droplet |
|
|
| shutdown a Droplet |
|
|
| power off a Droplet |
|
|
| power on a Droplet |
|
|
| shutdown a Droplet |
|
|
| reset the password for a Droplet |
|
|
| resize a Droplet |
|
|
| rebuild a Droplet |
|
|
| rename a Droplet |
|
|
| change the kernel of a Droplet |
|
|
| snapshot a Droplet |
|
|
| tag a Droplet |
|
|
| untag a Droplet |
|
|
| retrieve a list of all kernels available to a Droplet |
|
|
| retrieve the snapshots that have been created from a Droplet |
|
|
| retrieve any backups associated with a Droplet |
|
|
| retrieve all actions that have been executed on a Droplet |
|
|
| retrieve a list of droplets that are running on the same physical server |
|
|
| retrieve a list of any droplets that are running on the same physical hardware |
|
Images endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list images available on your account |
|
|
| retrieve only the private images of a user |
| |
| retrieve all actions that have been executed on an Image |
|
|
| retrieve information about an image (public or private) by id |
|
|
| retrieve information about a public image by slug |
|
|
| update an image |
|
|
| delete an image |
|
|
| transfer an image to another region |
|
|
| convert an image, for example, a backup to a snapshot |
|
|
Snapshots endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list all the snapshots available on your account |
|
|
| retrieve information about a snapshot |
|
|
| delete an snapshot |
|
|
Keys endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list all the keys in your account |
| |
| retrieve information about a key by id |
|
|
| retrieve information about a key by fingerprint |
|
|
| update a key by id |
|
|
| update a key by fingerprint |
|
|
| delete a key by id |
|
|
| delete a key by fingerprint |
|
|
Regions endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list all the regions that are available |
|
Sizes endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list all the sizes that are available |
|
Floating IPs endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list all the Floating IPs available on your account |
| |
| create a new Floating IP assigned to a Droplet |
|
|
| create a new Floating IP assigned to a Region |
|
|
| retrieve information about a Floating IP |
|
|
| delete a Floating IP and remove it from your account |
|
|
| assign a Floating IP to a Droplet |
|
|
| un-assign a Floating IP |
|
|
| retrieve all actions that have been executed on a Floating IP |
|
|
Tags endpoint
operation | Description | Headers | Result |
---|---|---|---|
| list all of your tags |
| |
| create a Tag |
|
|
| retrieve an individual tag |
|
|
| delete a tag |
|
|
| update a tag |
|
|
Examples
from("direct:getAccountInfo")
.setHeader(DigitalOceanConstants.OPERATION, constant(DigitalOceanOperations.get))
.to("digitalocean:account?oAuthToken=XXXXXX")
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")
from("direct:getDroplets")
.setHeader(DigitalOceanConstants.OPERATION, constant("list"))
.to("digitalocean:droplets?oAuthToken=XXXXXX")
from("direct:getDroplet")
.setHeader(DigitalOceanConstants.OPERATION, constant("get"))
.setHeader(DigitalOceanConstants.ID, 34772987)
.to("digitalocean:droplet?oAuthToken=XXXXXX")
from("direct:shutdown")
.setHeader(DigitalOceanConstants.ID, 34772987)
.to("digitalocean:droplet?operation=shutdown&oAuthToken=XXXXXX")
Spring Boot Auto-Configuration
When using digitalocean with Spring Boot make sure to use the following Maven dependency to have support for auto configuration:
<dependency>
<groupId>org.apache.camel.springboot</groupId>
<artifactId>camel-digitalocean-starter</artifactId>
<version>x.x.x</version>
<!-- use the same version as your Camel core version -->
</dependency>
The component supports 3 options, which are listed below.
Name | Description | Default | Type |
---|---|---|---|
Whether autowiring is enabled. This is used for automatic autowiring options (the option must be marked as autowired) by looking up in the registry to find if there is a single instance of matching type, which then gets configured on the component. This can be used for automatic configuring JDBC data sources, JMS connection factories, AWS Clients, etc. | true | Boolean | |
Whether to enable auto configuration of the digitalocean component. This is enabled by default. | Boolean | ||
Whether the producer should be started lazy (on the first message). By starting lazy you can use this to allow CamelContext and routes to startup in situations where a producer may otherwise fail during starting and cause the route to fail being started. By deferring this startup to be lazy then the startup failure can be handled during routing messages via Camel’s routing error handlers. Beware that when the first message is processed then creating and starting the producer may take a little time and prolong the total processing time of the processing. | false | Boolean |