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

*Available as of Camel version 2.19*

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 1 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
|===
// 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</groupId>
  <artifactId>camel-openstack-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.



[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.enabled* | Enable openstack-nova component | true | 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.

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

