Skip to content

Commit cd6511f

Browse files
committed
Nits
1 parent b11d30a commit cd6511f

File tree

3 files changed

+39
-43
lines changed

3 files changed

+39
-43
lines changed

server/src/main/java/org/elasticsearch/cluster/metadata/IndexAbstractionResolver.java

Lines changed: 27 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@
2424
import java.util.ArrayList;
2525
import java.util.LinkedHashMap;
2626
import java.util.LinkedHashSet;
27-
import java.util.List;
2827
import java.util.Map;
2928
import java.util.Set;
3029
import java.util.function.BiPredicate;
@@ -38,14 +37,32 @@ public IndexAbstractionResolver(IndexNameExpressionResolver indexNameExpressionR
3837
this.indexNameExpressionResolver = indexNameExpressionResolver;
3938
}
4039

40+
public ReplacedIndexExpressions resolveIndexAbstractionsForCrossProjectSearch(
41+
Iterable<String> indices,
42+
IndicesOptions indicesOptions,
43+
ProjectMetadata projectMetadata,
44+
Function<IndexComponentSelector, Set<String>> allAuthorizedAndAvailableBySelector,
45+
BiPredicate<String, IndexComponentSelector> isAuthorized,
46+
boolean includeDataStreams
47+
) {
48+
return resolveIndexAbstractions(
49+
indices,
50+
// lenient mode required to avoid failing if an index exists in another project
51+
lenientIndicesOptions(indicesOptions),
52+
projectMetadata,
53+
allAuthorizedAndAvailableBySelector,
54+
isAuthorized,
55+
includeDataStreams
56+
);
57+
}
58+
4159
public ReplacedIndexExpressions resolveIndexAbstractions(
4260
Iterable<String> indices,
4361
IndicesOptions indicesOptions,
4462
ProjectMetadata projectMetadata,
4563
Function<IndexComponentSelector, Set<String>> allAuthorizedAndAvailableBySelector,
4664
BiPredicate<String, IndexComponentSelector> isAuthorized,
47-
boolean includeDataStreams,
48-
boolean ignoreUnavailableBwcBehavior
65+
boolean includeDataStreams
4966
) {
5067
final Map<String, ReplacedIndexExpression> replaced = new LinkedHashMap<>();
5168

@@ -154,25 +171,6 @@ && isIndexVisible(
154171
return new ReplacedIndexExpressions(replaced);
155172
}
156173

157-
public List<String> resolveIndexAbstractions(
158-
Iterable<String> indices,
159-
IndicesOptions indicesOptions,
160-
ProjectMetadata projectMetadata,
161-
Function<IndexComponentSelector, Set<String>> allAuthorizedAndAvailableBySelector,
162-
BiPredicate<String, IndexComponentSelector> isAuthorized,
163-
boolean includeDataStreams
164-
) {
165-
return resolveIndexAbstractions(
166-
indices,
167-
indicesOptions,
168-
projectMetadata,
169-
allAuthorizedAndAvailableBySelector,
170-
isAuthorized,
171-
includeDataStreams,
172-
true
173-
).indicesAsList();
174-
}
175-
176174
private static void resolveSelectorsAndCollect(
177175
String indexAbstraction,
178176
String selectorString,
@@ -342,4 +340,11 @@ && isIndexVisible(
342340
private static boolean isVisibleDueToImplicitHidden(String expression, String index) {
343341
return index.startsWith(".") && expression.startsWith(".") && Regex.isSimpleMatchPattern(expression);
344342
}
343+
344+
private static IndicesOptions lenientIndicesOptions(IndicesOptions indicesOptions) {
345+
return IndicesOptions.builder(indicesOptions)
346+
.concreteTargetOptions(new IndicesOptions.ConcreteTargetOptions(true))
347+
.wildcardOptions(IndicesOptions.WildcardOptions.builder(indicesOptions.wildcardOptions()).allowEmptyExpressions(true).build())
348+
.build();
349+
}
345350
}

server/src/test/java/org/elasticsearch/cluster/metadata/IndexAbstractionResolverTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -369,9 +369,9 @@ private List<String> resolveAbstractions(List<String> expressions, IndicesOption
369369
indicesOptions,
370370
projectMetadata,
371371
(ignored) -> mask,
372-
(ignored, nothing) -> true,
372+
(ignored1, nothing) -> true,
373373
true
374-
);
374+
).indicesAsList();
375375
}
376376

377377
private boolean isIndexVisible(String index, String selector) {

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

Lines changed: 10 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -379,15 +379,15 @@ ResolvedIndices resolveIndicesAndAliases(
379379
);
380380
if (crossProjectReplacedIndexExpressions != null) {
381381
logger.info("Handling as CPS request for [{}]", Arrays.toString(crossProjectSearchCapableRequest.indices()));
382-
ReplacedIndexExpressions replacedExpressions = indexAbstractionResolver.resolveIndexAbstractions(
383-
crossProjectReplacedIndexExpressions.getLocalExpressions(),
384-
lenientIndicesOptions(indicesOptions),
385-
projectMetadata,
386-
authorizedIndices::all,
387-
authorizedIndices::check,
388-
indicesRequest.includeDataStreams(),
389-
true
390-
);
382+
ReplacedIndexExpressions replacedExpressions = indexAbstractionResolver
383+
.resolveIndexAbstractionsForCrossProjectSearch(
384+
crossProjectReplacedIndexExpressions.getLocalExpressions(),
385+
indicesOptions,
386+
projectMetadata,
387+
authorizedIndices::all,
388+
authorizedIndices::check,
389+
indicesRequest.includeDataStreams()
390+
);
391391
crossProjectReplacedIndexExpressions.replaceLocalExpressions(replacedExpressions);
392392
crossProjectSearchCapableRequest.setReplacedIndexExpressions(crossProjectReplacedIndexExpressions);
393393
crossProjectSearchCapableRequest.indices(crossProjectReplacedIndexExpressions.indices());
@@ -423,8 +423,7 @@ ResolvedIndices resolveIndicesAndAliases(
423423
projectMetadata,
424424
authorizedIndices::all,
425425
authorizedIndices::check,
426-
indicesRequest.includeDataStreams(),
427-
true
426+
indicesRequest.includeDataStreams()
428427
);
429428
replaceable.setReplacedIndexExpressions(resolved);
430429
resolvedIndicesBuilder.addLocal(resolved.indicesAsList());
@@ -500,14 +499,6 @@ ResolvedIndices resolveIndicesAndAliases(
500499
return resolvedIndicesBuilder.build();
501500
}
502501

503-
// TODO defs does not belong here
504-
private static IndicesOptions lenientIndicesOptions(IndicesOptions indicesOptions) {
505-
return IndicesOptions.builder(indicesOptions)
506-
.concreteTargetOptions(new IndicesOptions.ConcreteTargetOptions(true))
507-
.wildcardOptions(IndicesOptions.WildcardOptions.builder(indicesOptions.wildcardOptions()).allowEmptyExpressions(true).build())
508-
.build();
509-
}
510-
511502
/**
512503
* Special handling of the value to authorize for a put mapping request. Dynamic put mapping
513504
* requests use a concrete index, but we allow permissions to be defined on aliases so if the

0 commit comments

Comments
 (0)