You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ac...@apache.org on 2016/12/17 11:53:48 UTC

[09/17] camel git commit: CAMEL-9748: camel-openstack bug fix

CAMEL-9748: camel-openstack bug fix

- bug fix
- rebuild spring-boot starters
- update doc


Project: http://git-wip-us.apache.org/repos/asf/camel/repo
Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/04a90361
Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/04a90361
Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/04a90361

Branch: refs/heads/master
Commit: 04a9036114e57985a5f2bcb15c2be7b91d6f51a3
Parents: 82a3db1
Author: Jan Bouska <jb...@redhat.com>
Authored: Sat Dec 3 19:30:36 2016 +0100
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Sat Dec 17 12:25:15 2016 +0100

----------------------------------------------------------------------
 .../camel-openstack-starter/pom.xml             |  8 +---
 .../CinderComponentAutoConfiguration.java       | 35 +++++++++++++++
 .../GlanceComponentAutoConfiguration.java       | 35 +++++++++++++++
 .../KeystoneComponentAutoConfiguration.java     | 35 +++++++++++++++
 .../NeutronComponentAutoConfiguration.java      | 35 +++++++++++++++
 .../NovaComponentAutoConfiguration.java         | 35 +++++++++++++++
 .../camel/component/springboot/openstack.java   | 45 --------------------
 ...dditional-spring-configuration-metadata.json | 40 +++++++++++++++++
 .../main/resources/META-INF/spring.factories    |  2 +
 .../main/docs/openstack-cinder-component.adoc   | 12 ++++--
 .../main/docs/openstack-glance-component.adoc   | 10 +++--
 .../main/docs/openstack-keystone-component.adoc | 10 +++--
 .../main/docs/openstack-neutron-component.adoc  | 12 ++++--
 .../src/main/docs/openstack-nova-component.adoc | 10 +++--
 .../main/docs/openstack-swift-component.adoc    | 12 ++++--
 .../openstack/cinder/CinderEndpoint.java        |  2 +-
 .../openstack/glance/GlanceEndpoint.java        |  3 +-
 .../openstack/keystone/KeystoneEndpoint.java    |  2 +-
 .../keystone/producer/DomainProducer.java       |  1 -
 .../keystone/producer/GroupProducer.java        |  2 +-
 .../keystone/producer/ProjectProducer.java      |  2 +-
 .../keystone/producer/UserProducer.java         |  2 +-
 .../openstack/neutron/NeutronConstants.java     |  3 ++
 .../openstack/neutron/NeutronEndpoint.java      |  5 +--
 .../neutron/producer/RouterProducer.java        |  1 -
 .../neutron/producer/SubnetProducer.java        | 17 +++++++-
 .../openstack/swift/SwiftEndpoint.java          |  5 +--
 .../org/apache/camel/component/openstack-swift  |  2 +-
 .../openstack/neutron/SubnetProducerTest.java   |  2 +
 components/readme.adoc                          | 18 ++++++++
 docs/user-manual/en/SUMMARY.md                  | 35 ++++-----------
 31 files changed, 323 insertions(+), 115 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/pom.xml
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/pom.xml b/components-starter/camel-openstack-starter/pom.xml
index d62b54b..1c48ce6 100644
--- a/components-starter/camel-openstack-starter/pom.xml
+++ b/components-starter/camel-openstack-starter/pom.xml
@@ -36,13 +36,8 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-openstack</artifactId>
       <version>${project.version}</version>
-      <exclusions>
-        <exclusion>
-          <groupId>commons-logging</groupId>
-          <artifactId>commons-logging</artifactId>
-        </exclusion>
-      </exclusions>
     </dependency>
+    <!--START OF GENERATED CODE-->
     <dependency>
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-core-starter</artifactId>
@@ -51,5 +46,6 @@
       <groupId>org.apache.camel</groupId>
       <artifactId>camel-spring-boot-starter</artifactId>
     </dependency>
+    <!--END OF GENERATED CODE-->
   </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/cinder/springboot/CinderComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/cinder/springboot/CinderComponentAutoConfiguration.java b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/cinder/springboot/CinderComponentAutoConfiguration.java
