Question

I am using JClouds to abstract over various cloud providers, including Rackspace.

I am using the BlobStore from JClouds to store files, their API suggests that I can create a container in a specific (provider dependent) Location using:

context.getBlobStore().createContainerInLocation(location, "containerName");

However, how am I supposed to get the location variable (of interface type Location)?

For example, RackSpace supports Dallas or Chicago as the Location of a container. So I would like to do something like this:

 Location dallas = ....; // Get location that points to "US-IL"
 context.getBlobStore().createContainerInLocation(dallas, "container");

The 'magic' string US-IL was taken from the source.

I tried using this:

 context.getBlobStore().listAssignableLocations();  // Only contains a single default location
 context.getBlobStore().listAssignableLocations()[0].getParent(); // Not sure what this refers to, scoped at PROVIDER level

Anyone that can shed some light on how I should be using this?

Related question: JClouds for Azure Blob (not applicable, because the answer is Azure specific. Which did not require the location...)

Was it helpful?

Solution

This is now possible in jclouds 1.8.0 and above.

RegionScopedBlobStoreContext blobStoreContext = ContextBuilder.newBuilder(PROVIDER)
        .credentials(username, apiKey)
        .buildView(RegionScopedBlobStoreContext.class);
BlobStore blobStore = blobStoreContext.getBlobStore(REGION);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top