Allow the Domain id as a scope
Project: http://git-wip-us.apache.org/repos/asf/jclouds/repo Commit: http://git-wip-us.apache.org/repos/asf/jclouds/commit/f565dd7d Tree: http://git-wip-us.apache.org/repos/asf/jclouds/tree/f565dd7d Diff: http://git-wip-us.apache.org/repos/asf/jclouds/diff/f565dd7d Branch: refs/heads/keystonev3 Commit: f565dd7d83ec2e00f4548cd09e8caa6bf801b656 Parents: 851aae7 Author: Ignasi Barrera <[email protected]> Authored: Wed Jan 10 16:47:07 2018 +0100 Committer: Ignasi Barrera <[email protected]> Committed: Thu Jan 11 16:21:31 2018 +0100 ---------------------------------------------------------------------- .../keystone/v3/binders/BindAuthToJsonPayload.java | 15 +++++++++++---- .../jclouds/openstack/keystone/v3/domain/Auth.java | 11 +++++++++++ 2 files changed, 22 insertions(+), 4 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jclouds/blob/f565dd7d/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 9ecbad7..c706877 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 @@ -21,6 +21,7 @@ import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Predicates.instanceOf; 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 java.util.Map; @@ -30,6 +31,7 @@ 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.ProjectScope; @@ -85,10 +87,15 @@ public abstract class BindAuthToJsonPayload<T> extends BindToJsonPayload impleme // 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]), "Scope prefix should be '%s' or '%s'", - PROJECT, DOMAIN); - return PROJECT.equals(parts[0]) ? ProjectScope.create(Id.create(parts[1])) : DomainScope.create(Domain - .create(parts[1])); + 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); + if (PROJECT.equals(parts[0])) { + return ProjectScope.create(Id.create(parts[1])); + } else if (DOMAIN.equals(parts[0])) { + return DomainScope.create(Domain.create(parts[1])); + } else { + return DomainIdScope.create(Id.create(parts[1])); + } } } http://git-wip-us.apache.org/repos/asf/jclouds/blob/f565dd7d/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 9f2be4c..01d5d60 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 @@ -100,6 +100,7 @@ public abstract class Auth { public static class Scope { public static final String PROJECT = "project"; public static final String DOMAIN = "domain"; + public static final String DOMAIN_ID = "domain"; public static final String UNSCOPED = "unscoped"; } @@ -114,6 +115,16 @@ public abstract class Auth { } @AutoValue + public abstract static class DomainIdScope { + public abstract Id domain(); + + @SerializedNames({ Scope.PROJECT }) + public static DomainIdScope create(Id id) { + return new AutoValue_Auth_DomainIdScope(id); + } + } + + @AutoValue public abstract static class DomainScope { public abstract Domain domain();
