You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jclouds.apache.org by na...@apache.org on 2016/08/11 13:58:57 UTC

jclouds git commit: Add support for organization internal projects.

Repository: jclouds
Updated Branches:
  refs/heads/master 93028b752 -> 52477d5e9


Add support for organization internal projects.

When using IAM a company can have internal-only projects, which are
referenced in the form <domain>:<project_id>. IAM account is in the
form: email@project_id.domain.tld.iam......


Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo
Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/52477d5e
Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/52477d5e
Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/52477d5e

Branch: refs/heads/master
Commit: 52477d5e931c1db2224364753e9208af24f052a8
Parents: 93028b7
Author: Nelson Araujo <ne...@google.com>
Authored: Sun Aug 7 16:21:56 2016 -0700
Committer: Ignasi Barrera <na...@apache.org>
Committed: Thu Aug 11 15:32:01 2016 +0200

----------------------------------------------------------------------
 .../org/jclouds/googlecloud/config/CurrentProject.java    | 10 ++++++++--
 .../org/jclouds/googlecloud/config/ClientEmailTest.java   |  4 ++++
 2 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/52477d5e/common/googlecloud/src/main/java/org/jclouds/googlecloud/config/CurrentProject.java
----------------------------------------------------------------------
diff --git a/common/googlecloud/src/main/java/org/jclouds/googlecloud/config/CurrentProject.java b/common/googlecloud/src/main/java/org/jclouds/googlecloud/config/CurrentProject.java
index eb4ecb1..4c94cee 100644
--- a/common/googlecloud/src/main/java/org/jclouds/googlecloud/config/CurrentProject.java
+++ b/common/googlecloud/src/main/java/org/jclouds/googlecloud/config/CurrentProject.java
@@ -38,7 +38,8 @@ public @interface CurrentProject {
       public static final String DESCRIPTION = "" //
             + "client_email which usually looks like project_id@developer.gserviceaccount.com or " //
             + "project_id-extended_uid@developer.gserviceaccount.com or " //
-            + "account@project_id.iam.gserviceaccount.com";
+            + "account@project_id.company_domain.iam.gserviceaccount.com or " //
+            + "account@project_id.iam.gserviceaccount.com or ";
       private static final Pattern PROJECT_NUMBER_PATTERN = Pattern.compile("^([0-9]+)[@-].*");
       private static final String IAM_ACCOUNT_SUFFIX = ".iam.gserviceaccount.com";
 
@@ -51,7 +52,12 @@ public @interface CurrentProject {
       }
 
       private static String projectIdFromIAM(String email) {
-         return email.substring(email.indexOf('@') + 1, email.indexOf(IAM_ACCOUNT_SUFFIX));
+         String project_id = email.substring(email.indexOf('@') + 1, email.indexOf(IAM_ACCOUNT_SUFFIX));
+         int dot = project_id.indexOf('.');
+         return dot > 0
+               // Convert project_id.company_domain into company_domain:project_id
+               ? String.format("%s:%s", project_id.substring(dot + 1), project_id.substring(0, dot))
+               : project_id;
       }
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/52477d5e/common/googlecloud/src/test/java/org/jclouds/googlecloud/config/ClientEmailTest.java
----------------------------------------------------------------------
diff --git a/common/googlecloud/src/test/java/org/jclouds/googlecloud/config/ClientEmailTest.java b/common/googlecloud/src/test/java/org/jclouds/googlecloud/config/ClientEmailTest.java
index d47b199..90809a7 100644
--- a/common/googlecloud/src/test/java/org/jclouds/googlecloud/config/ClientEmailTest.java
+++ b/common/googlecloud/src/test/java/org/jclouds/googlecloud/config/ClientEmailTest.java
@@ -42,4 +42,8 @@ public class ClientEmailTest {
    public void testParseProjectIdFromIAMAccount() {
       assertEquals(toProjectNumber("account@project_id.iam.gserviceaccount.com"), "project_id");
    }
+
+   public void testParseCompanyAndProjectIdFromIAMAccount() {
+      assertEquals(toProjectNumber("account@project_id.company.com.iam.gserviceaccount.com"), "company.com:project_id");
+   }
 }