Juan Hernandez has uploaded a new change for review. Change subject: [WIP] Add internal directory provider ......................................................................
[WIP] Add internal directory provider This change adds an implementation of the internal directory provider based on the new directory interface introduced previously. It works like the previous internal domain, with only one "admin" user. Change-Id: I7f4e7db1b42ded74f611a9453b3db229c6d069d1 Signed-off-by: Juan Hernandez <juan.hernan...@redhat.com> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/directory/internal/InternalDirectory.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/directory/internal/InternalDirectoryProvider.java A backend/manager/modules/bll/src/main/resources/META-INF/services/org.ovirt.engine.core.bll.directory.DirectorySpi 3 files changed, 97 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/01/15601/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/directory/internal/InternalDirectory.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/directory/internal/InternalDirectory.java new file mode 100644 index 0000000..ef14049 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/directory/internal/InternalDirectory.java @@ -0,0 +1,70 @@ +package org.ovirt.engine.core.bll.directory.internal; + +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +import org.ovirt.engine.core.common.config.Config; +import org.ovirt.engine.core.common.config.ConfigValues; +import org.ovirt.engine.core.common.users.Directory; +import org.ovirt.engine.core.common.users.DirectoryGroup; +import org.ovirt.engine.core.common.users.DirectoryUser; +import org.ovirt.engine.core.compat.Guid; + +public class InternalDirectory implements Directory { + // This is the only user of this directory: + private final DirectoryUser admin = new DirectoryUser( + this, + Guid.createGuidFromString("fdfc627c-d875-11e0-90f0-83df133b58cc"), + Config.<String> GetValue(ConfigValues.AdminUser) + ); + + @Override + public String getName() { + return Config.<String> GetValue(ConfigValues.AdminDomain); + } + + @Override + public DirectoryUser findUserById(Guid id) { + if (admin.getId().equals(id)) { + return admin; + } + return null; + } + + @Override + public DirectoryUser findUserByName(String name) { + if (admin.getName().equals(name)) { + return admin; + } + return null; + } + + @Override + public Set<DirectoryUser> findUsersById(Set<Guid> ids) { + Set<DirectoryUser> result = new HashSet<>(ids.size()); + for (Guid id : ids) { + if (admin.equals(id)) { + result.add(admin); + } + } + return result; + } + + @Override + public DirectoryGroup findGroupById(Guid id) { + return null; + } + + @Override + public Set<DirectoryUser> findUsersByQuery(String query) { + // This directory doesn't support queries, so we just return all the + // users regardless of what is the query: + return Collections.singleton(admin); + } + + @Override + public Set<DirectoryGroup> findGroupsByQuery(String query) { + return Collections.emptySet(); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/directory/internal/InternalDirectoryProvider.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/directory/internal/InternalDirectoryProvider.java new file mode 100644 index 0000000..ccc9eff --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/directory/internal/InternalDirectoryProvider.java @@ -0,0 +1,26 @@ +package org.ovirt.engine.core.bll.directory.internal; + +import java.util.Collections; +import java.util.List; + +import org.ovirt.engine.core.bll.directory.DirectorySpi; +import org.ovirt.engine.core.common.users.Directory; + +public class InternalDirectoryProvider implements DirectorySpi { + // The list of directories managed by this implementation (will be lazily + // initialized later: + private volatile List<Directory> directories; + + @Override + public List<Directory> getDirectories() { + if (directories == null) { + synchronized (InternalDirectoryProvider.class) { + if (directories == null) { + Directory directory = new InternalDirectory(); + directories = Collections.singletonList(directory); + } + } + } + return directories; + } +} diff --git a/backend/manager/modules/bll/src/main/resources/META-INF/services/org.ovirt.engine.core.bll.directory.DirectorySpi b/backend/manager/modules/bll/src/main/resources/META-INF/services/org.ovirt.engine.core.bll.directory.DirectorySpi new file mode 100644 index 0000000..602ccf3 --- /dev/null +++ b/backend/manager/modules/bll/src/main/resources/META-INF/services/org.ovirt.engine.core.bll.directory.DirectorySpi @@ -0,0 +1 @@ +org.ovirt.engine.core.bll.directory.internal.InternalDirectoryProvider -- To view, visit http://gerrit.ovirt.org/15601 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I7f4e7db1b42ded74f611a9453b3db229c6d069d1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Juan Hernandez <juan.hernan...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches