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:49 UTC

[10/17] camel git commit: CAMEL-9748: add config and apiVersion option

CAMEL-9748: add config and apiVersion option


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

Branch: refs/heads/master
Commit: 82a3db1f115b5146681143207178c74cff81df2b
Parents: 36edcbd
Author: Jan Bouska <jb...@redhat.com>
Authored: Wed Dec 7 20:37:43 2016 +0100
Committer: Andrea Cosentino <an...@gmail.com>
Committed: Sat Dec 17 12:25:15 2016 +0100

----------------------------------------------------------------------
 .../main/docs/openstack-cinder-component.adoc   |  4 +-
 .../main/docs/openstack-glance-component.adoc   |  6 ++-
 .../main/docs/openstack-keystone-component.adoc | 11 ++--
 .../main/docs/openstack-neutron-component.adoc  |  8 +--
 .../src/main/docs/openstack-nova-component.adoc |  4 +-
 .../main/docs/openstack-swift-component.adoc    |  4 +-
 .../openstack/cinder/CinderEndpoint.java        | 31 +++++++++++-
 .../common/AbstractOpenstackEndpoint.java       | 53 +++++++++++++++++---
 .../openstack/glance/GlanceEndpoint.java        | 30 +++++++++++
 .../openstack/keystone/KeystoneEndpoint.java    | 21 ++++++++
 .../producer/AbstractKeystoneProducer.java      |  7 ++-
 .../keystone/producer/DomainProducer.java       |  2 +-
 .../keystone/producer/GroupProducer.java        |  2 +-
 .../keystone/producer/ProjectProducer.java      |  2 +-
 .../keystone/producer/RegionProducer.java       |  2 +-
 .../keystone/producer/UserProducer.java         |  2 +-
 .../openstack/neutron/NeutronEndpoint.java      | 30 +++++++++++
 .../component/openstack/nova/NovaEndpoint.java  | 30 +++++++++++
 .../openstack/swift/SwiftEndpoint.java          | 31 ++++++++++++
 19 files changed, 251 insertions(+), 29 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 bb5e2ed..a80a2b6 100644
--- a/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-cinder-component.adoc
@@ -47,7 +47,7 @@ The OpenStack-Cinder component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Cinder component supports 7 endpoint options which are listed below:
+The OpenStack-Cinder component supports 9 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -60,6 +60,8 @@ The OpenStack-Cinder component supports 7 endpoint options which are listed belo
 | 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
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 096d971..757e6e7 100644
--- a/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-glance-component.adoc
@@ -1,6 +1,6 @@
 [[OpenStack-glance-Component]]
 Openstack Glance Component
-~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 *Available as of Camel 2.19*
 
@@ -47,7 +47,7 @@ The OpenStack-Glance component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Glance component supports 7 endpoint options which are listed below:
+The OpenStack-Glance component supports 9 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -59,6 +59,8 @@ The OpenStack-Glance component supports 7 endpoint options which are listed belo
 | 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
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 a799bd5..e76373f 100644
--- a/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-keystone-component.adoc
@@ -1,6 +1,6 @@
 [[OpenStack-keystone-Component]]
 Openstack Keystone Component
-~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 *Available as of Camel 2.19*
 
@@ -49,7 +49,7 @@ The OpenStack-Keystone component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Keystone component supports 7 endpoint options which are listed below:
+The OpenStack-Keystone component supports 8 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -62,6 +62,7 @@ The OpenStack-Keystone component supports 7 endpoint options which are listed be
 | 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
 |=======================================================================
 {% endraw %}
 // endpoint options: END
@@ -163,7 +164,7 @@ Message headers evaluated by the Group producer
 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
-~~~~~~~
+~~~~~~~~
 
 [[openstack-keystone-OperationsYouCanPerformWithProjectProducer]]
 Operations you can perform with the Project producer
@@ -249,7 +250,7 @@ users
 
 [[openstack-keystone-OperationsYouCanPerformWithUserProducer]]
 Operations you can perform with the User producer
