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

*Available as of Camel version 2.19*

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 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 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 | 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 |  | 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-swift.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-swift.enabled* | Enable openstack-swift component | true | Boolean
|===
// spring-boot-auto-configure 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.

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

