Repository: beam
Updated Branches:
  refs/heads/master c2a555783 -> ba539b6ce


[BEAM-1871] Hide CloudResourceManager client in sdks/java/extensions/gcp-core


Project: http://git-wip-us.apache.org/repos/asf/beam/repo
Commit: http://git-wip-us.apache.org/repos/asf/beam/commit/0f010009
Tree: http://git-wip-us.apache.org/repos/asf/beam/tree/0f010009
Diff: http://git-wip-us.apache.org/repos/asf/beam/diff/0f010009

Branch: refs/heads/master
Commit: 0f0100098f7a86fa0b34daaba03495a8110b6811
Parents: c2a5557
Author: Luke Cwik <lc...@google.com>
Authored: Mon May 1 13:30:36 2017 -0700
Committer: Luke Cwik <lc...@google.com>
Committed: Mon May 1 15:04:35 2017 -0700

----------------------------------------------------------------------
 .../sdk/extensions/gcp/options/GcpOptions.java  | 42 +++++++++++++++++++-
 .../org/apache/beam/sdk/util/Transport.java     | 21 ----------
 .../extensions/gcp/GcpCoreApiSurfaceTest.java   |  1 -
 .../gcp/options/GoogleApiDebugOptionsTest.java  |  6 +--
 4 files changed, 43 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/beam/blob/0f010009/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.java
 
b/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.java
index b2a83e9..445f00f 100644
--- 
a/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.java
+++ 
b/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/extensions/gcp/options/GcpOptions.java
@@ -21,15 +21,19 @@ import static 
com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Strings.isNullOrEmpty;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.google.api.client.http.HttpRequestInitializer;
 import com.google.api.client.util.BackOff;
 import com.google.api.client.util.Sleeper;
 import com.google.api.services.cloudresourcemanager.CloudResourceManager;
 import com.google.api.services.cloudresourcemanager.model.Project;
 import com.google.api.services.storage.model.Bucket;
 import com.google.auth.Credentials;
+import com.google.auth.http.HttpCredentialsAdapter;
+import com.google.cloud.hadoop.util.ChainingHttpRequestInitializer;
 import com.google.cloud.hadoop.util.ResilientOperation;
 import com.google.cloud.hadoop.util.RetryDeterminer;
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.ImmutableList;
 import com.google.common.io.Files;
 import java.io.File;
 import java.io.IOException;
@@ -43,6 +47,7 @@ import java.util.regex.Pattern;
 import javax.annotation.Nullable;
 import org.apache.beam.sdk.extensions.gcp.auth.CredentialFactory;
 import org.apache.beam.sdk.extensions.gcp.auth.GcpCredentialFactory;
+import org.apache.beam.sdk.extensions.gcp.auth.NullCredentialInitializer;
 import org.apache.beam.sdk.options.Default;
 import org.apache.beam.sdk.options.DefaultValueFactory;
 import org.apache.beam.sdk.options.Description;
@@ -50,6 +55,7 @@ import org.apache.beam.sdk.options.PipelineOptions;
 import org.apache.beam.sdk.util.FluentBackoff;
 import org.apache.beam.sdk.util.InstanceBuilder;
 import org.apache.beam.sdk.util.PathValidator;
+import org.apache.beam.sdk.util.RetryHttpRequestInitializer;
 import org.apache.beam.sdk.util.Transport;
 import org.apache.beam.sdk.util.gcsfs.GcsPath;
 import org.joda.time.Duration;
