[[openstack-glance-component]]
= OpenStack Glance Component
//THIS FILE IS COPIED: EDIT THE SOURCE FILE:
:page-source: components/camel-openstack/src/main/docs/openstack-glance-component.adoc
:docTitle: OpenStack Glance
:artifactId: camel-openstack
:description: Manage VM images and metadata definitions in OpenStack Glance.
:since: 2.19
:supportLevel: Stable
:component-header: Only producer is supported
//Manually maintained attributes
:group: OpenStack

*Since Camel {since}*

*{component-header}*

The Openstack Glance component allows messages to be sent to an OpenStack image 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-glance://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 Glance 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 Glance endpoint is configured using URI syntax:

----
openstack-glance: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
| *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
| *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

[width="100%",cols="20%,80%",options="header",]
|=========================================================================
|Operation | Description

|`reserve` | Reserve image.

|`create` | Create new image.

|`update` | Update image.

|`upload` | Upload image.

|`get` | Get the image.

|`getAll` | Get all image.

|`delete` | Delete the image.
|=========================================================================

=== Message headers evaluated by the Glance 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.

|`diskFormat` |`org.openstack4j.model.image.DiskFormat` |The number of flavor VCPU.

|`containerFormat` |`org.openstack4j.model.image.ContainerFormat` |Size of RAM.

|`owner` |`String` | Image owner.

|`isPublic` |`Boolean` | Is public.

|`minRam` |`Long` | Minimum ram.

|`minDisk` |`Long` | Minimum disk.

|`size` |`Long` | Size.

|`checksum` |`String` | Checksum.

|`properties` | `Map` | Image properties.
|=========================================================================


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