You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by ga...@apache.org on 2019/01/29 20:25:26 UTC

[jclouds-examples] branch master updated: Added Google Cloud Storage parameterization

This is an automated email from the ASF dual-hosted git repository.

gaul pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jclouds-examples.git


The following commit(s) were added to refs/heads/master by this push:
     new 5b02a0b  Added Google Cloud Storage parameterization
5b02a0b is described below

commit 5b02a0b18373195622216136dc5568c48a31cf50
Author: bcli4d <bc...@systemsbiology.org>
AuthorDate: Sun Jan 27 18:50:03 2019 -0800

    Added Google Cloud Storage parameterization
---
 blobstore-basics/README.md                         |  9 +++++
 .../jclouds/examples/blobstore/basics/MainApp.java | 40 ++++++++++++++++++----
 2 files changed, 43 insertions(+), 6 deletions(-)

diff --git a/blobstore-basics/README.md b/blobstore-basics/README.md
index e61e9c2..326767f 100755
--- a/blobstore-basics/README.md
+++ b/blobstore-basics/README.md
@@ -21,6 +21,15 @@ For Rackspace CloudFiles
 For IBM SoftLayer ObjectStore in `ams01`
 
     java -Djclouds.keystone.credential-type=tempAuthCredentials -Djclouds.endpoint=https://ams01.objectstorage.softlayer.net/auth/v1.0/ -jar target/blobstore-basics-jar-with-dependencies.jar openstack-swift username apikey myfavoritecontainer https://ams01.objectstorage.softlayer.net/auth/v1.0/
+  
+For Google Cloud Storage
+
+    java -jar target/blobstore-basics-jar-with-dependencies.jar \
+         google-cloud-storage \
+         your-project-service-account-email@developer.gserviceaccount.com \
+         /path/to/json-key.json \
+         myfavoritecontainer
+
 
 ## License
 
diff --git a/blobstore-basics/src/main/java/org/jclouds/examples/blobstore/basics/MainApp.java b/blobstore-basics/src/main/java/org/jclouds/examples/blobstore/basics/MainApp.java
index b72f0bd..fdb33ee 100755
--- a/blobstore-basics/src/main/java/org/jclouds/examples/blobstore/basics/MainApp.java
+++ b/blobstore-basics/src/main/java/org/jclouds/examples/blobstore/basics/MainApp.java
@@ -16,9 +16,11 @@
  */
 package org.jclouds.examples.blobstore.basics;
 
+import static com.google.common.base.Charsets.UTF_8;
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.collect.Iterables.contains;
 
+import java.io.File;
 import java.io.IOException;
 import java.util.Map;
 import java.util.Set;
@@ -34,6 +36,7 @@ import org.jclouds.blobstore.BlobStore;
 import org.jclouds.blobstore.BlobStoreContext;
 import org.jclouds.blobstore.domain.Blob;
 import org.jclouds.blobstore.domain.StorageMetadata;
+import org.jclouds.domain.Credentials;
 import org.jclouds.domain.Location;
 import org.jclouds.googlecloudstorage.GoogleCloudStorageApi;
 import org.jclouds.googlecloudstorage.GoogleCloudStorageApiMetadata;
@@ -45,10 +48,14 @@ import org.jclouds.s3.S3ApiMetadata;
 import org.jclouds.s3.S3Client;
 
 import com.google.common.base.Charsets;
+import com.google.common.base.Supplier;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Iterables;
 import com.google.common.collect.Maps;
 import com.google.common.io.ByteSource;
+import com.google.common.io.Files;
+
+import org.jclouds.googlecloud.GoogleCredentialsFromJson;
 
 /**
  * Demonstrates the use of {@link BlobStore}.
@@ -85,6 +92,11 @@ public class MainApp {
       identity = args[1];
       credential = args[2];
       containerName = args[3];
+      boolean providerIsGCS = provider.equalsIgnoreCase("google-cloud-storage");
+
+      // For GCE, the credential parameter is the path to the private key file
+      if (providerIsGCS)
+	  credential = getCredentialFromJsonKeyFile(credential);
 
       // Init
       BlobStoreContext context = ContextBuilder.newBuilder(provider)
@@ -105,11 +117,11 @@ public class MainApp {
          ByteSource payload = ByteSource.wrap("testdata".getBytes(Charsets.UTF_8));
 
          // List Container Metadata
-         for (StorageMetadata resourceMd : blobStore.list()) {
-            if (containerName.equals(resourceMd.getName())) {
-               System.out.println(resourceMd);
-            }
-         }
+	 for (StorageMetadata resourceMd : blobStore.list()) {
+	     if (containerName.equals(resourceMd.getName())) {
+		 System.out.println(resourceMd);
+	     }
+	 }
 
          // Add Blob
          Blob blob = blobStore.blobBuilder(blobName)
@@ -142,10 +154,26 @@ public class MainApp {
          
       } finally {
          // delete cointainer
-         blobStore.deleteContainer(containerName);
+	  blobStore.deleteContainer(containerName);
          // Close connecton
          context.close();
       }
 
    }
+
+    private static String getCredentialFromJsonKeyFile(String filename) {
+	try {
+	    String fileContents = Files.toString(new File(filename), UTF_8);
+	    Supplier<Credentials> credentialSupplier = new GoogleCredentialsFromJson(fileContents);
+	    String credential = credentialSupplier.get().credential;
+	    return credential;
+	} catch (IOException e) {
+	    System.err.println("Exception reading private key from '%s': " + filename);
+	    e.printStackTrace();
+	    System.exit(1);
+	    return null;
+	}
+    }
+
+    
 }