Skip to content

Commit 528bfe9

Browse files
Add ProjectMetadata as a parameter to ProjectRoutingResolver.resolve (elastic#140291)
This change adds ProjectMetadata as a parameter to ProjectRoutingResolver.resolve which is required to support saced project routing expressions
1 parent f15069a commit 528bfe9

File tree

2 files changed

+14
-5
lines changed

2 files changed

+14
-5
lines changed

server/src/main/java/org/elasticsearch/search/crossproject/ProjectRoutingResolver.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99

1010
package org.elasticsearch.search.crossproject;
1111

12+
import org.elasticsearch.cluster.metadata.ProjectMetadata;
13+
1214
/**
1315
* Filter for the target projects based on the provided project routing string.
1416
*/
@@ -21,12 +23,14 @@ public interface ProjectRoutingResolver {
2123

2224
/**
2325
* Filters the specified TargetProjects based on the provided project routing string
24-
* @param projectRouting the project_routing specified in the request object
25-
* @param targetProjects The target projects to be filtered
26+
*
27+
* @param projectRouting the project_routing specified in the request object
28+
* @param projectMetadata project metadata for the origin project
29+
* @param targetProjects The target projects to be filtered
2630
* @return A new TargetProjects instance containing only the projects that match the project routing.
2731
*/
28-
TargetProjects resolve(String projectRouting, TargetProjects targetProjects);
32+
TargetProjects resolve(String projectRouting, ProjectMetadata projectMetadata, TargetProjects targetProjects);
2933

3034
/** No-op router - just returns the provided target projects. */
31-
ProjectRoutingResolver NOOP = (projectRouting, targetProjects) -> targetProjects;
35+
ProjectRoutingResolver NOOP = (projectRouting, projectMetadata, targetProjects) -> targetProjects;
3236
}

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authz/IndicesAndAliasesResolver.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ ResolvedIndices resolveIndicesAndAliases(
404404
if (crossProjectModeDecider.resolvesCrossProject(replaceable)) {
405405
final var resolvedProjects = crossProjectRoutingResolver.resolve(
406406
replaceable.getProjectRouting(),
407+
projectMetadata,
407408
authorizedProjects
408409
);
409410
final var rewritten = CrossProjectIndexExpressionsRewriter.rewriteIndexExpression(
@@ -450,7 +451,11 @@ ResolvedIndices resolveIndicesAndAliases(
450451
assert authorizedProjects != TargetProjects.LOCAL_ONLY_FOR_CPS_DISABLED
451452
: "resolving cross-project request but authorized project is local only";
452453

453-
final var resolvedProjects = crossProjectRoutingResolver.resolve(replaceable.getProjectRouting(), authorizedProjects);
454+
final var resolvedProjects = crossProjectRoutingResolver.resolve(
455+
replaceable.getProjectRouting(),
456+
projectMetadata,
457+
authorizedProjects
458+
);
454459

455460
final ResolvedIndexExpressions resolved = indexAbstractionResolver.resolveIndexAbstractions(
456461
Arrays.asList(replaceable.indices()),

0 commit comments

Comments
 (0)