diff --git a/server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java b/server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java index 8a791333e8639..d50a3648563b7 100644 --- a/server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java +++ b/server/src/main/java/org/elasticsearch/cluster/metadata/ProjectMetadata.java @@ -24,6 +24,8 @@ import org.elasticsearch.common.io.stream.StreamOutput; import org.elasticsearch.common.io.stream.VersionedNamedWriteable; import org.elasticsearch.common.regex.Regex; +import org.elasticsearch.common.settings.ProjectSecrets; +import org.elasticsearch.common.settings.SecureString; import org.elasticsearch.common.settings.Settings; import org.elasticsearch.common.util.ArrayUtils; import org.elasticsearch.common.util.Maps; @@ -1103,6 +1105,10 @@ static boolean isStateEquals(ProjectMetadata project1, ProjectMetadata project2) return true; } + public Optional getSecret(String key) { + return Optional.ofNullable(this.custom(ProjectSecrets.TYPE)).map(secrets -> secrets.getSettings().getString(key)); + } + public static ProjectMetadata.Builder builder(ProjectId id) { return new ProjectMetadata.Builder().id(id); } diff --git a/server/src/main/java/org/elasticsearch/cluster/project/ProjectResolver.java b/server/src/main/java/org/elasticsearch/cluster/project/ProjectResolver.java index cb5a499c7df1f..71115dc3765a1 100644 --- a/server/src/main/java/org/elasticsearch/cluster/project/ProjectResolver.java +++ b/server/src/main/java/org/elasticsearch/cluster/project/ProjectResolver.java @@ -33,6 +33,14 @@ default ProjectMetadata getProjectMetadata(ClusterState clusterState) { return getProjectMetadata(clusterState.metadata()); } + default boolean hasProject(ClusterState clusterState) { + return hasProject(clusterState.metadata()); + } + + default boolean hasProject(Metadata metadata) { + return metadata.hasProject(getProjectId()); + } + // TODO: What happens if the context does not have a project? throw or return null? default ProjectState getProjectState(ClusterState clusterState) { final ProjectId id = getProjectId();