[[openstack-nova-component]]
= OpenStack Nova Component
:page-source: components/camel-openstack/src/main/docs/openstack-nova-component.adoc

*Since Camel 2.19*

// HEADER START
*Only producer is supported*
// HEADER END

The Openstack Nova component allows messages to be sent to an OpenStack compute services.

== Dependencies

Maven users will need to add the following dependency to their pom.xml.

*pom.xml*

[source,xml]
---------------------------------------
<dependency>
    <groupId>org.apache.camel</groupId>
    <artifactId>camel-openstack</artifactId>
    <version>${camel-version}</version>
</dependency>
---------------------------------------

where `${camel-version`} must be replaced by the actual version of Camel.


== URI Format

[source,java]
----------------------------
openstack-nova://hosturl[?options]
----------------------------

You can append query options to the URI in the following format
`?options=value&option2=value&...`

== URI Options

// component options: START
The OpenStack Nova component supports 3 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *basicPropertyBinding* (advanced) | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *lazyStartProducer* (producer) | 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
| *bridgeErrorHandler* (consumer) | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | boolean
|===
// component options: END

// endpoint options: START
The OpenStack Nova endpoint is configured using URI syntax:

----
openstack-nova:host
----

with the following path and query parameters:

=== Path Parameters (1 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *host* | *Required* OpenStack host url |  | String
|===


=== Query Parameters (11 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *apiVersion* (producer) | OpenStack API version | V3 | String
| *config* (producer) | OpenStack configuration |  | Config
| *domain* (producer) | Authentication domain | default | String
| *lazyStartProducer* (producer) | 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
| *operation* (producer) | The operation to do |  | String
| *password* (producer) | *Required* OpenStack password |  | String
| *project* (producer) | *Required* The project ID |  | String
| *subsystem* (producer) | *Required* OpenStack Nova subsystem |  | String
| *username* (producer) | *Required* OpenStack username |  | String
| *basicPropertyBinding* (advanced) | Whether the endpoint should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | boolean
| *synchronous* (advanced) | Sets whether synchronous processing should be strictly used, or Camel is allowed to use asynchronous processing (if supported). | false | boolean
|===
// endpoint options: END
// spring-boot-auto-configure options: START
== Spring Boot Auto-Configuration

When using Spring Boot make sure to use the following Maven dependency to have support for auto configuration:

[source,xml]
----
<dependency>
  <groupId>org.apache.camel.springboot</groupId>
  <artifactId>camel-openstack-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>
----


The component supports 4 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *camel.component.openstack-nova.basic-property-binding* | Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities | false | Boolean
| *camel.component.openstack-nova.bridge-error-handler* | Allows for bridging the consumer to the Camel routing Error Handler, which mean any exceptions occurred while the consumer is trying to pickup incoming messages, or the likes, will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions, that will be logged at WARN or ERROR level and ignored. | false | Boolean
| *camel.component.openstack-nova.enabled* | Whether to enable auto configuration of the openstack-nova component. This is enabled by default. |  | Boolean
| *camel.component.openstack-nova.lazy-start-producer* | 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
|===
// spring-boot-auto-configure options: END



== Usage
You can use following settings for each subsystem:

== flavors

=== Operations you can perform with the Flavor producer
[width="100%",cols="20%,80%",options="header",]
|=========================================================================
|Operation | Description

|`create` | Create new flavor.

|`get` | Get the flavor.

|`getAll` | Get all flavors.

|`delete` | Delete the flavor.
|=========================================================================

=== Message headers evaluated by the Flavor producer

[width="100%",cols="10%,10%,80%",options="header",]
|=========================================================================
|Header |Type |Description

|`operation` | `String` | The operation to perform.

|`ID` | `String` | ID of the flavor.

|`name` |`String` |The flavor name.

|`VCPU` |`Integer` |The number of flavor VCPU.

|`ram` |`Integer` |Size of RAM.

|`disk` |`Integer` |Size of disk.

|`swap` |`Integer` |Size of swap.

|`rxtxFactor` |`Integer` |Rxtx Factor.
|=========================================================================

If you need more precise flavor settings you can create new object of the type *org.openstack4j.model.compute.Flavor* and send in the message body.

== servers

=== Operations you can perform with the Server producer
[width="100%",cols="20%,80%",options="header",]
|=========================================================================
|Operation | Description

|`create` | Create new server.

|`createSnapshot` | Create snapshot of the server.

|`get` | Get the server.

|`getAll` | Get all servers.

|`delete` | Delete the server.

|`action` | Perform an action on the server.
|=========================================================================

=== Message headers evaluated by the Server producer

[width="100%",cols="10%,10%,80%",options="header",]
|=========================================================================
|Header |Type |Description

|`operation` | `String` | The operation to perform.

|`ID` | `String` | ID of the server.

|`name` |`String` |The server name.

|`ImageId` |`String` | The Image ID.

|`FlavorId` |`String` |The ID of flavor which will be used.

|`KeypairName` |`String` | The Keypair name.

|`NetworkId` |`String` | The network ID.

|`AdminPassword` |`String` | Admin password of the new server.

|`action` | `org.openstack4j.model.compute.Action` | An action to perform.
|=========================================================================

If you need more precise server settings you can create new object of the type *org.openstack4j.model.compute.ServerCreate* and send in the message body.

== keypairs

=== Operations you can perform with the Keypair producer
[width="100%",cols="20%,80%",options="header",]
|=========================================================================
|Operation | Description

|`create` | Create new keypair.

|`get` | Get the keypair.

|`getAll` | Get all keypairs.

|`delete` | Delete the keypair.

|=========================================================================

=== Message headers evaluated by the Keypair producer

[width="100%",cols="10%,10%,80%",options="header",]
|=========================================================================
|Header |Type |Description

|`operation` | `String` | The operation to perform.

|`name` |`String` |The keypair name.

|=========================================================================

