Skip to content

Commit 43a9d4d

Browse files
author
Hendrik Muhs
authored
[Transform] switch to a composable template for the audit index (#79032)
switch to a composable template for the transform audit index
1 parent 4bb73a9 commit 43a9d4d

File tree

6 files changed

+89
-210
lines changed

6 files changed

+89
-210
lines changed

x-pack/plugin/src/test/java/org/elasticsearch/xpack/test/rest/AbstractXPackRestTest.java

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,15 @@
77
package org.elasticsearch.xpack.test.rest;
88

99
import com.carrotsearch.randomizedtesting.annotations.ParametersFactory;
10-
1110
import com.carrotsearch.randomizedtesting.annotations.TimeoutSuite;
11+
1212
import org.apache.http.HttpStatus;
1313
import org.apache.lucene.util.TimeUnits;
1414
import org.elasticsearch.ElasticsearchException;
15-
import org.elasticsearch.core.CheckedFunction;
1615
import org.elasticsearch.common.settings.Settings;
1716
import org.elasticsearch.common.util.concurrent.ThreadContext;
1817
import org.elasticsearch.common.xcontent.support.XContentMapValues;
18+
import org.elasticsearch.core.CheckedFunction;
1919
import org.elasticsearch.plugins.MetadataUpgrader;
2020
import org.elasticsearch.test.SecuritySettingsSourceField;
2121
import org.elasticsearch.test.rest.yaml.ClientYamlTestCandidate;
@@ -26,7 +26,6 @@
2626
import org.elasticsearch.xpack.core.ml.job.persistence.AnomalyDetectorsIndexFields;
2727
import org.elasticsearch.xpack.core.ml.notifications.NotificationsIndex;
2828
import org.elasticsearch.xpack.core.rollup.job.RollupJob;
29-
import org.elasticsearch.xpack.core.transform.transforms.persistence.TransformInternalIndexConstants;
3029
import org.junit.After;
3130
import org.junit.Before;
3231

@@ -79,7 +78,7 @@ public void setupForTests() throws Exception {
7978
}
8079

8180
/**
82-
* Waits for Machine Learning and Transform templates to be created by the {@link MetadataUpgrader}
81+
* Waits for Machine Learning templates to be created by the {@link MetadataUpgrader}
8382
*/
8483
private void waitForTemplates() {
8584
if (installTemplates()) {
@@ -94,16 +93,6 @@ private void waitForTemplates() {
9493
response -> true,
9594
() -> "Exception when waiting for [" + template + "] template to be created");
9695
}
97-
98-
List<String> legacyTemplates = Collections.singletonList(
99-
TransformInternalIndexConstants.AUDIT_INDEX
100-
);
101-
102-
for (String legacyTemplate : legacyTemplates) {
103-
awaitCallApi("indices.exists_template", singletonMap("name", legacyTemplate), emptyList(),
104-
response -> true,
105-
() -> "Exception when waiting for [" + legacyTemplate + "] legacy template to be created");
106-
}
10796
}
10897
}
10998

x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/Transform.java

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@
2121
import org.elasticsearch.client.Client;
2222
import org.elasticsearch.client.OriginSettingClient;
2323
import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
24-
import org.elasticsearch.cluster.metadata.IndexTemplateMetadata;
2524
import org.elasticsearch.cluster.metadata.Metadata;
2625
import org.elasticsearch.cluster.node.DiscoveryNodes;
2726
import org.elasticsearch.cluster.service.ClusterService;
@@ -72,7 +71,6 @@
7271
import org.elasticsearch.xpack.core.transform.action.UpdateTransformAction;
7372
import org.elasticsearch.xpack.core.transform.action.UpgradeTransformsAction;
7473
import org.elasticsearch.xpack.core.transform.action.ValidateTransformAction;
75-
import org.elasticsearch.xpack.core.transform.transforms.persistence.TransformInternalIndexConstants;
7674
import org.elasticsearch.xpack.transform.action.TransportDeleteTransformAction;
7775
import org.elasticsearch.xpack.transform.action.TransportGetTransformAction;
7876
import org.elasticsearch.xpack.transform.action.TransportGetTransformStatsAction;
@@ -108,9 +106,7 @@
108106
import java.util.Collection;
109107
import java.util.Collections;
110108
import java.util.List;
111-
import java.util.Map;
112109
import java.util.function.Supplier;
113-
import java.util.function.UnaryOperator;
114110

115111
import static org.elasticsearch.xpack.core.ClientHelper.TRANSFORM_ORIGIN;
116112
import static org.elasticsearch.xpack.core.transform.TransformMessages.FAILED_TO_UNSET_RESET_MODE;
@@ -241,18 +237,6 @@ public Collection<Object> createComponents(
241237
return Arrays.asList(transformServices.get(), new TransformClusterStateListener(clusterService, client));
242238
}
243239

