Repository: jclouds
Updated Branches:
  refs/heads/keystonev3 ec9a88234 -> e17a18621


Add support for project name in authorization scope


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

Branch: refs/heads/keystonev3
Commit: e17a1862124bf007c20aa9853dc373937411e150
Parents: ec9a882
Author: Ignasi Barrera <[email protected]>
Authored: Thu Jan 11 17:26:09 2018 +0100
Committer: Ignasi Barrera <[email protected]>
Committed: Thu Jan 11 17:26:09 2018 +0100

----------------------------------------------------------------------
 .../v3/binders/BindAuthToJsonPayload.java       | 28 +++++++++++++-------
 .../openstack/keystone/v3/domain/Auth.java      | 27 +++++++++++++------
 .../v3/auth/V3AuthenticationApiMockTest.java    |  2 +-
 .../v3/internal/BaseV3KeystoneApiMockTest.java  |  2 +-
 4 files changed, 39 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jclouds/blob/e17a1862/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/binders/BindAuthToJsonPayload.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/binders/BindAuthToJsonPayload.java
 
b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/binders/BindAuthToJsonPayload.java
index 3b9ddc2..80d42a3 100644
--- 
a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/binders/BindAuthToJsonPayload.java
+++ 
b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/binders/BindAuthToJsonPayload.java
@@ -23,28 +23,35 @@ import static com.google.common.collect.Iterables.tryFind;
 import static org.jclouds.openstack.keystone.v3.domain.Auth.Scope.DOMAIN;
 import static org.jclouds.openstack.keystone.v3.domain.Auth.Scope.DOMAIN_ID;
 import static org.jclouds.openstack.keystone.v3.domain.Auth.Scope.PROJECT;
+import static org.jclouds.openstack.keystone.v3.domain.Auth.Scope.PROJECT_ID;
+import static org.jclouds.openstack.keystone.v3.domain.Auth.Scope.UNSCOPED;
 
 import java.util.Map;
+import java.util.Set;
 
 import org.jclouds.http.HttpRequest;
 import org.jclouds.json.Json;
 import org.jclouds.openstack.keystone.auth.domain.TenantOrDomainAndCredentials;
 import org.jclouds.openstack.keystone.v3.domain.Auth;
-import org.jclouds.openstack.keystone.v3.domain.Auth.Domain;
 import org.jclouds.openstack.keystone.v3.domain.Auth.DomainIdScope;
 import org.jclouds.openstack.keystone.v3.domain.Auth.DomainScope;
 import org.jclouds.openstack.keystone.v3.domain.Auth.Id;
+import org.jclouds.openstack.keystone.v3.domain.Auth.Name;
+import org.jclouds.openstack.keystone.v3.domain.Auth.ProjectIdScope;
 import org.jclouds.openstack.keystone.v3.domain.Auth.ProjectScope;
-import org.jclouds.openstack.keystone.v3.domain.Auth.Scope;
 import org.jclouds.rest.MapBinder;
 import org.jclouds.rest.binders.BindToJsonPayload;
 import org.jclouds.rest.internal.GeneratedHttpRequest;
 
 import com.google.common.base.Optional;
 import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableSet;
 
 public abstract class BindAuthToJsonPayload<T> extends BindToJsonPayload 
implements MapBinder {
 
+   private static final Set<String> SCOPE_PREFIXES = ImmutableSet
+         .of(PROJECT, PROJECT_ID, DOMAIN, DOMAIN_ID);
+
    protected BindAuthToJsonPayload(Json jsonBinder) {
       super(jsonBinder);
    }
@@ -71,26 +78,27 @@ public abstract class BindAuthToJsonPayload<T> extends 
BindToJsonPayload impleme
 
       return authRequest;
    }
