Camel
  1. Camel
  2. CAMEL-4034

Create Camel component for Jclouds

    Details

    • Type: New Feature New Feature
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 2.9.0
    • Component/s: None
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      JClouds is a library that provides abstractions for cloud providers.
      Currently it provides abstractions for:
      i) BlobStores
      ii) Queues
      iii) Compute

      It would be cool to have a camel component that would leverage the power of jclouds in order to use any cloud provider.
      JClouds is Apache Licensed & OSGi ready (1.0-beta-10 will be and will provide Karaf integration).

      I have put together a component that for jclouds blobstore (I intend to add queue support in the future).
      The component is available on github: git@github.com:iocanel/camel-jclouds.git

      1. jclouds-constants-patch.txt
        3 kB
        Ioannis Canellos
      2. CAMEL-4034-compute.patch
        64 kB
        Ioannis Canellos
      3. blobstore-test.xml
        2 kB
        Ioannis Canellos
      4. CAMEL-4034-updated-patch.txt
        34 kB
        Ioannis Canellos
      5. CAMEL-4034-patch.txt
        35 kB
        Ioannis Canellos

        Activity

        Hide
        Ioannis Canellos added a comment -

        I am attaching a patch, which adds jclouds component supporting blobstore consumer/provider. It also adds a camel-jclouds feature.

        Patch includes simple unit test for the component and it has also been tested on karaf-2.2.2 using aws-s3 as blobstore provider.

        Show
        Ioannis Canellos added a comment - I am attaching a patch, which adds jclouds component supporting blobstore consumer/provider. It also adds a camel-jclouds feature. Patch includes simple unit test for the component and it has also been tested on karaf-2.2.2 using aws-s3 as blobstore provider.
        Hide
        Ioannis Canellos added a comment -

        I am attaching a slightly updated patch. The updated patch does not use the TCCL and uses the class resolver from the CamelContext. Also author tags have been removed.

        Show
        Ioannis Canellos added a comment - I am attaching a slightly updated patch. The updated patch does not use the TCCL and uses the class resolver from the CamelContext. Also author tags have been removed.
        Hide
        Hadrian Zbarcea added a comment -

        Ioannis, many thanks for the contribution. Is blobstore-test.xml missing from the patch? Such a feature would require quite a bit more testing. Interesting patch though.

        Show
        Hadrian Zbarcea added a comment - Ioannis, many thanks for the contribution. Is blobstore-test.xml missing from the patch? Such a feature would require quite a bit more testing. Interesting patch though.
        Hide
        Ioannis Canellos added a comment -

        I am attaching the missing blobstore-test.xml.

        Show
        Ioannis Canellos added a comment - I am attaching the missing blobstore-test.xml.
        Hide
        Ioannis Canellos added a comment - - edited

        @Hadrian, the file was missing from the patch. I attached it separetly. Please let me know if you need the full patch (with the blobstore-test.xml included).

        Show
        Ioannis Canellos added a comment - - edited @Hadrian, the file was missing from the patch. I attached it separetly. Please let me know if you need the full patch (with the blobstore-test.xml included).
        Hide
        Hadrian Zbarcea added a comment -

        @Ioannis, no need for a full patch. I'll assign this to myself, starts some tests and let you know how it works or if it needs any changes. Thanks for the contribution and we'd like to see more from you.

        Show
        Hadrian Zbarcea added a comment - @Ioannis, no need for a full patch. I'll assign this to myself, starts some tests and let you know how it works or if it needs any changes. Thanks for the contribution and we'd like to see more from you.
        Hide
        Hadrian Zbarcea added a comment -

        @Ioannis, there are other files missing in the patch, such as ones in src/main/resources/META-INF used for component discovery. A lot more tests are needed, imho, as well. I made some changes myself. Are you ok with applying the patch with my changes, or you want to redo the patch (in which case I'll provide more detailed comments).

        We'll also need documentation for the new component, would it be possible to work on that as well?

        Show
        Hadrian Zbarcea added a comment - @Ioannis, there are other files missing in the patch, such as ones in src/main/resources/META-INF used for component discovery. A lot more tests are needed, imho, as well. I made some changes myself. Are you ok with applying the patch with my changes, or you want to redo the patch (in which case I'll provide more detailed comments). We'll also need documentation for the new component, would it be possible to work on that as well?
        Hide
        Ioannis Canellos added a comment -

        I understand that the patch has not been committed yet.

        I would like to extend its current functionality and leverage jclouds compute service, so that its possible to:
        a) Start/Stop nodes on the target cloud provider.
        b) Query active nodes
        c) Query available images
        d) Query locations etc
        e) Run scripts on nodes
        from camel routes.

        I am expecting to commit the patch (with your additions/changes) in order to start working on camel trunk.
        I will add the documentation work once the patch is committed (unless you would prefer me to start now).

        Show
        Ioannis Canellos added a comment - I understand that the patch has not been committed yet. I would like to extend its current functionality and leverage jclouds compute service, so that its possible to: a) Start/Stop nodes on the target cloud provider. b) Query active nodes c) Query available images d) Query locations etc e) Run scripts on nodes from camel routes. I am expecting to commit the patch (with your additions/changes) in order to start working on camel trunk. I will add the documentation work once the patch is committed (unless you would prefer me to start now).
        Hide
        Hadrian Zbarcea added a comment -

        @Ioannis, yes, let's start with the documentation. It should state I think that this component it experimental, because it does require more work. I will commit the patch then with some minor changes.

        Show
        Hadrian Zbarcea added a comment - @Ioannis, yes, let's start with the documentation. It should state I think that this component it experimental, because it does require more work. I will commit the patch then with some minor changes.
        Hide
        Hadrian Zbarcea added a comment -

        @Ioannis, committed patch and minor fixes, but still have another change to commit tomorrow. Thanks for the contribution!

        Show
        Hadrian Zbarcea added a comment - @Ioannis, committed patch and minor fixes, but still have another change to commit tomorrow. Thanks for the contribution!
        Hide
        Ioannis Canellos added a comment -

        I am attaching a patch which adds the following:

        a) Compute Service Endpoint & Producer. Supported operations are: create/destroy node, run script, list nodes, list images, list hardware.
        b) Unit tests for Compute Service Producer (all operations but run script).
        c) BlobStore Producer can now "GET" a payload from a blobstore and return it in the out message.
        d) More unit tests for the BlobStore producer/consumer.
        e) The component now accepts Lists of BlobStore & Compute Services and the blobstore/computeservice the endpoint will actually use is specified in the endpoint URI.

        Show
        Ioannis Canellos added a comment - I am attaching a patch which adds the following: a) Compute Service Endpoint & Producer. Supported operations are: create/destroy node, run script, list nodes, list images, list hardware. b) Unit tests for Compute Service Producer (all operations but run script). c) BlobStore Producer can now "GET" a payload from a blobstore and return it in the out message. d) More unit tests for the BlobStore producer/consumer. e) The component now accepts Lists of BlobStore & Compute Services and the blobstore/computeservice the endpoint will actually use is specified in the endpoint URI.
        Hide
        Hadrian Zbarcea added a comment -

        Patches applied. Thanks @Ioannis for the contribution. This component will require more fixes, but those could be done in separate jiras. The only thing needed now to close this jira is updating the documentation.

        Show
        Hadrian Zbarcea added a comment - Patches applied. Thanks @Ioannis for the contribution. This component will require more fixes, but those could be done in separate jiras. The only thing needed now to close this jira is updating the documentation.
        Hide
        Ioannis Canellos added a comment -

        I created the documentation. While I was writing the documentation I noticed that some of the constants could be changed in order to be more simpler and more easy to remember by the users.

        So I am attaching a patch that changes that.

        Show
        Ioannis Canellos added a comment - I created the documentation. While I was writing the documentation I noticed that some of the constants could be changed in order to be more simpler and more easy to remember by the users. So I am attaching a patch that changes that.
        Hide
        Ioannis Canellos added a comment -

        The last patch breaks consistency with the existing components naming, so I think that it should not be added. I will update the documentation and resolve this issue.

        Show
        Ioannis Canellos added a comment - The last patch breaks consistency with the existing components naming, so I think that it should not be added. I will update the documentation and resolve this issue.
        Hide
        Claus Ibsen added a comment -

        Ioannis is this camel-jclouds component not all set now? If so this ticket can be resolved.

        Show
        Claus Ibsen added a comment - Ioannis is this camel-jclouds component not all set now? If so this ticket can be resolved.
        Hide
        Ioannis Canellos added a comment -

        The basic functionality for this component is set and committed to trunk.

        Show
        Ioannis Canellos added a comment - The basic functionality for this component is set and committed to trunk.

          People

          • Assignee:
            Ioannis Canellos
            Reporter:
            Ioannis Canellos
          • Votes:
            1 Vote for this issue
            Watchers:
            2 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development