-+++++++++++++++++++++++++++++++++++++++++++++++++++
++++++++++++++++++++++++++++++++++++++++++++++++++
 [width="100%",cols="20%,80%",options="header",]
 |=========================================================================
 |Operation | Description
@@ -267,7 +268,7 @@ Operations you can perform with the User producer
 
 [[openstack-keystone-MessageHeadersEvaluatedByTheUserProducer]]
 Message headers evaluated by the User producer
-++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++
 
 [width="100%",cols="10%,10%,80%",options="header",]
 |=========================================================================

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 e91fdc5..9f080cc 100644
--- a/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-neutron-component.adoc
@@ -1,6 +1,6 @@
 [[OpenStack-neutron-Component]]
 Openstack Neutron Component
-~~~~~~~~~~~~~~~~~~~~~~~~
+~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 *Available as of Camel 2.19*
 
@@ -47,7 +47,7 @@ The OpenStack-Neutron component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Neutron component supports 7 endpoint options which are listed below:
+The OpenStack-Neutron component supports 9 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -60,6 +60,8 @@ The OpenStack-Neutron component supports 7 endpoint options which are listed bel
 | 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
 |=======================================================================
 {% endraw %}
 // endpoint options: END
@@ -235,7 +237,7 @@ Operations you can perform with the Router producer
 
 [[openstack-neutron-MessageheadersevaluatedbytheRouterProducer]]
 Message headers evaluated by the Port producer
-++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++
 
 [width="100%",cols="10%,10%,80%",options="header",]
 |=========================================================================

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 d750c07..ea5807f 100644
--- a/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-nova-component.adoc
@@ -47,7 +47,7 @@ The OpenStack-Nova component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Nova component supports 7 endpoint options which are listed below:
+The OpenStack-Nova component supports 9 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -60,6 +60,8 @@ The OpenStack-Nova component supports 7 endpoint options which are listed below:
 | 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
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 7e8e057..396c8fb 100644
--- a/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
+++ b/components/camel-openstack/src/main/docs/openstack-swift-component.adoc
@@ -47,7 +47,7 @@ The OpenStack-Swift component has no options.
 // component options: END
 
 // endpoint options: START
-The OpenStack-Swift component supports 7 endpoint options which are listed below:
+The OpenStack-Swift component supports 9 endpoint options which are listed below:
 
 {% raw %}
 [width="100%",cols="2,1,1m,1m,5",options="header"]