-   
+
    private Object parseScope(TenantOrDomainAndCredentials<T> credentials) {
       String scope = credentials.scope();
       // If there is no prefix, assume an unscoped authentication
       if (!scope.contains(":")) {
-         checkArgument(scope.equals(Scope.UNSCOPED), "Invalid scope: %s", 
scope);
-         return Scope.UNSCOPED;
+         checkArgument(scope.equals(UNSCOPED), "Invalid scope: %s", scope);
+         return UNSCOPED;
       }
       // Otherwise, parse if it is a project or domain scope
       String[] parts = scope.split(":");
       checkArgument(parts.length == 2, "Invalid scope: %s", scope);
-      checkArgument(PROJECT.equals(parts[0]) || DOMAIN.equals(parts[0]) || 
DOMAIN_ID.equals(parts[0]),
-            "Scope prefix should be '%s', '%s' or '%s'", PROJECT, DOMAIN, 
DOMAIN_ID);
+      checkArgument(SCOPE_PREFIXES.contains(parts[0]), "Scope prefix should 
be: %s", SCOPE_PREFIXES);
+
       if (PROJECT.equals(parts[0])) {
-         return ProjectScope.create(Id.create(parts[1]));
+         return ProjectScope.create(Name.create(parts[1]));
+      } else if (PROJECT_ID.equals(parts[0])) {
+         return ProjectIdScope.create(Id.create(parts[1]));
       } else if (DOMAIN.equals(parts[0])) {
-         return DomainScope.create(Domain.create(parts[1]));
+         return DomainScope.create(Name.create(parts[1]));
       } else {
          return DomainIdScope.create(Id.create(parts[1]));
       }
    }
-
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e17a1862/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/domain/Auth.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/domain/Auth.java
 
b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/domain/Auth.java
index c8ebc3e..63fdb95 100644
--- 
a/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/domain/Auth.java
+++ 
b/apis/openstack-keystone/src/main/java/org/jclouds/openstack/keystone/v3/domain/Auth.java
@@ -88,17 +88,18 @@ public abstract class Auth {
    }
    
    @AutoValue
-   public abstract static class Domain {
+   public abstract static class Name {
       @Nullable public abstract String name();
 
       @SerializedNames({ "name" })
-      public static Domain create(String name) {
-         return new AutoValue_Auth_Domain(name);
+      public static Name create(String name) {
+         return new AutoValue_Auth_Name(name);
       }
    }
    
    public static class Scope {
       public static final String PROJECT = "project";
+      public static final String PROJECT_ID = "projectId";
       public static final String DOMAIN = "domain";
       public static final String DOMAIN_ID = "domainId";
       public static final String UNSCOPED = "unscoped";
@@ -106,11 +107,21 @@ public abstract class Auth {
 
    @AutoValue
    public abstract static class ProjectScope {
+      public abstract Name project();
+
+      @SerializedNames({ Scope.PROJECT })
+      public static ProjectScope create(Name name) {
+         return new AutoValue_Auth_ProjectScope(name);
+      }
+   }
+   
+   @AutoValue
+   public abstract static class ProjectIdScope {
       public abstract Id project();
 
       @SerializedNames({ Scope.PROJECT })
-      public static ProjectScope create(Id id) {
-         return new AutoValue_Auth_ProjectScope(id);
+      public static ProjectIdScope create(Id id) {
+         return new AutoValue_Auth_ProjectIdScope(id);
       }
    }
    
@@ -126,11 +137,11 @@ public abstract class Auth {
    
    @AutoValue
    public abstract static class DomainScope {
-      public abstract Domain domain();
+      public abstract Name domain();
 
       @SerializedNames({ Scope.DOMAIN })
-      public static DomainScope create(Domain domain) {
-         return new AutoValue_Auth_DomainScope(domain);
+      public static DomainScope create(Name name) {
+         return new AutoValue_Auth_DomainScope(name);
       }
    }
 }

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e17a1862/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java
 
b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java
index 7cd2d29..d601913 100644
--- 
a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java
+++ 
b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/auth/V3AuthenticationApiMockTest.java
@@ -52,7 +52,7 @@ public class V3AuthenticationApiMockTest extends 
BaseV3KeystoneApiMockTest {
 
       TenantOrDomainAndCredentials<PasswordCredentials> credentials = 
TenantOrDomainAndCredentials.<PasswordCredentials> builder()
             .tenantOrDomainName("domain")
-            .scope("project:1234567890")
+            .scope("projectId:1234567890")
             
.credentials(PasswordCredentials.builder().username("identity").password("credential").build()).build();
       
       AuthInfo authInfo = authenticationApi.authenticatePassword(credentials);

http://git-wip-us.apache.org/repos/asf/jclouds/blob/e17a1862/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
----------------------------------------------------------------------
diff --git 
a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
 
b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
index bdb8aa9..ec3f7ba 100644
--- 
a/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
+++ 
b/apis/openstack-keystone/src/test/java/org/jclouds/openstack/keystone/v3/internal/BaseV3KeystoneApiMockTest.java
@@ -89,7 +89,7 @@ public class BaseV3KeystoneApiMockTest {
    
    protected Properties overrides() {
       Properties overrides = new Properties();
-      overrides.setProperty(KeystoneProperties.SCOPE, "project:1234567890");
+      overrides.setProperty(KeystoneProperties.SCOPE, "projectId:1234567890");
       overrides.setProperty(KeystoneProperties.SERVICE_TYPE, "identityv3");
       return overrides;
    }

Reply via email to