OpenStack Keystone

Since Camel 2.19

Only producer is supported

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

<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

openstack-keystone://hosturl[?options]

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

URI Options

The OpenStack Keystone component supports 2 options, which are listed below.

Name Description Default Type

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

basicPropertyBinding (advanced)

Whether the component should use basic property binding (Camel 2.x) or the newer property binding with additional capabilities

false

boolean

The OpenStack Keystone endpoint is configured using URI syntax:

openstack-keystone:host

with the following path and query parameters:

Path Parameters (1 parameters):

Name Description Default Type

host

Required OpenStack host url

String

Query Parameters (10 parameters):

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. The value can be one of: regions, domains, projects, users, groups

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

Usage

You can use following settings for each subsystem:

domains

Operations you can perform with the Domain producer

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

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

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

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

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

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

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

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

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

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.

Spring Boot Auto-Configuration

When using openstack 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-openstack-starter</artifactId>
  <version>x.x.x</version>
  <!-- use the same version as your Camel core version -->
</dependency>

The component supports 18 options, which are listed below.

Name Description Default Type

camel.component.openstack-cinder.autowired-enabled

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

camel.component.openstack-cinder.enabled

Whether to enable auto configuration of the openstack-cinder component. This is enabled by default.

Boolean

camel.component.openstack-cinder.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

camel.component.openstack-glance.autowired-enabled

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

camel.component.openstack-glance.enabled

Whether to enable auto configuration of the openstack-glance component. This is enabled by default.

Boolean

camel.component.openstack-glance.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

camel.component.openstack-keystone.autowired-enabled

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

camel.component.openstack-keystone.enabled

Whether to enable auto configuration of the openstack-keystone component. This is enabled by default.

Boolean

camel.component.openstack-keystone.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

camel.component.openstack-neutron.autowired-enabled

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

camel.component.openstack-neutron.enabled

Whether to enable auto configuration of the openstack-neutron component. This is enabled by default.

Boolean

camel.component.openstack-neutron.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

camel.component.openstack-nova.autowired-enabled

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

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

camel.component.openstack-swift.autowired-enabled

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

camel.component.openstack-swift.enabled

Whether to enable auto configuration of the openstack-swift component. This is enabled by default.

Boolean

camel.component.openstack-swift.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