[[openstack-swift-component]]
= OpenStack Swift Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-openstack/src/main/docs/openstack-swift-component.adoc
:docTitle: OpenStack Swift
:artifactId: camel-openstack
:description: Access OpenStack Swift object/blob store.
:since: 2.19
:supportLevel: Stable
:component-header: Only producer is supported
//Manually maintained attributes
:group: OpenStack

*Since Camel {since}*

*{component-header}*

The Openstack Swift component allows messages to be sent to an OpenStack object storage 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-swift://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 Swift component supports 2 options, which are listed below.



[width="100%",cols="2,5,^1,2",options="header"]
|===
| 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
|===
// component options: END

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

----
openstack-swift: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. The value can be one of: V2, V3 | 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 Swift subsystem. The value can be one of: objects, containers |  | 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



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

== containers

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

|`create` | Create new container.

|`get` | Get the container.

|`getAll` | Get all containers.

|`update` | Update the container.

|`delete` | Delete the container.

|`getMetadata` | Get metadata.

|`createUpdateMetadata` | Create/update metadata.

|`deleteMetadata` | Delete metadata.
|=========================================================================

=== Message headers evaluated by the Volume producer

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

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

|`name` |`String` |The container name.

|`X-Container-Meta-` |`Map` | Container metadata prefix.

|`X-Versions-Location` |`String` | Versions location.

|`X-Container-Read` |`String` |  ACL - container read.

|`X-Container-Write` |`String` | ACL - container write.

|`limit` | `Integer` | List options - limit.

|`marker` | `String` | List options - marker.

|`end_marker` | `String` | List options - end marker.

|`delimiter` | `Character` | List options - delimiter.

|`path` | `String` | List options - path.

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

If you need more precise container settings you can create new object of the type *org.openstack4j.model.storage.object.options.CreateUpdateContainerOptions* (in case of create or update operation) 
or *org.openstack4j.model.storage.object.options.ContainerListOptions* for listing containers and send in the message body.

== objects

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

|`create` | Create new object.

|`get` | Get the object.

|`getAll` | Get all objects.

|`update` | Get update the object.

|`delete` | Delete the object.

|`getMetadata` | Get metadata.

|`createUpdateMetadata` | Create/update metadata.

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

=== Message headers evaluated by the Object producer

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

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

|`containerName` |`String` |The container name.

|`objectName` |`String` |The object name.

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


include::camel-spring-boot::page$openstack-starter.adoc[]
