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 <[email protected]>
Authored: Sun Aug 7 16:21:56 2016 -0700
Committer: Ignasi Barrera <[email protected]>
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 
[email protected] or " //
             + "[email protected] 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");
+   }
 }

Reply via email to