@@ -229,8 +235,8 @@ public interface GcpOptions extends GoogleApiDebugOptions, 
PipelineOptions {
     public String create(PipelineOptions options) {
       String tempLocation = options.getTempLocation();
       if (isNullOrEmpty(tempLocation)) {
-        tempLocation = tryCreateDefaultBucket(options, 
Transport.newCloudResourceManagerClient(
-            options.as(CloudResourceManagerOptions.class)).build());
+        tempLocation = tryCreateDefaultBucket(options,
+            
newCloudResourceManagerClient(options.as(CloudResourceManagerOptions.class)).build());
         options.setTempLocation(tempLocation);
       } else {
         try {
@@ -347,5 +353,37 @@ public interface GcpOptions extends GoogleApiDebugOptions, 
PipelineOptions {
       checkArgument(zoneParts.length >= 2, "Invalid zone provided: %s", zone);
       return zoneParts[0] + "-" + zoneParts[1];
     }
+
+    /**
+     * Returns a CloudResourceManager client builder using the specified
+     * {@link CloudResourceManagerOptions}.
+     */
+    @VisibleForTesting
+    static CloudResourceManager.Builder newCloudResourceManagerClient(
+        CloudResourceManagerOptions options) {
+      Credentials credentials = options.getGcpCredential();
+      if (credentials == null) {
+        NullCredentialInitializer.throwNullCredentialException();
+      }
+      return new CloudResourceManager.Builder(Transport.getTransport(), 
Transport.getJsonFactory(),
+          chainHttpRequestInitializer(
+              credentials,
+              // Do not log 404. It clutters the output and is possibly even 
required by the caller.
+              new RetryHttpRequestInitializer(ImmutableList.of(404))))
+          .setApplicationName(options.getAppName())
+          .setGoogleClientRequestInitializer(options.getGoogleApiTrace());
+    }
+
+    private static HttpRequestInitializer chainHttpRequestInitializer(
+        Credentials credential, HttpRequestInitializer httpRequestInitializer) 
{
+      if (credential == null) {
+        return new ChainingHttpRequestInitializer(
+            new NullCredentialInitializer(), httpRequestInitializer);
+      } else {
+        return new ChainingHttpRequestInitializer(
+            new HttpCredentialsAdapter(credential),
+            httpRequestInitializer);
+      }
+    }
   }
 }

http://git-wip-us.apache.org/repos/asf/beam/blob/0f010009/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/util/Transport.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/util/Transport.java
 
b/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/util/Transport.java
index 7903011..b8474bb 100644
--- 
a/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/util/Transport.java
+++ 
b/sdks/java/extensions/gcp-core/src/main/java/org/apache/beam/sdk/util/Transport.java
@@ -22,7 +22,6 @@ import com.google.api.client.http.HttpRequestInitializer;
 import com.google.api.client.http.HttpTransport;
 import com.google.api.client.json.JsonFactory;
 import com.google.api.client.json.jackson2.JacksonFactory;
-import com.google.api.services.cloudresourcemanager.CloudResourceManager;
 import com.google.api.services.storage.Storage;
 import com.google.auth.Credentials;
 import com.google.auth.http.HttpCredentialsAdapter;
@@ -33,7 +32,6 @@ import java.net.MalformedURLException;
 import java.net.URL;
 import java.security.GeneralSecurityException;
 import org.apache.beam.sdk.extensions.gcp.auth.NullCredentialInitializer;
-import org.apache.beam.sdk.extensions.gcp.options.CloudResourceManagerOptions;
 import org.apache.beam.sdk.extensions.gcp.options.GcsOptions;
 
 /**
@@ -88,25 +86,6 @@ public class Transport {
   }
 
   /**
-   * Returns a CloudResourceManager client builder using the specified
-   * {@link CloudResourceManagerOptions}.
-   */
-  public static CloudResourceManager.Builder
-      newCloudResourceManagerClient(CloudResourceManagerOptions options) {
-    Credentials credentials = options.getGcpCredential();
-    if (credentials == null) {
-      NullCredentialInitializer.throwNullCredentialException();
-    }
-    return new CloudResourceManager.Builder(getTransport(), getJsonFactory(),
-        chainHttpRequestInitializer(
-            credentials,
-            // Do not log 404. It clutters the output and is possibly even 
required by the caller.
-            new RetryHttpRequestInitializer(ImmutableList.of(404))))
-        .setApplicationName(options.getAppName())
-        .setGoogleClientRequestInitializer(options.getGoogleApiTrace());
-  }
-
-  /**
    * Returns a Cloud Storage client builder using the specified {@link 
GcsOptions}.
    */
   public static Storage.Builder

http://git-wip-us.apache.org/repos/asf/beam/blob/0f010009/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/GcpCoreApiSurfaceTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/GcpCoreApiSurfaceTest.java
 
b/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/GcpCoreApiSurfaceTest.java
index 215b0f4..a8772c3 100644
--- 
a/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/GcpCoreApiSurfaceTest.java
+++ 
b/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/GcpCoreApiSurfaceTest.java
@@ -39,7 +39,6 @@ public class GcpCoreApiSurfaceTest {
         ImmutableSet.of(
             "org.apache.beam",
             "com.google.api.client",
-            "com.google.api.services.cloudresourcemanager",
             "com.google.api.services.storage",
             "com.google.auth",
             "com.fasterxml.jackson.annotation",

http://git-wip-us.apache.org/repos/asf/beam/blob/0f010009/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/options/GoogleApiDebugOptionsTest.java
----------------------------------------------------------------------
diff --git 
a/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/options/GoogleApiDebugOptionsTest.java
 
b/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/options/GoogleApiDebugOptionsTest.java
index 79d24f6..67d5880 100644
--- 
a/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/options/GoogleApiDebugOptionsTest.java
+++ 
b/sdks/java/extensions/gcp-core/src/test/java/org/apache/beam/sdk/extensions/gcp/options/GoogleApiDebugOptionsTest.java
@@ -113,9 +113,9 @@ public class GoogleApiDebugOptionsTest {
         
Transport.newStorageClient(options).build().objects().get("testBucketId", 
"testObjectId");
     assertEquals("TraceDestination", getRequest.get("$trace"));
 
-    Delete deleteRequest =
-        
Transport.newCloudResourceManagerClient(options.as(CloudResourceManagerOptions.class))
-            .build().projects().delete("testProjectId");
+    Delete deleteRequest = 
GcpOptions.GcpTempLocationFactory.newCloudResourceManagerClient(
+        options.as(CloudResourceManagerOptions.class))
+        .build().projects().delete("testProjectId");
     assertNull(deleteRequest.get("$trace"));
   }
 

Reply via email to