--- apiVersion: v1 kind: List items: - apiVersion: v1 kind: ConfigMap metadata: labels: funktion.fabric8.io/kind: Connector provider: fabric8 project: connector-jclouds version: 1.1.23 group: io.fabric8.funktion.connector name: jclouds data: deployment.yml: | --- apiVersion: extensions/v1beta1 kind: Deployment metadata: labels: funktion.fabric8.io/kind: Subscription connector: jclouds spec: replicas: 1 template: metadata: labels: funktion.fabric8.io/kind: Subscription connector: jclouds spec: containers: - image: fabric8/connector-jclouds:1.1.23 name: connector schema.yml: | --- component: kind: component scheme: jclouds syntax: jclouds:command:providerId title: JClouds description: For interacting with cloud compute & blobstore service via jclouds. label: api,cloud deprecated: false async: false javaType: org.apache.camel.component.jclouds.JcloudsComponent groupId: org.apache.camel artifactId: camel-jclouds version: 2.18.1 componentProperties: blobStores: kind: property type: array javaType: java.util.List deprecated: false secret: false description: To use the given BlobStore which must be configured when using blobstore. computeServices: kind: property type: array javaType: java.util.List deprecated: false secret: false description: To use the given ComputeService which must be configured when use compute. properties: command: kind: path group: common required: true type: string javaType: org.apache.camel.component.jclouds.JcloudsCommand enum: - blobstore - compute deprecated: false secret: false description: What command to execute such as blobstore or compute. providerId: kind: path group: common required: true type: string javaType: java.lang.String deprecated: false secret: false description: The name of the cloud provider that provides the target service (e.g. aws-s3 or aws_ec2). bridgeErrorHandler: kind: parameter group: consumer label: consumer type: boolean javaType: boolean optionalPrefix: consumer. deprecated: false secret: false defaultValue: false description: 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: kind: parameter group: consumer (advanced) label: consumer,advanced type: object javaType: org.apache.camel.spi.ExceptionHandler optionalPrefix: consumer. deprecated: false secret: false description: 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: kind: parameter group: consumer (advanced) label: consumer,advanced type: string javaType: org.apache.camel.ExchangePattern enum: - InOnly - RobustInOnly - InOut - InOptionalOut - OutOnly - RobustOutOnly - OutIn - OutOptionalIn deprecated: false secret: false description: Sets the exchange pattern when the consumer creates an exchange. synchronous: kind: parameter group: advanced label: advanced type: boolean javaType: boolean deprecated: false secret: false defaultValue: false description: Sets whether synchronous processing should be strictly used or Camel is allowed to use asynchronous processing (if supported). blobName: kind: parameter group: blobstore label: producer,blobstore type: string javaType: java.lang.String deprecated: false secret: false description: The name of the blob. container: kind: parameter group: blobstore label: blobstore type: string javaType: java.lang.String deprecated: false secret: false description: The name of the blob container. directory: kind: parameter group: blobstore label: consumer,blobstore type: string javaType: java.lang.String deprecated: false secret: false description: An optional directory name to use group: kind: parameter group: compute label: producer,compute type: string javaType: java.lang.String deprecated: false secret: false description: The group that will be assigned to the newly created node. Values depend on the actual cloud provider. hardwareId: kind: parameter group: compute label: producer,compute type: string javaType: java.lang.String deprecated: false secret: false description: The hardware that will be used for creating a node. Values depend on the actual cloud provider. imageId: kind: parameter group: compute label: producer,compute type: string javaType: java.lang.String deprecated: false secret: false description: The imageId that will be used for creating a node. Values depend on the actual cloud provider. locationId: kind: parameter group: compute label: producer,compute type: string javaType: java.lang.String deprecated: false secret: false description: The location that will be used for creating a node. Values depend on the actual cloud provider. nodeId: kind: parameter group: compute label: producer,compute type: string javaType: java.lang.String deprecated: false secret: false description: The id of the node that will run the script or destroyed. nodeState: kind: parameter group: compute label: producer,compute type: string javaType: java.lang.String enum: - PENDING - TERMINATED - SUSPENDED - RUNNING - ERROR - UNRECOGNIZED deprecated: false secret: false description: To filter by node status to only select running nodes etc. operation: kind: parameter group: compute label: producer,compute type: string javaType: java.lang.String deprecated: false secret: false description: Specifies the type of operation that will be performed to the blobstore. user: kind: parameter group: compute label: producer,compute type: string javaType: java.lang.String deprecated: false secret: false description: The user on the target node that will run the script. documentation.adoc: "[[jclouds-JcloudsComponent]]\nJclouds Component\n~~~~~~~~~~~~~~~~~\n\ \n*Available as of Camel 2.9*\n\nThis component allows interaction with cloud\ \ provider key-value engines\n(blobstores) and compute services. The component\ \ uses\nhttp://code.google.com/p/jclouds[jclouds] which is +\n a library that\ \ provides abstractions for blobstores and compute\nservices.\n\n*ComputeService*\ \ simplifies the task of managing machines in the cloud.\nFor example, you can\ \ use ComputeService to start 5 machines and install\nyour software on them.\ \ +\n *BlobStore* simplifies dealing with key-value providers such as Amazon\n\ S3. For example, BlobStore can give you a simple Map view of a\ncontainer.\n\ \nThe camel jclouds component allows you to use both abstractions, as it\nspecifes\ \ two types of endpoint the JcloudsBlobStoreEndpoint and the\nJcloudsComputeEndpoint.\ \ You can have both producers and consumers on a\nblobstore endpoint but you\ \ can only have producers on compute endpoints.\n\nMaven users will need to\ \ add the following dependency to their `pom.xml`\nfor this component:\n\n[source,xml]\n\ ------------------------------------------------------------\n\n\ \ org.apache.camel\n camel-jclouds\n\ \ x.x.x\n \n\n------------------------------------------------------------\n\ \n[[jclouds-Configuringthecomponent]]\nConfiguring the component\n^^^^^^^^^^^^^^^^^^^^^^^^^\n\ \nThe camel jclouds component will make use of multiple jclouds blobstores\n\ and compute services as long as they are passed to the component during\ninitialization.\ \ The component accepts a list blobstores and compute\nservices. Here is how\ \ it can be configured.\n\n[source,xml]\n----------------------------------------------------------------------------------------------------------------\n\ \ \n \n \n \ \ \n \n \n\ \ \n \n \ \ \n \n \n \ \ \n\n \n\ \ \n\n \n \n \n \n \n\n \n\n \n \n\n \n \n \n \n \n\n \n----------------------------------------------------------------------------------------------------------------\n\ \nAs you can see the component is capable of handling multiple blobstores\n\ and compute services. The actual implementation that will be used by\neach endpoint\ \ is specified by passing the provider inside the URI.\n\n[[jclouds-Options]]\n\ Jclouds Options\n^^^^^^^^^^^^^^^\n\n[source,java]\n-----------------------------------------\n\ jclouds:blobstore:[provider id][?options]\njclouds:compute:[provider id][?options]\n\ -----------------------------------------\n\nThe *provider id* is the name of\ \ the cloud provider that provides the\ntarget service (_e.g. aws-s3 or aws_ec2_).\n\ \nYou can append query options to the URI in the following format,\n`?option=value&option=value&...`\n\ \n[[jclouds-BlobstoreURIOptions]]\nBlobstore URI Options\n^^^^^^^^^^^^^^^^^^^^^\n\ \n\n\n\n// component options: START\nThe JClouds component supports 2 options\ \ which are listed below.\n\n\n\n{% raw %}\n[width=\"100%\",cols=\"2,1m,7\"\ ,options=\"header\"]\n|=======================================================================\n\ | Name | Java Type | Description\n| blobStores | List | To use the given BlobStore\ \ which must be configured when using blobstore.\n| computeServices | List |\ \ To use the given ComputeService which must be configured when use compute.\n\ |=======================================================================\n{%\ \ endraw %}\n// component options: END\n\n\n\n\n\n\n// endpoint options: START\n\ The JClouds component supports 17 endpoint options which are listed below:\n\ \n{% raw %}\n[width=\"100%\",cols=\"2,1,1m,1m,5\",options=\"header\"]\n|=======================================================================\n\ | Name | Group | Default | Java Type | Description\n| command | common | |\ \ JcloudsCommand | *Required* What command to execute such as blobstore or compute.\n\ | providerId | common | | String | *Required* The name of the cloud provider\ \ that provides the target service (e.g. aws-s3 or aws_ec2).\n| 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.\n| 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.\n| exchangePattern |\ \ consumer (advanced) | | ExchangePattern | Sets the exchange pattern when\ \ the consumer creates an exchange.\n| synchronous | advanced | false | boolean\ \ | Sets whether synchronous processing should be strictly used or Camel is\ \ allowed to use asynchronous processing (if supported).\n| blobName | blobstore\ \ | | String | The name of the blob.\n| container | blobstore | | String |\ \ The name of the blob container.\n| directory | blobstore | | String | An\ \ optional directory name to use\n| group | compute | | String | The group\ \ that will be assigned to the newly created node. Values depend on the actual\ \ cloud provider.\n| hardwareId | compute | | String | The hardware that will\ \ be used for creating a node. Values depend on the actual cloud provider.\n\ | imageId | compute | | String | The imageId that will be used for creating\ \ a node. Values depend on the actual cloud provider.\n| locationId | compute\ \ | | String | The location that will be used for creating a node. Values depend\ \ on the actual cloud provider.\n| nodeId | compute | | String | The id of\ \ the node that will run the script or destroyed.\n| nodeState | compute | \ \ | String | To filter by node status to only select running nodes etc.\n| operation\ \ | compute | | String | Specifies the type of operation that will be performed\ \ to the blobstore.\n| user | compute | | String | The user on the target node\ \ that will run the script.\n|=======================================================================\n\ {% endraw %}\n// endpoint options: END\n\n\n\nYou can have as many of these\ \ options as you like.\n\n[source,java]\n------------------------------------------------------------------------------------------\n\ jclouds:blobstore:aws-s3?operation=CamelJcloudsGet&container=mycontainer&blobName=someblob\n\ ------------------------------------------------------------------------------------------\n\ \nFor producer endpoint you can override all of the above URI options by\npassing\ \ the appropriate headers to the message.\n\n[[jclouds-MessageHeadersforblobstore]]\n\ Message Headers for blobstore\n+++++++++++++++++++++++++++++\n\n[width=\"100%\"\ ,cols=\"10%,90%\",options=\"header\",]\n|=======================================================================\n\ |Header |Description\n\n|`CamelJcloudsOperation` |The operation to be performed\ \ on the blob. The valid options are\n* PUT\n* GET\n\n|`CamelJcloudsContainer`\ \ |The name of the blob container.\n\n|`CamelJcloudsBlobName` |The name of the\ \ blob.\n|=======================================================================\n\ \n[[jclouds-BlobstoreUsageSamples]]\nBlobstore Usage Samples\n^^^^^^^^^^^^^^^^^^^^^^^\n\ \n[[jclouds-Example1:Puttingtotheblob]]\nExample 1: Putting to the blob\n++++++++++++++++++++++++++++++\n\ \nThis example will show you how you can store any message inside a blob\nusing\ \ the jclouds component.\n\n[source,java]\n------------------------------------\n\ from(\"direct:start\")\n .to(\"jclouds:blobstore:aws-s3\" +\n \"?operation=PUT\"\ \ +\n \"&container=mycontainer\" +\n \"&blobName=myblob\");\n\ ------------------------------------\n\nIn the above example you can override\ \ any of the URI parameters with\nheaders on the message. \nHere is how the\ \ above example would look like using xml to define our\nroute.\n\n[source,xml]\n\ --------------------------------------------------------------------------------------------\n\ \n \n \n\n--------------------------------------------------------------------------------------------\n\ \n[[jclouds-Example2:GettingReadingfromablob]]\nExample 2: Getting/Reading from\ \ a blob\n++++++++++++++++++++++++++++++++++++++\n\nThis example will show you\ \ how you can read the contnet of a blob using\nthe jclouds component.\n\n[source,java]\n\ ------------------------------------\nfrom(\"direct:start\")\n .to(\"jclouds:blobstore:aws-s3\"\ \ +\n \"?operation=GET\" +\n \"&container=mycontainer\" +\n \ \ \"&blobName=myblob\");\n------------------------------------\n\nIn the\ \ above example you can override any of the URI parameters with\nheaders on\ \ the message. \n Here is how the above example would look like using xml to\ \ define our\nroute.\n\n[source,xml]\n--------------------------------------------------------------------------------------------\n\ \n \n \n\n--------------------------------------------------------------------------------------------\n\ \n[[jclouds-Example3:Consumingablob]]\nExample 3: Consuming a blob\n+++++++++++++++++++++++++++\n\ \nThis example will consume all blob that are under the specified\ncontainer.\ \ The generated exchange will contain the payload of the blob\nas body.\n\n\ [source,java]\n-------------------------------------\n from(\"jclouds:blobstore:aws-s3\"\ \ +\n \"?container=mycontainer\")\n .to(\"direct:next\");\n-------------------------------------\n\ \nYou can achieve the same goal by using xml, as you can see below.\n\n[source,xml]\n\ ----------------------------------------------------------------------------------------------\n\ \n \n \n\n----------------------------------------------------------------------------------------------\n\ \n\n\n[source,java]\n-------------------------------------------------------------------------------------------------------------\n\ jclouds:compute:aws-ec2?operation=CamelJcloudsCreateNode&imageId=AMI_XXXXX&locationId=eu-west-1&group=mygroup\n\ -------------------------------------------------------------------------------------------------------------\n\ \n[[jclouds-ComputeUsageSamples]]\nCompute Usage Samples\n^^^^^^^^^^^^^^^^^^^^^\n\ \nBelow are some examples that demonstrate the use of jclouds compute\nproducer\ \ in java dsl and spring/blueprint xml.\n\n[[jclouds-Example1:Listingtheavailableimages.]]\n\ Example 1: Listing the available images.\n++++++++++++++++++++++++++++++++++++++++\n\ \n[source,java]\n--------------------------------------------\n from(\"jclouds:compute:aws-ec2\"\ \ +\n \"&operation=CamelJCloudsListImages\")\n .to(\"direct:next\"\ );\n--------------------------------------------\n\nThis will create a message\ \ that will contain the list of images inside\nits body. You can also do the\ \ same using xml.\n\n[source,xml]\n--------------------------------------------------------------------------\n\ \n \n \n\n--------------------------------------------------------------------------\n\ \n[[jclouds-Example2:Createanewnode.]]\nExample 2: Create a new node.\n+++++++++++++++++++++++++++++\n\ \n[source,java]\n---------------------------------------------\n from(\"\ direct:start\").\n to(\"jclouds:compute:aws-ec2\" +\n \"?operation=CamelJcloudsCreateNode\"\ \ +\n \"&imageId=AMI_XXXXX\" +\n \"&locationId=XXXXX\" +\n \ \ \"&group=myGroup\");\n---------------------------------------------\n\n\ This will create a new node on the cloud provider. The out message in\nthis\ \ case will be a set of metadata that contains information about the\nnewly\ \ created node (e.g. the ip, hostname etc). Here is the same using\nspring xml.\n\ \n[source,xml]\n-------------------------------------------------------------------------------------------------------------------------\n\ \n \n \n\n-------------------------------------------------------------------------------------------------------------------------\n\ \n[[jclouds-Example3:Runashellscriptonrunningnode.]]\nExample 3: Run a shell\ \ script on running node.\n++++++++++++++++++++++++++++++++++++++++++++++\n\n\ [source,java]\n--------------------------------------------\n from(\"direct:start\"\ ).\n to(\"jclouds:compute:aws-ec2\" +\n \"?operation=CamelJcloudsRunScript\"\ \ +\n \"?nodeId=10\" +\n \"&user=ubuntu\");\n--------------------------------------------\n\ \nThe sample above will retrieve the body of the in message, which is\nexpected\ \ to contain the shell script to be executed. Once the script is\nretrieved,\ \ it will be sent to the node for execution under the specified\nuser (_in order\ \ case ubuntu_). The target node is specified using its\nnodeId. The nodeId\ \ can be retrieved either upon the creation of the\nnode, it will be part of\ \ the resulting metadata or by a executing a\nLIST_NODES operation.\n\n*Note*\ \ This will require that the compute service that will be passed to\nthe component,\ \ to be initialized with the appropriate jclouds ssh\ncapable module (_e.g.\ \ jsch or sshj_).\n\nHere is the same using spring xml.\n\n[source,xml]\n----------------------------------------------------------------------------------------------\n\ \n \n \n\n----------------------------------------------------------------------------------------------\n\ \n[[jclouds-Seealso]]\nSee also\n++++++++\n\nIf you want to find out more about\ \ jclouds here is list of interesting\nresources \n\nhttp://jclouds.incubator.apache.org/documentation/userguide/blobstore-guide/[Jclouds\n\ Blobstore wiki] \n\nhttp://jclouds.incubator.apache.org/documentation/userguide/compute/[Jclouds\n\ Compute wiki]\n"