Repository: jclouds Updated Branches: refs/heads/gsoc2016-ivan 300261b24 -> 81e348561 (forced update)
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/gsoc2016-ivan 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"); + } }