244-
@Override
245-
public UnaryOperator<Map<String, IndexTemplateMetadata>> getIndexTemplateMetadataUpgrader() {
246-
return templates -> {
247-
try {
248-
templates.put(TransformInternalIndexConstants.AUDIT_INDEX, TransformInternalIndex.getAuditIndexTemplateMetadata());
249-
} catch (IOException e) {
250-
logger.warn("Error creating transform audit index", e);
251-
}
252-
return templates;
253-
};
254-
}
255-
256240
@Override
257241
public List<PersistentTasksExecutor<?>> getPersistentTasksExecutor(
258242
ClusterService clusterService,

x-pack/plugin/transform/src/main/java/org/elasticsearch/xpack/transform/notifications/TransformAuditor.java

Lines changed: 35 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,16 @@
77
package org.elasticsearch.xpack.transform.notifications;
88

99
import com.carrotsearch.hppc.cursors.ObjectObjectCursor;
10+
11+
import org.elasticsearch.ElasticsearchException;
12+
import org.elasticsearch.Version;
1013
import org.elasticsearch.action.admin.indices.alias.Alias;
14+
import org.elasticsearch.action.admin.indices.template.put.PutComposableIndexTemplateAction;
1115
import org.elasticsearch.action.admin.indices.template.put.PutIndexTemplateRequest;
1216
import org.elasticsearch.client.Client;
1317
import org.elasticsearch.client.OriginSettingClient;
1418
import org.elasticsearch.cluster.metadata.AliasMetadata;
19+
import org.elasticsearch.cluster.metadata.ComposableIndexTemplate;
1520
import org.elasticsearch.cluster.metadata.IndexTemplateMetadata;
1621
import org.elasticsearch.cluster.service.ClusterService;
1722
import org.elasticsearch.xcontent.ToXContent;
@@ -23,6 +28,7 @@
2328
import org.elasticsearch.xpack.transform.persistence.TransformInternalIndex;
2429

2530
import java.io.IOException;
31+
import java.util.Collections;
2632

2733
import static org.elasticsearch.xpack.core.ClientHelper.TRANSFORM_ORIGIN;
2834

@@ -34,22 +40,24 @@ public class TransformAuditor extends AbstractAuditor<TransformAuditMessage> {
3440
private volatile boolean isResetMode = false;
3541

3642
public TransformAuditor(Client client, String nodeName, ClusterService clusterService) {
37-
super(new OriginSettingClient(client, TRANSFORM_ORIGIN), TransformInternalIndexConstants.AUDIT_INDEX,
38-
TransformInternalIndexConstants.AUDIT_INDEX, null,
43+
super(
44+
new OriginSettingClient(client, TRANSFORM_ORIGIN),
45+
TransformInternalIndexConstants.AUDIT_INDEX,
46+
TransformInternalIndexConstants.AUDIT_INDEX,
47+
Version.V_7_16_0,
3948
() -> {
49+
// legacy template implementation, to be removed in 8.x
4050
try {
4151
IndexTemplateMetadata templateMeta = TransformInternalIndex.getAuditIndexTemplateMetadata();
4252

43-
PutIndexTemplateRequest request = new PutIndexTemplateRequest(templateMeta.name())
44-
.patterns(templateMeta.patterns())
53+
PutIndexTemplateRequest request = new PutIndexTemplateRequest(templateMeta.name()).patterns(templateMeta.patterns())
4554
.version(templateMeta.version())
4655
.settings(templateMeta.settings())
4756
.mapping(templateMeta.mappings().uncompressed(), XContentType.JSON);
4857

4958
for (ObjectObjectCursor<String, AliasMetadata> cursor : templateMeta.getAliases()) {
5059
AliasMetadata meta = cursor.value;
51-
Alias alias = new Alias(meta.alias())
52-
.indexRouting(meta.indexRouting())
60+
Alias alias = new Alias(meta.alias()).indexRouting(meta.indexRouting())
5361
.searchRouting(meta.searchRouting())
5462
.isHidden(meta.isHidden())
5563
.writeIndex(meta.writeIndex());
@@ -62,10 +70,29 @@ public TransformAuditor(Client client, String nodeName, ClusterService clusterSe
6270

6371
return request;
6472
} catch (IOException e) {
65-
return null;
73+
throw new ElasticsearchException("Failure creating transform notification index", e);
74+
}
75+
},
76+
() -> {
77+
try {
78+
PutComposableIndexTemplateAction.Request request = new PutComposableIndexTemplateAction.Request(
79+
TransformInternalIndexConstants.AUDIT_INDEX
80+
).indexTemplate(
81+
new ComposableIndexTemplate.Builder().template(TransformInternalIndex.getAuditIndexTemplate())
82+
.version((long) Version.CURRENT.id)
83+
.indexPatterns(Collections.singletonList(TransformInternalIndexConstants.AUDIT_INDEX_PREFIX + "*"))
84+
.priority(Long.MAX_VALUE)
85+
.build()
86+
);
87+
return request;
88+
} catch (IOException e) {
89+
throw new ElasticsearchException("Failure creating transform notification index", e);
6690
}
6791
},
68-
() -> null, nodeName, TransformAuditMessage::new, clusterService);
92+
nodeName,
93+
TransformAuditMessage::new,
94+
clusterService
95+
);
6996
clusterService.addListener(event -> {
7097
if (event.metadataChanged()) {
7198
isResetMode = TransformMetadata.getTransformMetadata(event.state()).isResetMode();

0 commit comments

Comments
 (0)