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

*Available as of Camel version 2.19*

The Openstack Keystone component allows messages to be sent to an OpenStack identity services.

*The openstack-keystone component supports only Identity API v3!*

== 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-keystone://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 Keystone 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 Keystone endpoint is configured using URI syntax:

----
openstack-keystone: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 (10 parameters):


[width="100%",cols="2,5,^1,2",options="header"]
|===
| Name | Description | Default | Type
| *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 Keystone 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-keystone.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-keystone.enabled* | Enable openstack-keystone component | true | Boolean
|===
// spring-boot-auto-configure options: END



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

== domains

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

|`create` | Create new domain.

|`get` | Get the domain.

|`getAll` | Get all domains.

|`update` | Update the domain.

|`delete` | Delete the domain.
|=========================================================================

=== Message headers evaluated by the Domain producer

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

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

|`ID` | `String` | ID of the domain.

|`name` |`String` |The domain name.

|`description` |`String` | Domain description.
|=========================================================================

If you need more precise domain settings you can create new object of the type *org.openstack4j.model.identity.v3.Domain* and send in the message body.

== groups

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

|`create` | Create new group.

|`get` | Get the group.

|`getAll` | Get all groups.

|`update` | Update the group.

|`delete` | Delete the group.

|`addUserToGroup` | Add the user to the group.

|`checkUserGroup` | Check whether is the user in the group.

|`removeUserFromGroup` | Remove the user from the group.
|=========================================================================

=== Message headers evaluated by the Group producer

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

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

|`groupId` | `String` | ID of the group.

|`name` |`String` |The group name.

|`userId` | `String` | ID of the user.

|`domainId` | `String` | ID of the domain.

|`description` |`String` | Group description.
|=========================================================================

If you need more precise group settings you can create new object of the type *org.openstack4j.model.identity.v3.Group* and send in the message body.

== projects

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

|`create` | Create new project.

|`get` | Get the project.

|`getAll` | Get all projects.

|`update` | Update the project.

|`delete` | Delete the project.
|=========================================================================

=== Message headers evaluated by the Project producer

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

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

|`ID` | `String` | ID of the project.

|`name` |`String` |The project name.

|`description` |`String` | Project description.

|`domainId` | `String` | ID of the domain.

|`parentId` | `String` | The parent project ID.
|=========================================================================

If you need more precise project settings you can create new object of the type *org.openstack4j.model.identity.v3.Project* and send in the message body.

== regions

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

|`create` | Create new region.

|`get` | Get the region.

|`getAll` | Get all regions.

|`update` | Update the region.

|`delete` | Delete the region.
|=========================================================================

=== Message headers evaluated by the Region producer

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

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

|`ID` | `String` | ID of the region.

|`description` |`String` | Region description.
|=========================================================================

If you need more precise region settings you can create new object of the type *org.openstack4j.model.identity.v3.Region* and send in the message body.

== users

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

|`create` | Create new user.

|`get` | Get the user.

|`getAll` | Get all users.

|`update` | Update the user.

|`delete` | Delete the user.
|=========================================================================

=== Message headers evaluated by the User producer

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

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

|`ID` | `String` | ID of the user.

|`name` |`String` |The user name.

|`description` |`String` | User description.

|`domainId` | `String` | ID of the domain.

|`password` | `String`| User's password.

|`email` | `String`| User's email.
|=========================================================================

If you need more precise user settings you can create new object of the type *org.openstack4j.model.identity.v3.User* and send in the message body.