@@ -60,6 +60,8 @@ The OpenStack-Swift component supports 7 endpoint options which are listed below
 | 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
 |=======================================================================
 {% endraw %}
 // endpoint options: END

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 721a815..a08a976 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
@@ -25,6 +25,8 @@ 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-cinder", title = "OpenStack-Cinder", syntax = "openstack-cinder:host", label = "cloud, virtualization")
 public class CinderEndpoint extends AbstractOpenstackEndpoint {
 
@@ -54,9 +56,14 @@ public class CinderEndpoint extends AbstractOpenstackEndpoint {
 	@Metadata(required = "true")
 	private String password;
 
+	@UriParam
+	private Config config;
+
+	@UriParam(defaultValue = v3, enums = "v2, v3")
+	private String apiVersion = v3;
+
 	public CinderEndpoint(String uri, CinderComponent component) {
 		super(uri, component);
-
 	}
 
 	@Override
@@ -153,6 +160,28 @@ public class CinderEndpoint extends AbstractOpenstackEndpoint {
 	public void setHost(String host) {
 		this.host = host;
 	}
+
+	public Config getConfig() {
+		return config;
+	}
+
+	/**
+	 * OpenStack configuration
+	 */
+	public void setConfig(Config config) {
+		this.config = config;
+	}
+
+	public String getApiVersion() {
+		return apiVersion;
+	}
+
+	/**
+	 * OpenStack API version
+	 */
+	public void setApiVersion(String apiVersion) {
+		this.apiVersion = apiVersion;
+	}
 }
 
 

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/AbstractOpenstackEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/AbstractOpenstackEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/AbstractOpenstackEndpoint.java
index 26c4c62..8466995 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/AbstractOpenstackEndpoint.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/common/AbstractOpenstackEndpoint.java
@@ -20,14 +20,19 @@ import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Processor;
 import org.apache.camel.impl.DefaultEndpoint;
+import org.apache.camel.util.ObjectHelper;
 
 import org.openstack4j.api.OSClient;
 import org.openstack4j.api.client.IOSClientBuilder;
+import org.openstack4j.core.transport.Config;
 import org.openstack4j.model.common.Identifier;
 import org.openstack4j.openstack.OSFactory;
 
 public abstract class AbstractOpenstackEndpoint extends DefaultEndpoint {
 
+	public static final String v2 = "v2";
+	public static final String v3 = "v3";
+
 	protected abstract String getHost();
 
 	protected abstract String getUsername();
@@ -40,20 +45,22 @@ public abstract class AbstractOpenstackEndpoint extends DefaultEndpoint {
 
 	protected abstract String getOperation();
 
+	protected abstract Config getConfig();
+
+	protected abstract String getApiVersion();
+
 	public AbstractOpenstackEndpoint(String endpointUri, Component component) {
 		super(endpointUri, component);
 	}
 
-	protected OSClient.OSClientV3 createClient() {
+	protected OSClient createClient() {
 
-		//client sholud reAuthenticate itself when token expires
-		IOSClientBuilder.V3 builder = OSFactory.builderV3()
-				.endpoint(getHost());
-
-		builder.credentials(getUsername(), getPassword(), Identifier.byId(getDomain()));
+		//client should reAuthenticate itself when token expires
+		if(v2.equals(getApiVersion())) {
+			return createV2Client();
+		}
 
-		builder.scopeToProject(Identifier.byId(getProject()));
-		return builder.authenticate();
+		return createV3Client();
 	}
 
 	@Override
@@ -65,4 +72,34 @@ public abstract class AbstractOpenstackEndpoint extends DefaultEndpoint {
 	public boolean isSingleton() {
 		return false;
 	}
+
+	private OSClient.OSClientV3 createV3Client() {
+		IOSClientBuilder.V3 builder = OSFactory.builderV3()
+				.endpoint(getHost());
+
+		builder.credentials(getUsername(), getPassword(), Identifier.byId(getDomain()));
+
+		builder.scopeToProject(Identifier.byId(getProject()));
+
+		if(getConfig() != null) {
+			builder.withConfig(getConfig());
+		}
+
+		return builder.authenticate();
+	}
+
+	private OSClient.OSClientV2 createV2Client() {
+		IOSClientBuilder.V2 builder = OSFactory.builderV2()
+				.endpoint(getHost());
+
+		builder.credentials(getUsername(), getPassword());
+
+		builder.tenantId(getProject());
+
+		if(getConfig() != null) {
+			builder.withConfig(getConfig());
+		}
+
+		return builder.authenticate();
+	}
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 4bde383..61a8c4a 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
@@ -23,6 +23,8 @@ 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")
 public class GlanceEndpoint extends AbstractOpenstackEndpoint {
 
@@ -48,6 +50,12 @@ public class GlanceEndpoint extends AbstractOpenstackEndpoint {
 	@Metadata(required = "true")
 	private String password;
 
+	@UriParam
+	private Config config;
+
+	@UriParam(defaultValue = v3, enums = "v2, v3")
+	private String apiVersion = v3;
+
 	public GlanceEndpoint(String uri, GlanceComponent component) {
 		super(uri, component);
 	}
@@ -128,5 +136,27 @@ public class GlanceEndpoint extends AbstractOpenstackEndpoint {
 	public void setHost(String host) {
 		this.host = host;
 	}
+
+	public Config getConfig() {
+		return config;
+	}
+
+	/**
+	 *OpenStack configuration
+	 */
+	public void setConfig(Config config) {
+		this.config = config;
+	}
+
+	public String getApiVersion() {
+		return apiVersion;
+	}
+
+	/**
+	 * OpenStack API version
+	 */
+	public void setApiVersion(String apiVersion) {
+		this.apiVersion = apiVersion;
+	}
 }
 

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 bb57f72..24cdffd 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
@@ -28,6 +28,8 @@ 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-keystone", title = "OpenStack-Keystone", syntax = "openstack-keystone:host", label = "cloud, virtualization")
 public class KeystoneEndpoint extends AbstractOpenstackEndpoint {
 
@@ -57,6 +59,9 @@ public class KeystoneEndpoint extends AbstractOpenstackEndpoint {
 	@Metadata(required = "true")
 	private String password;
 
+	@UriParam
+	private Config config;
+
 	public KeystoneEndpoint(String uri, KeystoneComponent component) {
 		super(uri, component);
 	}
@@ -161,4 +166,20 @@ public class KeystoneEndpoint extends AbstractOpenstackEndpoint {
 	public void setHost(String host) {
 		this.host = host;
 	}
+
+	public Config getConfig() {
+		return config;
+	}
+
+	/**
+	 *OpenStack configuration
+	 */
+	public void setConfig(Config config) {
+		this.config = config;
+	}
+
+	// v2 API is not supported (is deprecated)
+	public String getApiVersion() {
+		return v3;
+	}
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/AbstractKeystoneProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/AbstractKeystoneProducer.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/AbstractKeystoneProducer.java
index f4d9690..eb57e18 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/AbstractKeystoneProducer.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/AbstractKeystoneProducer.java
@@ -26,8 +26,11 @@ public abstract class AbstractKeystoneProducer extends AbstractOpenstackProducer
 
 	OSClient.OSClientV3 osV3Client;
 
-	public AbstractKeystoneProducer(AbstractOpenstackEndpoint endpoint, OSClient.OSClientV3 client) {
+	public AbstractKeystoneProducer(AbstractOpenstackEndpoint endpoint, OSClient client) {
 		super(endpoint, client);
-		osV3Client = client;
+		if(!(client instanceof OSClient.OSClientV3)) {
+			throw new IllegalArgumentException("Only Identity API v3 is supported");
+		}
+		osV3Client = (OSClient.OSClientV3) client;
 	}
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 c90ae50..32f9869 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
@@ -33,7 +33,7 @@ import java.util.Map;
 
 public class DomainProducer extends AbstractKeystoneProducer {
 
-	public DomainProducer(KeystoneEndpoint endpoint, OSClient.OSClientV3 client) {
+	public DomainProducer(KeystoneEndpoint endpoint, OSClient client) {
 		super(endpoint, client);
 	}
 

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 aab828f..4c0a643 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
@@ -33,7 +33,7 @@ import java.util.Map;
 
 public class GroupProducer extends AbstractKeystoneProducer {
 
-	public GroupProducer(KeystoneEndpoint endpoint, OSClient.OSClientV3 client) {
+	public GroupProducer(KeystoneEndpoint endpoint, OSClient client) {
 		super(endpoint, client);
 	}
 

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 f8aa248..ebe515d 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
@@ -33,7 +33,7 @@ import java.util.Map;
 
 public class ProjectProducer extends AbstractKeystoneProducer {
 
-	public ProjectProducer(KeystoneEndpoint endpoint, OSClient.OSClientV3 client) {
+	public ProjectProducer(KeystoneEndpoint endpoint, OSClient client) {
 		super(endpoint, client);
 	}
 

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/RegionProducer.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/RegionProducer.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/RegionProducer.java
index 0c9c80e..b79c03b 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/RegionProducer.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/keystone/producer/RegionProducer.java
@@ -33,7 +33,7 @@ import java.util.Map;
 
 public class RegionProducer extends AbstractKeystoneProducer {
 
-	public RegionProducer(KeystoneEndpoint endpoint, OSClient.OSClientV3 client) {
+	public RegionProducer(KeystoneEndpoint endpoint, OSClient client) {
 		super(endpoint, client);
 	}
 

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 4beacd1..4c8b30e 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
@@ -33,7 +33,7 @@ import java.util.Map;
 
 public class UserProducer extends AbstractKeystoneProducer {
 
-	public UserProducer(KeystoneEndpoint endpoint, OSClient.OSClientV3 client) {
+	public UserProducer(KeystoneEndpoint endpoint, OSClient client) {
 		super(endpoint, client);
 	}
 

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 44d5b84..bbdb73a 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
@@ -27,6 +27,8 @@ 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")
 public class NeutronEndpoint extends AbstractOpenstackEndpoint {
 
@@ -56,6 +58,12 @@ public class NeutronEndpoint extends AbstractOpenstackEndpoint {
 	@Metadata(required = "true")
 	private String password;
 
+	@UriParam
+	private Config config;
+
+	@UriParam(defaultValue = v3, enums = "v2, v3")
+	private String apiVersion = v3;
+
 	public NeutronEndpoint(String uri, NeutronComponent component) {
 		super(uri, component);
 	}
@@ -158,4 +166,26 @@ public class NeutronEndpoint extends AbstractOpenstackEndpoint {
 	public void setHost(String host) {
 		this.host = host;
 	}
+
+	public Config getConfig() {
+		return config;
+	}
+
+	/**
+	 *OpenStack configuration
+	 */
+	public void setConfig(Config config) {
+		this.config = config;
+	}
+
+	public String getApiVersion() {
+		return apiVersion;
+	}
+
+	/**
+	 * OpenStack API version
+	 */
+	public void setApiVersion(String apiVersion) {
+		this.apiVersion = apiVersion;
+	}
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java
----------------------------------------------------------------------
diff --git a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java
index 25be953..bab7193 100644
--- a/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java
+++ b/components/camel-openstack/src/main/java/org/apache/camel/component/openstack/nova/NovaEndpoint.java
@@ -26,6 +26,8 @@ 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-nova", title = "OpenStack-Nova", syntax = "openstack-nova:host", label = "cloud, virtualization")
 public class NovaEndpoint extends AbstractOpenstackEndpoint {
 
@@ -55,6 +57,12 @@ public class NovaEndpoint extends AbstractOpenstackEndpoint {
 	@Metadata(required = "true")
 	private String password;
 
+	@UriParam
+	private Config config;
+
+	@UriParam(defaultValue = v3, enums = "v2, v3")
+	private String apiVersion = v3;
+
 	public NovaEndpoint(String uri, NovaComponent component) {
 		super(uri, component);
 	}
@@ -155,4 +163,26 @@ public class NovaEndpoint extends AbstractOpenstackEndpoint {
 	public void setHost(String host) {
 		this.host = host;
 	}
+
+	public Config getConfig() {
+		return config;
+	}
+
+	/**
+	 *OpenStack configuration
+	 */
+	public void setConfig(Config config) {
+		this.config = config;
+	}
+
+	public String getApiVersion() {
+		return apiVersion;
+	}
+
+	/**
+	 * OpenStack API version
+	 */
+	public void setApiVersion(String apiVersion) {
+		this.apiVersion = apiVersion;
+	}
 }

http://git-wip-us.apache.org/repos/asf/camel/blob/82a3db1f/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 19627a8..cf79db3 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
@@ -25,6 +25,8 @@ 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")
 public class SwiftEndpoint extends AbstractOpenstackEndpoint {
 
@@ -54,6 +56,12 @@ public class SwiftEndpoint extends AbstractOpenstackEndpoint {
 	@Metadata(required = "true")
 	private String password;
 
+	@UriParam
+	private Config config;
+
+	@UriParam(defaultValue = v3, enums = "v2, v3")
+	private String apiVersion = v3;
+
 	public SwiftEndpoint(String uri, SwiftComponent component) {
 		super(uri, component);
 
@@ -153,6 +161,29 @@ public class SwiftEndpoint extends AbstractOpenstackEndpoint {
 	public void setHost(String host) {
 		this.host = host;
 	}
+
+	public Config getConfig() {
+		return config;
+	}
+
+	/**
+	 *OpenStack configuration
+	 */
+	public void setConfig(Config config) {
+		this.config = config;
+	}
+
+
+	public String getApiVersion() {
+		return apiVersion;
+	}
+
+	/**
+	 * OpenStack API version
+	 */
+	public void setApiVersion(String apiVersion) {
+		this.apiVersion = apiVersion;
+	}
 }