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");
+ }
}