index 8b7ac65..4defed1 100644
--- a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/cinder/springboot/CinderComponentAutoConfiguration.java
+++ b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/cinder/springboot/CinderComponentAutoConfiguration.java
@@ -19,20 +19,30 @@ package org.apache.camel.component.openstack.cinder.springboot;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.openstack.cinder.CinderComponent;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
 
 /**
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
 @Configuration
 @ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(CinderComponentAutoConfiguration.Condition.class)
 @AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
 public class CinderComponentAutoConfiguration {
 
+    @Lazy
     @Bean(name = "openstack-cinder-component")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(CinderComponent.class)
@@ -42,4 +52,29 @@ public class CinderComponentAutoConfiguration {
         component.setCamelContext(camelContext);
         return component;
     }
+
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.openstack-cinder");
+            if (isEnabled(conditionContext,
+                    "camel.component.openstack-cinder.", groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/glance/springboot/GlanceComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/glance/springboot/GlanceComponentAutoConfiguration.java b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/glance/springboot/GlanceComponentAutoConfiguration.java
index 9bae60b..a404e64 100644
--- a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/glance/springboot/GlanceComponentAutoConfiguration.java
+++ b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/glance/springboot/GlanceComponentAutoConfiguration.java
@@ -19,20 +19,30 @@ package org.apache.camel.component.openstack.glance.springboot;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.openstack.glance.GlanceComponent;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
 
 /**
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
 @Configuration
 @ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(GlanceComponentAutoConfiguration.Condition.class)
 @AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
 public class GlanceComponentAutoConfiguration {
 
+    @Lazy
     @Bean(name = "openstack-glance-component")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(GlanceComponent.class)
@@ -42,4 +52,29 @@ public class GlanceComponentAutoConfiguration {
         component.setCamelContext(camelContext);
         return component;
     }
+
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.openstack-glance");
+            if (isEnabled(conditionContext,
+                    "camel.component.openstack-glance.", groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/keystone/springboot/KeystoneComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/keystone/springboot/KeystoneComponentAutoConfiguration.java b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/keystone/springboot/KeystoneComponentAutoConfiguration.java
index a3f9b12..ac5053e 100644
--- a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/keystone/springboot/KeystoneComponentAutoConfiguration.java
+++ b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/keystone/springboot/KeystoneComponentAutoConfiguration.java
@@ -19,20 +19,30 @@ package org.apache.camel.component.openstack.keystone.springboot;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.openstack.keystone.KeystoneComponent;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
 
 /**
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
 @Configuration
 @ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(KeystoneComponentAutoConfiguration.Condition.class)
 @AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
 public class KeystoneComponentAutoConfiguration {
 
+    @Lazy
     @Bean(name = "openstack-keystone-component")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(KeystoneComponent.class)
@@ -42,4 +52,29 @@ public class KeystoneComponentAutoConfiguration {
         component.setCamelContext(camelContext);
         return component;
     }
+
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.openstack-keystone");
+            if (isEnabled(conditionContext,
+                    "camel.component.openstack-keystone.", groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/neutron/springboot/NeutronComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/neutron/springboot/NeutronComponentAutoConfiguration.java b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/neutron/springboot/NeutronComponentAutoConfiguration.java
index 2acd6a3..8d9d54c 100644
--- a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/neutron/springboot/NeutronComponentAutoConfiguration.java
+++ b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/neutron/springboot/NeutronComponentAutoConfiguration.java
@@ -19,20 +19,30 @@ package org.apache.camel.component.openstack.neutron.springboot;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.openstack.neutron.NeutronComponent;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
 
 /**
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
 @Configuration
 @ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(NeutronComponentAutoConfiguration.Condition.class)
 @AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
 public class NeutronComponentAutoConfiguration {
 
+    @Lazy
     @Bean(name = "openstack-neutron-component")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(NeutronComponent.class)
@@ -42,4 +52,29 @@ public class NeutronComponentAutoConfiguration {
         component.setCamelContext(camelContext);
         return component;
     }
+
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.openstack-neutron");
+            if (isEnabled(conditionContext,
+                    "camel.component.openstack-neutron.", groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/nova/springboot/NovaComponentAutoConfiguration.java
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/nova/springboot/NovaComponentAutoConfiguration.java b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/nova/springboot/NovaComponentAutoConfiguration.java
index 6a3e8e0..59f6f9a 100644
--- a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/nova/springboot/NovaComponentAutoConfiguration.java
+++ b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/openstack/nova/springboot/NovaComponentAutoConfiguration.java
@@ -19,20 +19,30 @@ package org.apache.camel.component.openstack.nova.springboot;
 import org.apache.camel.CamelContext;
 import org.apache.camel.component.openstack.nova.NovaComponent;
 import org.springframework.boot.autoconfigure.AutoConfigureAfter;
+import org.springframework.boot.autoconfigure.condition.ConditionMessage;
+import org.springframework.boot.autoconfigure.condition.ConditionOutcome;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.autoconfigure.condition.SpringBootCondition;
+import org.springframework.boot.bind.RelaxedPropertyResolver;
 import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.ConditionContext;
+import org.springframework.context.annotation.Conditional;
 import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.core.type.AnnotatedTypeMetadata;
 
 /**
  * Generated by camel-package-maven-plugin - do not edit this file!
  */
 @Configuration
 @ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
