The Java Multi-Cloud Toolkit
Go to file
Adrian Cole 35a88b7f6f Merge pull request #529 from andreaturli/master
README.md
2012-03-28 13:49:26 -07:00
all updated current version to 1.5.0-SNAPSHOT 2012-02-04 11:06:07 -08:00
allblobstore Issue 879:keystone v2 hpcloud-objectstorage provider 2012-03-22 21:45:25 -07:00
allcompute Issue 885:add TryStack provider 2012-03-22 21:50:27 -07:00
allloadbalancer missing cloudloadbalancer instance 2012-02-27 09:47:01 +02:00
antcontrib organize imports 2012-03-28 03:37:48 -04:00
apis Issue 888: consolidate code that addresses naming conventions, using hyphen as default delimiter 2012-03-28 03:37:54 -04:00
archetypes Issue 888: consolidate code that addresses naming conventions, using hyphen as default delimiter 2012-03-28 03:37:54 -04:00
assemblies updated current version to 1.5.0-SNAPSHOT 2012-02-04 11:06:07 -08:00
blobstore organize imports 2012-03-28 03:37:48 -04:00
common Issue 888: consolidate code that addresses naming conventions, using hyphen as default delimiter 2012-03-28 03:37:54 -04:00
compute Issue 888: consolidate code that addresses naming conventions, using hyphen as default delimiter 2012-03-28 03:37:54 -04:00
core organize imports 2012-03-28 03:37:48 -04:00
demos Using jboss-as-embedded for integration testing of OpenShift Express 2012-02-17 23:05:46 +01:00
drivers organize imports 2012-03-28 03:37:48 -04:00
labs Issue 888: consolidate code that addresses naming conventions, using hyphen as default delimiter 2012-03-28 03:37:54 -04:00
loadbalancer organize imports 2012-03-28 03:37:48 -04:00
project Using XMLUnit to verify XML payloads in ExpectTest if, and only if, BaseRestClientExpectTest.compareHttpRequestAsType is overridden (otherwise it still uses Java equals()) 2012-03-01 23:02:01 +00:00
providers Issue 888: consolidate code that addresses naming conventions, using hyphen as default delimiter 2012-03-28 03:37:54 -04:00
resources Issue 847:version updates 2012-02-23 15:11:05 +02:00
sandbox-apis Issue 852:add elb api and aws-elb provider 2012-03-03 12:00:58 -08:00
sandbox-drivers/asynchttpclient [842] Added required import packages to cloudfiles api bundle. Improved import packages in all bundles. 2012-02-17 00:49:39 +02:00
sandbox-providers Issue 852:add elb api and aws-elb provider 2012-03-03 12:00:58 -08:00
scriptbuilder organize imports 2012-03-28 03:37:48 -04:00
skeletons Issue 888: consolidate code that addresses naming conventions, using hyphen as default delimiter 2012-03-28 03:37:54 -04:00
.gitignore issue 384: network support refactored 2012-03-01 17:29:18 +00:00
README.md README.md 2012-03-28 21:45:53 +01:00
README.txt Issue 885:add TryStack provider 2012-03-22 21:50:27 -07:00
pom.xml Issue 847:version updates 2012-02-23 15:11:05 +02:00

README.md

jclouds

jclouds is an open source library that helps you get started in the cloud and reuse your java and clojure development skills. Our api allows you freedom to use portable abstractions or cloud-specific features. We test support of 30 cloud providers and cloud software stacks, including Amazon, GoGrid, Ninefold, vCloud, OpenStack, and Azure. We offer several API abstractions as java and clojure libraries. The following are the most mature:

BLOBSTORE

Simplifies dealing with key-value providers such as Amazon S3. For example, BlobStore can give you a simple Map view of a container.

BlobStore Example (Java): // init context = new BlobStoreContextFactory().createContext( "aws-s3", accesskeyid, secretaccesskey); blobStore = context.getBlobStore();

  // create container
  blobStore.createContainerInLocation(null, "mycontainer");

  // add blob
  blob = blobStore.blobBuilder("test").payload("testdata").build();
  blobStore.putBlob("mycontainer", blob);

BlobStore Example (Clojure): (use 'org.jclouds.blobstore2) (def blobstore (blobstore "azureblob" account encodedkey)) (create-container blobstore "mycontainer") (put-blob blobstore "mycontainer" (blob "test" :payload "testdata"))

COMPUTESERVICE

Simplifies the task of managing machines in the cloud. For example, you can use ComputeService to start 5 machines and install your software on them.

Features

Even if you don't need the portable apis we provide, or could roll it your own, programming against cloud environments can be challenging. We focus on the following areas so that you can focus on using the cloud, rather than troubleshooting it!

  • SIMPLE INTERFACE Instead of creating new object types, we reuse concepts like maps so that the programming model is familiar. In this way, you can get started without dealing with REST-like apis or WS.

  • RUNTIME PORTABILITY We have drivers that allow you to operate in restricted environments like Google App Engine. We have very few required dependencies, so we are unlikely to clash with your app.

  • DEAL WITH WEB COMPLEXITY Network based computing introduces issues such as transient failures and redirects. We handle this for you.

  • UNIT TESTABILITY Writing tests for cloud endpoints is difficult. We provide you with Stub connections that simulate a cloud without creating network connections. In this way, you can write your unit tests without mocking complexity or the brittleness of remote connections.

  • PERFORMANCE Writing tests for cloud endpoints is difficult. We provide you with Stub connections that simulate a cloud without creating network connections. In this way, you can write your unit tests without mocking complexity or the brittleness of remote connections.

  • LOCATION All of our abstractions are location-aware. For example, you can get ISO-3166 codes to tell which country or province a cloud runs in.

  • QUALITY We test every provider with live scenarios before each release. If it doesn't pass, the provider goes into the sandbox.

Downloads

Resources

Configuring

Uptime uses node-config to allow YAML configuration and environment support. Here is the default configuration, taken from config/default.yaml:

mongodb:
  server:   localhost
  database: uptime
  user:     root 
  password:

monitor:
  name:                   origin
  apiUrl:                 'http://localhost:8082/api'
  pollingInterval:        10000      # ten seconds
  updateInterval:         60000      # one minute
  qosAggregationInterval: 600000     # ten minutes
  timeout:                5000       # five seconds
  pingHistory:            8035200000 # three months
  http_proxy:      

autoStartMonitor: true

server:
  port:     8082

To modify this configuration, create a development.yaml or a production.yaml file in the same directory, and override just the settings you need. For instance, to run Uptime on port 80 in production, create a production.yaml file as follows:

server:
  port:     80

Using jclouds

check out our examples site! https://github.com/jclouds/jclouds-examples

License

Copyright (C) 2009-2012 jclouds, Inc.

Licensed under the Apache License, Version 2.0