|
|
@@ -16,6 +16,8 @@ import org.elasticsearch.common.ValidationException;
|
|
|
import org.elasticsearch.common.settings.Settings;
|
|
|
import org.elasticsearch.core.Strings;
|
|
|
import org.elasticsearch.core.TimeValue;
|
|
|
+import org.elasticsearch.index.reindex.ReindexAction;
|
|
|
+import org.elasticsearch.index.reindex.ReindexRequest;
|
|
|
import org.elasticsearch.xcontent.XContentBuilder;
|
|
|
import org.elasticsearch.xcontent.XContentFactory;
|
|
|
import org.elasticsearch.xcontent.XContentType;
|
|
|
@@ -25,12 +27,16 @@ import org.elasticsearch.xpack.core.transform.TransformConfigVersion;
|
|
|
import org.elasticsearch.xpack.core.transform.TransformDeprecations;
|
|
|
import org.elasticsearch.xpack.core.transform.TransformField;
|
|
|
import org.elasticsearch.xpack.core.transform.action.GetTransformAction;
|
|
|
+import org.elasticsearch.xpack.core.transform.action.PutTransformAction;
|
|
|
import org.elasticsearch.xpack.core.transform.action.StartTransformAction;
|
|
|
import org.elasticsearch.xpack.core.transform.action.StopTransformAction;
|
|
|
import org.elasticsearch.xpack.core.transform.action.UpdateTransformAction;
|
|
|
+import org.elasticsearch.xpack.core.transform.transforms.DestConfig;
|
|
|
+import org.elasticsearch.xpack.core.transform.transforms.SourceConfig;
|
|
|
import org.elasticsearch.xpack.core.transform.transforms.TransformConfig;
|
|
|
import org.elasticsearch.xpack.core.transform.transforms.TransformConfigUpdate;
|
|
|
import org.elasticsearch.xpack.core.transform.transforms.persistence.TransformInternalIndexConstants;
|
|
|
+import org.elasticsearch.xpack.core.transform.transforms.pivot.PivotConfigTests;
|
|
|
import org.elasticsearch.xpack.core.transform.utils.TransformConfigVersionUtils;
|
|
|
import org.elasticsearch.xpack.transform.TransformSingleNodeTestCase;
|
|
|
import org.elasticsearch.xpack.transform.persistence.TransformInternalIndex;
|
|
|
@@ -253,4 +259,65 @@ public class TransformOldTransformsIT extends TransformSingleNodeTestCase {
|
|
|
assertMaxPageSearchSizeInSettings(transformId, expectedMaxPageSearchSize);
|
|
|
}
|
|
|
|
|
|
+ public void testMigratedTransformIndex() {
|
|
|
+ // create transform
|
|
|
+ var sourceIndex = "source-index";
|
|
|
+ createSourceIndex(sourceIndex);
|
|
|
+ var transformId = "transform-migrated-system-index";
|
|
|
+
|
|
|
+ var sourceConfig = new SourceConfig(sourceIndex);
|
|
|
+ var destConfig = new DestConfig("some-dest-index", null, null);
|
|
|
+ var config = new TransformConfig(
|
|
|
+ transformId,
|
|
|
+ sourceConfig,
|
|
|
+ destConfig,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ PivotConfigTests.randomPivotConfig(),
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null
|
|
|
+ );
|
|
|
+ var putTransform = new PutTransformAction.Request(config, true, TimeValue.THIRTY_SECONDS);
|
|
|
+ assertTrue(client().execute(PutTransformAction.INSTANCE, putTransform).actionGet().isAcknowledged());
|
|
|
+
|
|
|
+ // simulate migration by reindexing and aliasing
|
|
|
+ var newSystemIndex = TransformInternalIndexConstants.LATEST_INDEX_NAME + "-reindexed";
|
|
|
+ var reindexRequest = new ReindexRequest();
|
|
|
+ reindexRequest.setSourceIndices(TransformInternalIndexConstants.LATEST_INDEX_NAME);
|
|
|
+ reindexRequest.setDestIndex(newSystemIndex);
|
|
|
+ reindexRequest.setRefresh(true);
|
|
|
+ client().execute(ReindexAction.INSTANCE, reindexRequest).actionGet();
|
|
|
+
|
|
|
+ var aliasesRequest = admin().indices().prepareAliases(TimeValue.THIRTY_SECONDS, TimeValue.THIRTY_SECONDS);
|
|
|
+ aliasesRequest.removeIndex(TransformInternalIndexConstants.LATEST_INDEX_NAME);
|
|
|
+ aliasesRequest.addAlias(newSystemIndex, TransformInternalIndexConstants.LATEST_INDEX_NAME);
|
|
|
+ aliasesRequest.execute().actionGet();
|
|
|
+
|
|
|
+ // update should succeed
|
|
|
+ var updateConfig = new TransformConfigUpdate(
|
|
|
+ sourceConfig,
|
|
|
+ new DestConfig("some-new-dest-index", null, null),
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null,
|
|
|
+ null
|
|
|
+ );
|
|
|
+ var updateRequest = new UpdateTransformAction.Request(updateConfig, transformId, true, TimeValue.THIRTY_SECONDS);
|
|
|
+ client().execute(UpdateTransformAction.INSTANCE, updateRequest).actionGet();
|
|
|
+
|
|
|
+ // verify update succeeded
|
|
|
+ var getTransformRequest = new GetTransformAction.Request(transformId);
|
|
|
+ var getTransformResponse = client().execute(GetTransformAction.INSTANCE, getTransformRequest).actionGet();
|
|
|
+ var transformConfig = getTransformResponse.getTransformConfigurations().get(0);
|
|
|
+ assertThat(transformConfig.getDestination().getIndex(), equalTo("some-new-dest-index"));
|
|
|
+ }
|
|
|
+
|
|
|
}
|