+@Conditional(NovaComponentAutoConfiguration.Condition.class)
 @AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
 public class NovaComponentAutoConfiguration {
 
+    @Lazy
     @Bean(name = "openstack-nova-component")
     @ConditionalOnClass(CamelContext.class)
     @ConditionalOnMissingBean(NovaComponent.class)
@@ -42,4 +52,29 @@ public class NovaComponentAutoConfiguration {
         component.setCamelContext(camelContext);
         return component;
     }
+
+    public static class Condition extends SpringBootCondition {
+        @Override
+        public ConditionOutcome getMatchOutcome(
+                ConditionContext conditionContext,
+                AnnotatedTypeMetadata annotatedTypeMetadata) {
+            boolean groupEnabled = isEnabled(conditionContext,
+                    "camel.component.", true);
+            ConditionMessage.Builder message = ConditionMessage
+                    .forCondition("camel.component.openstack-nova");
+            if (isEnabled(conditionContext, "camel.component.openstack-nova.",
+                    groupEnabled)) {
+                return ConditionOutcome.match(message.because("enabled"));
+            }
+            return ConditionOutcome.noMatch(message.because("not enabled"));
+        }
+
+        private boolean isEnabled(
+                org.springframework.context.annotation.ConditionContext context,
+                java.lang.String prefix, boolean defaultValue) {
+            RelaxedPropertyResolver resolver = new RelaxedPropertyResolver(
+                    context.getEnvironment(), prefix);
+            return resolver.getProperty("enabled", Boolean.class, defaultValue);
+        }
+    }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/springboot/openstack.java
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/springboot/openstack.java b/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/springboot/openstack.java
deleted file mode 100644
index d870224..0000000
--- a/components-starter/camel-openstack-starter/src/main/java/org/apache/camel/component/springboot/openstack.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.camel.component.springboot;
-
-import org.apache.camel.CamelContext;
-import org.apache.camel.component.openstack;
-import org.springframework.boot.autoconfigure.AutoConfigureAfter;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-
-/**
- * Generated by camel-package-maven-plugin - do not edit this file!
- */
-@Configuration
-@ConditionalOnBean(type = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-@AutoConfigureAfter(name = "org.apache.camel.spring.boot.CamelAutoConfiguration")
-public class openstack {
-
-    @Bean(name = "openstack-swift-component")
-    @ConditionalOnClass(CamelContext.class)
-    @ConditionalOnMissingBean(openstack.class)
-    public openstack configureopenstack(CamelContext camelContext)
-            throws Exception {
-        openstack component = new openstack();
-        component.setCamelContext(camelContext);
-        return component;
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json b/components-starter/camel-openstack-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
new file mode 100644
index 0000000..c946aba
--- /dev/null
+++ b/components-starter/camel-openstack-starter/src/main/resources/META-INF/additional-spring-configuration-metadata.json
@@ -0,0 +1,40 @@
+{
+  "properties": [
+    {
+      "defaultValue": true,
+      "name": "camel.component.openstack-swift.enabled",
+      "description": "Enable openstack-swift component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.openstack-glance.enabled",
+      "description": "Enable openstack-glance component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.openstack-neutron.enabled",
+      "description": "Enable openstack-neutron component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.openstack-nova.enabled",
+      "description": "Enable openstack-nova component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.openstack-cinder.enabled",
+      "description": "Enable openstack-cinder component",
+      "type": "java.lang.Boolean"
+    },
+    {
+      "defaultValue": true,
+      "name": "camel.component.openstack-keystone.enabled",
+      "description": "Enable openstack-keystone component",
+      "type": "java.lang.Boolean"
+    }
+  ]
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components-starter/camel-openstack-starter/src/main/resources/META-INF/spring.factories
----------------------------------------------------------------------
diff --git a/components-starter/camel-openstack-starter/src/main/resources/META-INF/spring.factories b/components-starter/camel-openstack-starter/src/main/resources/META-INF/spring.factories
index 12490bd..f3943fc 100644
--- a/components-starter/camel-openstack-starter/src/main/resources/META-INF/spring.factories
+++ b/components-starter/camel-openstack-starter/src/main/resources/META-INF/spring.factories
@@ -16,6 +16,7 @@
 #
 
 org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
+org.apache.camel.component.openstack.swift.springboot.SwiftComponentAutoConfiguration,\
 org.apache.camel.component.openstack.glance.springboot.GlanceComponentAutoConfiguration,\
 org.apache.camel.component.openstack.neutron.springboot.NeutronComponentAutoConfiguration,\
 org.apache.camel.component.openstack.nova.springboot.NovaComponentAutoConfiguration,\
@@ -25,3 +26,4 @@ org.apache.camel.component.openstack.keystone.springboot.KeystoneComponentAutoCo
 
 
 
+

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc b/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
index a80a2b6..a9bf942 100644
--- a/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
@@ -47,21 +47,25 @@ The OpenStack-Cinder component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Cinder component supports 9 endpoint options which are listed below:
+The OpenStack-Cinder component supports 13 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
 |=======================================================================
 | Name | Group | Default | Java Type | Description
 | host | common |  | String | *Required* OpenStack host url
+| apiVersion | common | v3 | String | OpenStack API version
+| config | common |  | Config | OpenStack configuration
 | domain | common | default | String | Authentication domain
 | operation | common |  | String | The operation to do
 | password | common |  | String | *Required* OpenStack password
 | project | common |  | String | *Required* The project ID
-| subsystem | common |  | String | *Required* OpenStack Nova subsystem
+| subsystem | common |  | String | *Required* OpenStack Cinder subsystem
 | username | common |  | String | *Required* OpenStack username
-| config | common | | org.openstack4j.core.transport.Config | Openstack client configuration
-| apiVersion | common | v3 | String | The OpenStack API version. Possible values: v2, v3
+| bridgeErrorHandler | consumer | false | boolean | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exceptionHandler | consumer (advanced) |  | ExceptionHandler | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exchangePattern | consumer (advanced) |  | ExchangePattern | Sets the exchange pattern when the consumer creates an exchange.
+| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/docs/openstack-glance-component.adoc b/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
index 757e6e7..528ae17 100644
--- a/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
@@ -47,20 +47,24 @@ The OpenStack-Glance component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Glance component supports 9 endpoint options which are listed below:
+The OpenStack-Glance component supports 12 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
 |=======================================================================
 | Name | Group | Default | Java Type | Description
 | host | common |  | String | *Required* OpenStack host url
+| apiVersion | common | v3 | String | OpenStack API version
+| config | common |  | Config | OpenStack configuration
 | domain | common | default | String | Authentication domain
 | operation | common |  | String | The operation to do
 | password | common |  | String | *Required* OpenStack password
 | project | common |  | String | *Required* The project ID
 | username | common |  | String | *Required* OpenStack username
-| config | common | | org.openstack4j.core.transport.Config | Openstack client configuration
-| apiVersion | common | v3 | String | The OpenStack API version. Possible values: v2, v3
+| bridgeErrorHandler | consumer | false | boolean | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exceptionHandler | consumer (advanced) |  | ExceptionHandler | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exchangePattern | consumer (advanced) |  | ExchangePattern | Sets the exchange pattern when the consumer creates an exchange.
+| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc b/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
index e76373f..0d02ea6 100644
--- a/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
@@ -49,20 +49,24 @@ The OpenStack-Keystone component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Keystone component supports 8 endpoint options which are listed below:
+The OpenStack-Keystone component supports 12 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
 |=======================================================================
 | Name | Group | Default | Java Type | Description
 | host | common |  | String | *Required* OpenStack host url
+| config | common |  | Config | OpenStack configuration
 | domain | common | default | String | Authentication domain
 | operation | common |  | String | The operation to do
 | password | common |  | String | *Required* OpenStack password
 | project | common |  | String | *Required* The project ID
-| subsystem | common |  | String | *Required* OpenStack Nova subsystem
+| subsystem | common |  | String | *Required* OpenStack Keystone subsystem
 | username | common |  | String | *Required* OpenStack username
-| config | common | | org.openstack4j.core.transport.Config | Openstack client configuration
+| bridgeErrorHandler | consumer | false | boolean | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exceptionHandler | consumer (advanced) |  | ExceptionHandler | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exchangePattern | consumer (advanced) |  | ExchangePattern | Sets the exchange pattern when the consumer creates an exchange.
+| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc b/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
index 9f080cc..c746f70 100644
--- a/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
@@ -47,21 +47,25 @@ The OpenStack-Neutron component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Neutron component supports 9 endpoint options which are listed below:
+The OpenStack-Neutron component supports 13 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
 |=======================================================================
 | Name | Group | Default | Java Type | Description
 | host | common |  | String | *Required* OpenStack host url
+| apiVersion | common | v3 | String | OpenStack API version
+| config | common |  | Config | OpenStack configuration
 | domain | common | default | String | Authentication domain
 | operation | common |  | String | The operation to do
 | password | common |  | String | *Required* OpenStack password
 | project | common |  | String | *Required* The project ID
-| subsystem | common |  | String | *Required* OpenStack Nova subsystem
+| subsystem | common |  | String | *Required* OpenStack Neutron subsystem
 | username | common |  | String | *Required* OpenStack username
-| config | common | | org.openstack4j.core.transport.Config | Openstack client configuration
-| apiVersion | common | v3 | String | The OpenStack API version. Possible values: v2, v3
+| bridgeErrorHandler | consumer | false | boolean | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exceptionHandler | consumer (advanced) |  | ExceptionHandler | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exchangePattern | consumer (advanced) |  | ExchangePattern | Sets the exchange pattern when the consumer creates an exchange.
+| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/docs/openstack-nova-component.adoc b/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
index ea5807f..ef7daed 100644
--- a/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
@@ -47,21 +47,25 @@ The OpenStack-Nova component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Nova component supports 9 endpoint options which are listed below:
+The OpenStack-Nova component supports 13 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
 |=======================================================================
 | Name | Group | Default | Java Type | Description
 | host | common |  | String | *Required* OpenStack host url
+| apiVersion | common | v3 | String | OpenStack API version
+| config | common |  | Config | OpenStack configuration
 | domain | common | default | String | Authentication domain
 | operation | common |  | String | The operation to do
 | password | common |  | String | *Required* OpenStack password
 | project | common |  | String | *Required* The project ID
 | subsystem | common |  | String | *Required* OpenStack Nova subsystem
 | username | common |  | String | *Required* OpenStack username
-| config | common | | org.openstack4j.core.transport.Config | Openstack client configuration
-| apiVersion | common | v3 | String | The OpenStack API version. Possible values: v2, v3
+| bridgeErrorHandler | consumer | false | boolean | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exceptionHandler | consumer (advanced) |  | ExceptionHandler | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exchangePattern | consumer (advanced) |  | ExchangePattern | Sets the exchange pattern when the consumer creates an exchange.
+| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/docs/openstack-swift-component.adoc b/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
index 396c8fb..4c6e267 100644
--- a/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
@@ -47,21 +47,25 @@ The OpenStack-Swift component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Swift component supports 9 endpoint options which are listed below:
+The OpenStack-Swift component supports 13 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
 |=======================================================================
 | Name | Group | Default | Java Type | Description
 | host | common |  | String | *Required* OpenStack host url
+| apiVersion | common | v3 | String | OpenStack API version
+| config | common |  | Config | OpenStack configuration
 | domain | common | default | String | Authentication domain
 | operation | common |  | String | The operation to do
 | password | common |  | String | *Required* OpenStack password
 | project | common |  | String | *Required* The project ID
-| subsystem | common |  | String | *Required* OpenStack Nova subsystem
+| subsystem | common |  | String | *Required* OpenStack Swift subsystem
 | username | common |  | String | *Required* OpenStack username
-| config | common | | org.openstack4j.core.transport.Config | Openstack client configuration
-| apiVersion | common | v3 | String | The OpenStack API version. Possible values: v2, v3
+| bridgeErrorHandler | consumer | false | boolean | Allows for bridging the consumer to the Camel routing Error Handler which mean any exceptions occurred while the consumer is trying to pickup incoming messages or the likes will now be processed as a message and handled by the routing Error Handler. By default the consumer will use the org.apache.camel.spi.ExceptionHandler to deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exceptionHandler | consumer (advanced) |  | ExceptionHandler | To let the consumer use a custom ExceptionHandler. Notice if the option bridgeErrorHandler is enabled then this options is not in use. By default the consumer will deal with exceptions that will be logged at WARN/ERROR level and ignored.
+| exchangePattern | consumer (advanced) |  | ExchangePattern | Sets the exchange pattern when the consumer creates an exchange.
+| synchronous | advanced | false | boolean | Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported).
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java
index a08a976..ce93763 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/cinder/CinderEndpoint.java
@@ -83,7 +83,7 @@ public class CinderEndpoint extends AbstractOpenstackEndpoint {
 	}
 
 	/**
-	 * OpenStack Nova subsystem
+	 * OpenStack Cinder subsystem
 	 */
 	public void setSubsystem(String subsystem) {
 		this.subsystem = subsystem;

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java
index 61a8c4a..0d6c0d2 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/glance/GlanceEndpoint.java
@@ -22,10 +22,9 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-
 import org.openstack4j.core.transport.Config;
 
-@UriEndpoint(scheme = "openstack-glance", title = "OpenStack-Glance", syntax = "openstack-glance:host", label = "cloud")
+@UriEndpoint(scheme = "openstack-glance", title = "OpenStack-Glance", syntax = "openstack-glance:host", label = "cloud, virtualization")
 public class GlanceEndpoint extends AbstractOpenstackEndpoint {
 
 	@UriPath

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java
index 24cdffd..ed03705 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/KeystoneEndpoint.java
@@ -89,7 +89,7 @@ public class KeystoneEndpoint extends AbstractOpenstackEndpoint {
 	}
 
 	/**
-	 * OpenStack Nova subsystem
+	 * OpenStack Keystone subsystem
 	 */
 	public void setSubsystem(String subsystem) {
 		this.subsystem = subsystem;

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/DomainProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/DomainProducer.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/DomainProducer.java
index 32f9869..8184355 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/DomainProducer.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/DomainProducer.java
@@ -94,7 +94,6 @@ public class DomainProducer extends AbstractKeystoneProducer {
 		checkFailure(response, msg, "Delete domain" + id);
 	}
 
-	//TODO:
 	private Domain messageToDomain(Message message) {
 		Domain domain = message.getBody(Domain.class);
 		if(domain == null) {

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/GroupProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/GroupProducer.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/GroupProducer.java
index 4c0a643..258ebaa 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/GroupProducer.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/GroupProducer.java
@@ -66,7 +66,7 @@ public class GroupProducer extends AbstractKeystoneProducer {
 				doRemoveUserFromGroup(exchange);
 				break;
 			default:
-				throw new IllegalArgumentException("Unsupgrouped operation " + operation);
+				throw new IllegalArgumentException("Unsupported operation " + operation);
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/ProjectProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/ProjectProducer.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/ProjectProducer.java
index ebe515d..6dab2bb 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/ProjectProducer.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/ProjectProducer.java
@@ -57,7 +57,7 @@ public class ProjectProducer extends AbstractKeystoneProducer {
 				doDelete(exchange);
 				break;
 			default:
-				throw new IllegalArgumentException("Unsuproutered operation " + operation);
+				throw new IllegalArgumentException("Unsupported operation " + operation);
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/UserProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/UserProducer.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/UserProducer.java
index 4c8b30e..3273fad 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/UserProducer.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/UserProducer.java
@@ -57,7 +57,7 @@ public class UserProducer extends AbstractKeystoneProducer {
 				doDelete(exchange);
 				break;
 			default:
-				throw new IllegalArgumentException("Unsuproutered operation " + operation);
+				throw new IllegalArgumentException("Unsupported operation " + operation);
 		}
 	}
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java
index 93360ce..8989709 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronConstants.java
@@ -38,6 +38,9 @@ public final class  NeutronConstants extends OpenstackConstants{
 	//subnet
 	public static final String ENABLE_DHCP = "enableDHCP";
 	public static final String GATEWAY = "gateway";
+	public static final String IP_VERSION = "ipVersion";
+	public static final String CIDR = "cidr";
+	public static final String SUBNET_POOL = "subnetPools";
 
 	//port
 	public static final String DEVICE_ID = "deviceId";

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java
index bbdb73a..cb69a6f 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/NeutronEndpoint.java
@@ -26,10 +26,9 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-
 import org.openstack4j.core.transport.Config;
 
-@UriEndpoint(scheme = "openstack-neutron", title = "OpenStack-Neutron", syntax = "openstack-neutron:host", label = "cloud")
+@UriEndpoint(scheme = "openstack-neutron", title = "OpenStack-Neutron", syntax = "openstack-neutron:host", label = "cloud, virtualization")
 public class NeutronEndpoint extends AbstractOpenstackEndpoint {
 
 	@UriPath
@@ -89,7 +88,7 @@ public class NeutronEndpoint extends AbstractOpenstackEndpoint {
 	}
 
 	/**
-	 * OpenStack Nova subsystem
+	 * OpenStack Neutron subsystem
 	 */
 	public void setSubsystem(String subsystem) {
 		this.subsystem = subsystem;

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/RouterProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/RouterProducer.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/RouterProducer.java
index 28cf121..77f8e1f 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/RouterProducer.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/RouterProducer.java
@@ -126,7 +126,6 @@ public class RouterProducer extends AbstractOpenstackProducer {
 		msg.setBody(routerInterface);
 	}
 
-	//TODO: more headers?
 	private Router messageToRouter(Message message) {
 		Router router = message.getBody(Router.class);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/SubnetProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/SubnetProducer.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/SubnetProducer.java
index 77bdc5c..73c3735 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/SubnetProducer.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/neutron/producer/SubnetProducer.java
@@ -26,8 +26,10 @@ import org.apache.camel.util.ObjectHelper;
 import org.openstack4j.api.Builders;
 import org.openstack4j.api.OSClient;
 import org.openstack4j.model.common.ActionResponse;
+import org.openstack4j.model.network.IPVersionType;
 import org.openstack4j.model.network.Subnet;
 import org.openstack4j.model.network.builder.SubnetBuilder;
+import org.openstack4j.openstack.networking.domain.NeutronPool;
 
 import java.util.List;
 import java.util.Map;
@@ -86,7 +88,6 @@ public class SubnetProducer extends AbstractOpenstackProducer {
 	}
 
 
-	//TODO: more headers
 	private Subnet messageToSubnet(Message message) {
 		Subnet subnet = message.getBody(Subnet.class);
 		if(subnet == null) {
@@ -96,6 +97,20 @@ public class SubnetProducer extends AbstractOpenstackProducer {
 			ObjectHelper.notEmpty(message.getHeader(NeutronConstants.NAME, String.class), "Name");
 			builder.name(message.getHeader(NeutronConstants.NAME, String.class));
 
+			ObjectHelper.notEmpty(message.getHeader(NeutronConstants.NETWORK_ID, String.class), "Network ID");
+				builder.networkId(message.getHeader(NeutronConstants.NETWORK_ID, String.class));
+
+			ObjectHelper.notNull(message.getHeader(NeutronConstants.IP_VERSION, IPVersionType.class), "IP version");
+			builder.ipVersion(message.getHeader(NeutronConstants.IP_VERSION, IPVersionType.class));
+
+			if(headers.containsKey(NeutronConstants.CIDR))
+				builder.cidr(message.getHeader(NeutronConstants.CIDR, String.class));
+
+			if(headers.containsKey(NeutronConstants.SUBNET_POOL)) {
+				final NeutronPool pool =  message.getHeader(NeutronConstants.SUBNET_POOL, NeutronPool.class);
+				builder.addPool(pool.getStart(), pool.getEnd());
+			}
+
 			if(headers.containsKey(NeutronConstants.NETWORK_ID))
 				builder.networkId(message.getHeader(NeutronConstants.NETWORK_ID, String.class));
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java
index cf79db3..9ee9596 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/swift/SwiftEndpoint.java
@@ -24,10 +24,9 @@ import org.apache.camel.spi.Metadata;
 import org.apache.camel.spi.UriEndpoint;
 import org.apache.camel.spi.UriParam;
 import org.apache.camel.spi.UriPath;
-
 import org.openstack4j.core.transport.Config;
 
-@UriEndpoint(scheme = "openstack-swift", title = "OpenStack-Swift", syntax = "openstack-swift:host", label = "cloud")
+@UriEndpoint(scheme = "openstack-swift", title = "OpenStack-Swift", syntax = "openstack-swift:host", label = "cloud, virtualization")
 public class SwiftEndpoint extends AbstractOpenstackEndpoint {
 
 	@UriPath
@@ -84,7 +83,7 @@ public class SwiftEndpoint extends AbstractOpenstackEndpoint {
 	}
 
 	/**
-	 * OpenStack Nova subsystem
+	 * OpenStack Swift subsystem
 	 */
 	public void setSubsystem(String subsystem) {
 		this.subsystem = subsystem;

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/main/resources/META-INF/services/org/apache/camel/component/openstack-swift
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/resources/META-INF/services/org/apache/camel/component/openstack-swift b/components/camel-openstack/src/main/resources/META-INF/services/org/apache/camel/component/openstack-swift
index 161ab0a..3285038 100644
--- a/components/camel-openstack/src/main/resources/META-INF/services/org/apache/camel/component/openstack-swift
+++ b/components/camel-openstack/src/main/resources/META-INF/services/org/apache/camel/component/openstack-swift
@@ -1 +1 @@
-class=org.apache.camel.component.openstack
+class=org.apache.camel.component.openstack.swift.SwiftComponent

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/neutron/SubnetProducerTest.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/neutron/SubnetProducerTest.java b/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/neutron/SubnetProducerTest.java
index 9aa45d4..3cf82b8 100644
--- a/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/neutron/SubnetProducerTest.java
+++ b/components/camel-openstack/src/test/java/org/apache/camel/component/openstack/neutron/SubnetProducerTest.java
@@ -36,6 +36,7 @@ import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.openstack4j.api.Builders;
 import org.openstack4j.model.common.ActionResponse;
+import org.openstack4j.model.network.IPVersionType;
 import org.openstack4j.model.network.Subnet;
 
 import java.util.ArrayList;
@@ -71,6 +72,7 @@ public class SubnetProducerTest extends NeutronProducerTestSupport {
 		msg.setHeader(NeutronConstants.OPERATION, NeutronConstants.CREATE);
 		msg.setHeader(NeutronConstants.NAME, dummySubnet.getName());
 		msg.setHeader(NeutronConstants.NETWORK_ID , dummySubnet.getNetworkId());
+		msg.setHeader(NeutronConstants.IP_VERSION, IPVersionType.V4);
 
 		producer.process(exchange);
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/components/readme.adoc
----------------------------------------------------------------------
diff --git a/components/readme.adoc b/components/readme.adoc
index dbbc3ff..761a365 100644
--- a/components/readme.adoc
+++ b/components/readme.adoc
@@ -381,6 +381,24 @@ Components
 | link:camel-openshift/src/main/docs/openshift-component.adoc[OpenShift] (camel-openshift) +
 `openshift:clientId` | *deprecated* To manage your Openshift 2.x applications.
 
+| link:camel-openstack/src/main/docs/openstack-cinder-component.adoc[OpenStack-Cinder] (camel-openstack) +
+`openstack-cinder:host` | Camel Components
+
+| link:camel-openstack/src/main/docs/openstack-glance-component.adoc[OpenStack-Glance] (camel-openstack) +
+`openstack-glance:host` | Camel Components
+
+| link:camel-openstack/src/main/docs/openstack-keystone-component.adoc[OpenStack-Keystone] (camel-openstack) +
+`openstack-keystone:host` | Camel Components
+
+| link:camel-openstack/src/main/docs/openstack-neutron-component.adoc[OpenStack-Neutron] (camel-openstack) +
+`openstack-neutron:host` | Camel Components
+
+| link:camel-openstack/src/main/docs/openstack-nova-component.adoc[OpenStack-Nova] (camel-openstack) +
+`openstack-nova:host` | Camel Components
+
+| link:camel-openstack/src/main/docs/openstack-swift-component.adoc[OpenStack-Swift] (camel-openstack) +
+`openstack-swift:host` | Camel Components
+
 | link:camel-optaplanner/src/main/docs/optaplanner-component.adoc[OptaPlanner] (camel-optaplanner) +
 `optaplanner:configFile` | Solves the planning problem contained in a message with OptaPlanner.
 

http://git-wip-us.apache.org/repos/asf/camel/blob/04a90361/docs/user-manual/en/SUMMARY.md
----------------------------------------------------------------------
diff --git a/docs/user-manual/en/SUMMARY.md b/docs/user-manual/en/SUMMARY.md
index 8efc73c..930e3c4 100644
--- a/docs/user-manual/en/SUMMARY.md
+++ b/docs/user-manual/en/SUMMARY.md
@@ -34,7 +34,6 @@
     * [Exchange](exchange.adoc)
     * [Exchange Pattern](exchange-pattern.adoc)
     * [Expression](expression.adoc)
-    * [HTTP Session Handling](http-session.adoc)
     * [Injector](injector.adoc)
     * [Intercept](intercept.adoc)
     * [Inversion Of Control With Smart Defaults](inversion-of-control-with-smart-defaults.adoc)
@@ -74,28 +73,9 @@
 -->
 
 * [Enterprise Integration Patterns](enterprise-integration-patterns.adoc)
-    * Messaging Systems
-        * [Message Channel](message-channel.adoc)
-        * [Message](message.adoc)
-        * [Message Router](message-router.adoc)
-        * [Message Translator](message-translator.adoc)
-        * [Message Endpoint](message-endpoint.adoc)
-        * [Pipes and Filter](pipes-and-filters.adoc)
-    * Messaging Channels
-        * [Point to Point Channel](point-to-point-channel.adoc)
-        * [Publish Subscribe Channel](publish-subscribe-channel.adoc)
-        * [Dead Letter Channel](dead-letter-channel.adoc)
-        * [Guaranteed Delivery](guaranteed-delivery.adoc)
-        * [Message Bus](message-bus.adoc)
-    * Message Construction
-        * [Correlation Identifier](correlation-identifier.adoc)
-        * [Event Message](event-message.adoc)
-        * [Return Address](return-address.adoc)
-        * [Request Reply](request-reply.adoc)
-    * Message Routing
-        * [Content Based Router](content-based-router.adoc)
-        * [Message Filter](message-filter.adoc)
-        * [Dynamic Router](dynamic-router.adoc)
+    * [Event Message](event-message.adoc)
+    * [Message](message.adoc)
+    * [Request Reply](request-reply.adoc)
 
 * Community
     * FAQ
@@ -269,6 +249,12 @@
 	* [Netty4](netty4-component.adoc)
 	* [Netty4 HTTP](netty4-http-component.adoc)
 	* [OpenShift](openshift-component.adoc)
+	* [OpenStack-Cinder](openstack-cinder-component.adoc)
+	* [OpenStack-Glance](openstack-glance-component.adoc)
+	* [OpenStack-Keystone](openstack-keystone-component.adoc)
+	* [OpenStack-Neutron](openstack-neutron-component.adoc)
+	* [OpenStack-Nova](openstack-nova-component.adoc)
+	* [OpenStack-Swift](openstack-swift-component.adoc)
 	* [OptaPlanner](optaplanner-component.adoc)
 	* [OSGi EventAdmin](eventadmin-component.adoc)
 	* [OSGi PAX Logging](paxlogging-component.adoc)
@@ -450,6 +436,3 @@
         * [CDI Testing](cdi-testing.adoc)
         * [Spring Testing](spring-testing.adoc)
     * [JSSE Utility](camel-configuration-utilities.adoc)
-
-* Developer Guide
-    * [Building](building.adoc)