(cherry picked from commit 681eb58718c4cce9ed18a835f4eadb06997e91a0) Signed-off-by: Andrei Dan <andrei.dan@elastic.co>
This commit is contained in:
parent
c56424f740
commit
3590a77b2b
|
@ -60,6 +60,9 @@ public class IndexLifecycleNamedXContentProvider implements NamedXContentProvide
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class,
|
new NamedXContentRegistry.Entry(LifecycleAction.class,
|
||||||
new ParseField(MigrateAction.NAME),
|
new ParseField(MigrateAction.NAME),
|
||||||
MigrateAction::parse),
|
MigrateAction::parse),
|
||||||
|
new NamedXContentRegistry.Entry(LifecycleAction.class,
|
||||||
|
new ParseField(SearchableSnapshotAction.NAME),
|
||||||
|
SearchableSnapshotAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class,
|
new NamedXContentRegistry.Entry(LifecycleAction.class,
|
||||||
new ParseField(UnfollowAction.NAME),
|
new ParseField(UnfollowAction.NAME),
|
||||||
UnfollowAction::parse)
|
UnfollowAction::parse)
|
||||||
|
|
|
@ -61,7 +61,7 @@ public class LifecyclePolicy implements ToXContentObject {
|
||||||
ALLOWED_ACTIONS.put("warm", Sets.newHashSet(UnfollowAction.NAME, SetPriorityAction.NAME, MigrateAction.NAME, AllocateAction.NAME,
|
ALLOWED_ACTIONS.put("warm", Sets.newHashSet(UnfollowAction.NAME, SetPriorityAction.NAME, MigrateAction.NAME, AllocateAction.NAME,
|
||||||
ForceMergeAction.NAME, ReadOnlyAction.NAME, ShrinkAction.NAME));
|
ForceMergeAction.NAME, ReadOnlyAction.NAME, ShrinkAction.NAME));
|
||||||
ALLOWED_ACTIONS.put("cold", Sets.newHashSet(UnfollowAction.NAME, SetPriorityAction.NAME, MigrateAction.NAME, AllocateAction.NAME,
|
ALLOWED_ACTIONS.put("cold", Sets.newHashSet(UnfollowAction.NAME, SetPriorityAction.NAME, MigrateAction.NAME, AllocateAction.NAME,
|
||||||
FreezeAction.NAME));
|
FreezeAction.NAME, SearchableSnapshotAction.NAME));
|
||||||
ALLOWED_ACTIONS.put("delete", Sets.newHashSet(DeleteAction.NAME));
|
ALLOWED_ACTIONS.put("delete", Sets.newHashSet(DeleteAction.NAME));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,100 @@
|
||||||
|
/*
|
||||||
|
* Licensed to Elasticsearch under one or more contributor
|
||||||
|
* license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright
|
||||||
|
* ownership. Elasticsearch licenses this file to you under
|
||||||
|
* the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package org.elasticsearch.client.indexlifecycle;
|
||||||
|
|
||||||
|
import org.elasticsearch.common.ParseField;
|
||||||
|
import org.elasticsearch.common.Strings;
|
||||||
|
import org.elasticsearch.common.xcontent.ConstructingObjectParser;
|
||||||
|
import org.elasticsearch.common.xcontent.ToXContent;
|
||||||
|
import org.elasticsearch.common.xcontent.ToXContentObject;
|
||||||
|
import org.elasticsearch.common.xcontent.XContentBuilder;
|
||||||
|
import org.elasticsearch.common.xcontent.XContentParser;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A {@link LifecycleAction} that will convert the index into a searchable snapshot.
|
||||||
|
*/
|
||||||
|
public class SearchableSnapshotAction implements LifecycleAction, ToXContentObject {
|
||||||
|
public static final String NAME = "searchable_snapshot";
|
||||||
|
|
||||||
|
public static final ParseField SNAPSHOT_REPOSITORY = new ParseField("snapshot_repository");
|
||||||
|
public static final ParseField FORCE_MERGE_INDEX = new ParseField("force_merge_index");
|
||||||
|
|
||||||
|
|
||||||
|
private static final ConstructingObjectParser<SearchableSnapshotAction, Void> PARSER = new ConstructingObjectParser<>(NAME,
|
||||||
|
true, a -> new SearchableSnapshotAction((String) a[0], a[1] == null || (boolean) a[1]));
|
||||||
|
|
||||||
|
static {
|
||||||
|
PARSER.declareString(ConstructingObjectParser.constructorArg(), SNAPSHOT_REPOSITORY);
|
||||||
|
PARSER.declareBoolean(ConstructingObjectParser.optionalConstructorArg(), FORCE_MERGE_INDEX);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static SearchableSnapshotAction parse(XContentParser parser) {
|
||||||
|
return PARSER.apply(parser, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final String snapshotRepository;
|
||||||
|
private final boolean forceMergeIndex;
|
||||||
|
|
||||||
|
public SearchableSnapshotAction(String snapshotRepository, boolean forceMergeIndex) {
|
||||||
|
if (Strings.hasText(snapshotRepository) == false) {
|
||||||
|
throw new IllegalArgumentException("the snapshot repository must be specified");
|
||||||
|
}
|
||||||
|
this.snapshotRepository = snapshotRepository;
|
||||||
|
this.forceMergeIndex = forceMergeIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SearchableSnapshotAction(String snapshotRepository) {
|
||||||
|
this(snapshotRepository, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isForceMergeIndex() {
|
||||||
|
return forceMergeIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public XContentBuilder toXContent(XContentBuilder builder, ToXContent.Params params) throws IOException {
|
||||||
|
builder.startObject();
|
||||||
|
builder.field(SNAPSHOT_REPOSITORY.getPreferredName(), snapshotRepository);
|
||||||
|
builder.field(FORCE_MERGE_INDEX.getPreferredName(), forceMergeIndex);
|
||||||
|
builder.endObject();
|
||||||
|
return builder;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
SearchableSnapshotAction that = (SearchableSnapshotAction) o;
|
||||||
|
return forceMergeIndex == that.forceMergeIndex &&
|
||||||
|
snapshotRepository.equals(that.snapshotRepository);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
return Objects.hash(snapshotRepository, forceMergeIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return NAME;
|
||||||
|
}
|
||||||
|
}
|
|
@ -45,6 +45,7 @@ import org.elasticsearch.client.indexlifecycle.RemoveIndexLifecyclePolicyRequest
|
||||||
import org.elasticsearch.client.indexlifecycle.RemoveIndexLifecyclePolicyResponse;
|
import org.elasticsearch.client.indexlifecycle.RemoveIndexLifecyclePolicyResponse;
|
||||||
import org.elasticsearch.client.indexlifecycle.RetryLifecyclePolicyRequest;
|
import org.elasticsearch.client.indexlifecycle.RetryLifecyclePolicyRequest;
|
||||||
import org.elasticsearch.client.indexlifecycle.RolloverAction;
|
import org.elasticsearch.client.indexlifecycle.RolloverAction;
|
||||||
|
import org.elasticsearch.client.indexlifecycle.SearchableSnapshotAction;
|
||||||
import org.elasticsearch.client.indexlifecycle.ShrinkAction;
|
import org.elasticsearch.client.indexlifecycle.ShrinkAction;
|
||||||
import org.elasticsearch.client.indexlifecycle.StartILMRequest;
|
import org.elasticsearch.client.indexlifecycle.StartILMRequest;
|
||||||
import org.elasticsearch.client.indexlifecycle.StopILMRequest;
|
import org.elasticsearch.client.indexlifecycle.StopILMRequest;
|
||||||
|
@ -160,6 +161,7 @@ public class IndexLifecycleIT extends ESRestHighLevelClientTestCase {
|
||||||
Map<String, LifecycleAction> coldActions = new HashMap<>();
|
Map<String, LifecycleAction> coldActions = new HashMap<>();
|
||||||
coldActions.put(UnfollowAction.NAME, new UnfollowAction());
|
coldActions.put(UnfollowAction.NAME, new UnfollowAction());
|
||||||
coldActions.put(AllocateAction.NAME, new AllocateAction(0, null, null, null));
|
coldActions.put(AllocateAction.NAME, new AllocateAction(0, null, null, null));
|
||||||
|
coldActions.put(SearchableSnapshotAction.NAME, new SearchableSnapshotAction("repo"));
|
||||||
lifecyclePhases.put("cold", new Phase("cold", TimeValue.timeValueSeconds(2000), coldActions));
|
lifecyclePhases.put("cold", new Phase("cold", TimeValue.timeValueSeconds(2000), coldActions));
|
||||||
|
|
||||||
Map<String, LifecycleAction> deleteActions = Collections.singletonMap(DeleteAction.NAME, new DeleteAction());
|
Map<String, LifecycleAction> deleteActions = Collections.singletonMap(DeleteAction.NAME, new DeleteAction());
|
||||||
|
|
|
@ -52,6 +52,7 @@ import org.elasticsearch.client.indexlifecycle.FreezeAction;
|
||||||
import org.elasticsearch.client.indexlifecycle.LifecycleAction;
|
import org.elasticsearch.client.indexlifecycle.LifecycleAction;
|
||||||
import org.elasticsearch.client.indexlifecycle.ReadOnlyAction;
|
import org.elasticsearch.client.indexlifecycle.ReadOnlyAction;
|
||||||
import org.elasticsearch.client.indexlifecycle.RolloverAction;
|
import org.elasticsearch.client.indexlifecycle.RolloverAction;
|
||||||
|
import org.elasticsearch.client.indexlifecycle.SearchableSnapshotAction;
|
||||||
import org.elasticsearch.client.indexlifecycle.SetPriorityAction;
|
import org.elasticsearch.client.indexlifecycle.SetPriorityAction;
|
||||||
import org.elasticsearch.client.indexlifecycle.ShrinkAction;
|
import org.elasticsearch.client.indexlifecycle.ShrinkAction;
|
||||||
import org.elasticsearch.client.indexlifecycle.UnfollowAction;
|
import org.elasticsearch.client.indexlifecycle.UnfollowAction;
|
||||||
|
@ -59,16 +60,16 @@ import org.elasticsearch.client.ml.dataframe.DataFrameAnalysis;
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.classification.AccuracyMetric;
|
import org.elasticsearch.client.ml.dataframe.evaluation.classification.AccuracyMetric;
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.classification.Classification;
|
import org.elasticsearch.client.ml.dataframe.evaluation.classification.Classification;
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.classification.MulticlassConfusionMatrixMetric;
|
import org.elasticsearch.client.ml.dataframe.evaluation.classification.MulticlassConfusionMatrixMetric;
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.regression.MeanSquaredErrorMetric;
|
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.regression.MeanSquaredLogarithmicErrorMetric;
|
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.regression.HuberMetric;
|
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.regression.RSquaredMetric;
|
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.regression.Regression;
|
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.AucRocMetric;
|
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.AucRocMetric;
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.OutlierDetection;
|
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.ConfusionMatrixMetric;
|
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.ConfusionMatrixMetric;
|
||||||
|
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.OutlierDetection;
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.PrecisionMetric;
|
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.PrecisionMetric;
|
||||||
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.RecallMetric;
|
import org.elasticsearch.client.ml.dataframe.evaluation.outlierdetection.RecallMetric;
|
||||||
|
import org.elasticsearch.client.ml.dataframe.evaluation.regression.HuberMetric;
|
||||||
|
import org.elasticsearch.client.ml.dataframe.evaluation.regression.MeanSquaredErrorMetric;
|
||||||
|
import org.elasticsearch.client.ml.dataframe.evaluation.regression.MeanSquaredLogarithmicErrorMetric;
|
||||||
|
import org.elasticsearch.client.ml.dataframe.evaluation.regression.RSquaredMetric;
|
||||||
|
import org.elasticsearch.client.ml.dataframe.evaluation.regression.Regression;
|
||||||
import org.elasticsearch.client.ml.dataframe.stats.classification.ClassificationStats;
|
import org.elasticsearch.client.ml.dataframe.stats.classification.ClassificationStats;
|
||||||
import org.elasticsearch.client.ml.dataframe.stats.outlierdetection.OutlierDetectionStats;
|
import org.elasticsearch.client.ml.dataframe.stats.outlierdetection.OutlierDetectionStats;
|
||||||
import org.elasticsearch.client.ml.dataframe.stats.regression.RegressionStats;
|
import org.elasticsearch.client.ml.dataframe.stats.regression.RegressionStats;
|
||||||
|
@ -705,7 +706,7 @@ public class RestHighLevelClientTests extends ESTestCase {
|
||||||
|
|
||||||
public void testProvidedNamedXContents() {
|
public void testProvidedNamedXContents() {
|
||||||
List<NamedXContentRegistry.Entry> namedXContents = RestHighLevelClient.getProvidedNamedXContents();
|
List<NamedXContentRegistry.Entry> namedXContents = RestHighLevelClient.getProvidedNamedXContents();
|
||||||
assertEquals(71, namedXContents.size());
|
assertEquals(72, namedXContents.size());
|
||||||
Map<Class<?>, Integer> categories = new HashMap<>();
|
Map<Class<?>, Integer> categories = new HashMap<>();
|
||||||
List<String> names = new ArrayList<>();
|
List<String> names = new ArrayList<>();
|
||||||
for (NamedXContentRegistry.Entry namedXContent : namedXContents) {
|
for (NamedXContentRegistry.Entry namedXContent : namedXContents) {
|
||||||
|
@ -731,7 +732,7 @@ public class RestHighLevelClientTests extends ESTestCase {
|
||||||
assertTrue(names.contains(MeanReciprocalRank.NAME));
|
assertTrue(names.contains(MeanReciprocalRank.NAME));
|
||||||
assertTrue(names.contains(DiscountedCumulativeGain.NAME));
|
assertTrue(names.contains(DiscountedCumulativeGain.NAME));
|
||||||
assertTrue(names.contains(ExpectedReciprocalRank.NAME));
|
assertTrue(names.contains(ExpectedReciprocalRank.NAME));
|
||||||
assertEquals(Integer.valueOf(10), categories.get(LifecycleAction.class));
|
assertEquals(Integer.valueOf(11), categories.get(LifecycleAction.class));
|
||||||
assertTrue(names.contains(UnfollowAction.NAME));
|
assertTrue(names.contains(UnfollowAction.NAME));
|
||||||
assertTrue(names.contains(AllocateAction.NAME));
|
assertTrue(names.contains(AllocateAction.NAME));
|
||||||
assertTrue(names.contains(DeleteAction.NAME));
|
assertTrue(names.contains(DeleteAction.NAME));
|
||||||
|
@ -741,6 +742,7 @@ public class RestHighLevelClientTests extends ESTestCase {
|
||||||
assertTrue(names.contains(ShrinkAction.NAME));
|
assertTrue(names.contains(ShrinkAction.NAME));
|
||||||
assertTrue(names.contains(FreezeAction.NAME));
|
assertTrue(names.contains(FreezeAction.NAME));
|
||||||
assertTrue(names.contains(SetPriorityAction.NAME));
|
assertTrue(names.contains(SetPriorityAction.NAME));
|
||||||
|
assertTrue(names.contains(SearchableSnapshotAction.NAME));
|
||||||
assertEquals(Integer.valueOf(3), categories.get(DataFrameAnalysis.class));
|
assertEquals(Integer.valueOf(3), categories.get(DataFrameAnalysis.class));
|
||||||
assertTrue(names.contains(org.elasticsearch.client.ml.dataframe.OutlierDetection.NAME.getPreferredName()));
|
assertTrue(names.contains(org.elasticsearch.client.ml.dataframe.OutlierDetection.NAME.getPreferredName()));
|
||||||
assertTrue(names.contains(org.elasticsearch.client.ml.dataframe.Regression.NAME.getPreferredName()));
|
assertTrue(names.contains(org.elasticsearch.client.ml.dataframe.Regression.NAME.getPreferredName()));
|
||||||
|
|
|
@ -86,6 +86,8 @@ public class GetLifecyclePolicyResponseTests extends AbstractXContentTestCase<Ge
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(ShrinkAction.NAME), ShrinkAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(ShrinkAction.NAME), ShrinkAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(FreezeAction.NAME), FreezeAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(FreezeAction.NAME), FreezeAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SetPriorityAction.NAME), SetPriorityAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SetPriorityAction.NAME), SetPriorityAction::parse),
|
||||||
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SearchableSnapshotAction.NAME),
|
||||||
|
SearchableSnapshotAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(UnfollowAction.NAME), UnfollowAction::parse)
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(UnfollowAction.NAME), UnfollowAction::parse)
|
||||||
));
|
));
|
||||||
return new NamedXContentRegistry(entries);
|
return new NamedXContentRegistry(entries);
|
||||||
|
|
|
@ -80,6 +80,8 @@ public class LifecyclePolicyMetadataTests extends AbstractXContentTestCase<Lifec
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(ShrinkAction.NAME), ShrinkAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(ShrinkAction.NAME), ShrinkAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(FreezeAction.NAME), FreezeAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(FreezeAction.NAME), FreezeAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SetPriorityAction.NAME), SetPriorityAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SetPriorityAction.NAME), SetPriorityAction::parse),
|
||||||
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SearchableSnapshotAction.NAME),
|
||||||
|
SearchableSnapshotAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(UnfollowAction.NAME), UnfollowAction::parse)
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(UnfollowAction.NAME), UnfollowAction::parse)
|
||||||
));
|
));
|
||||||
return new NamedXContentRegistry(entries);
|
return new NamedXContentRegistry(entries);
|
||||||
|
|
|
@ -44,7 +44,7 @@ public class LifecyclePolicyTests extends AbstractXContentTestCase<LifecyclePoli
|
||||||
private static final Set<String> VALID_WARM_ACTIONS = Sets.newHashSet(UnfollowAction.NAME, SetPriorityAction.NAME, AllocateAction.NAME,
|
private static final Set<String> VALID_WARM_ACTIONS = Sets.newHashSet(UnfollowAction.NAME, SetPriorityAction.NAME, AllocateAction.NAME,
|
||||||
ForceMergeAction.NAME, ReadOnlyAction.NAME, ShrinkAction.NAME);
|
ForceMergeAction.NAME, ReadOnlyAction.NAME, ShrinkAction.NAME);
|
||||||
private static final Set<String> VALID_COLD_ACTIONS = Sets.newHashSet(UnfollowAction.NAME, SetPriorityAction.NAME, AllocateAction.NAME,
|
private static final Set<String> VALID_COLD_ACTIONS = Sets.newHashSet(UnfollowAction.NAME, SetPriorityAction.NAME, AllocateAction.NAME,
|
||||||
FreezeAction.NAME);
|
FreezeAction.NAME, SearchableSnapshotAction.NAME);
|
||||||
private static final Set<String> VALID_DELETE_ACTIONS = Sets.newHashSet(DeleteAction.NAME);
|
private static final Set<String> VALID_DELETE_ACTIONS = Sets.newHashSet(DeleteAction.NAME);
|
||||||
|
|
||||||
private String lifecycleName;
|
private String lifecycleName;
|
||||||
|
@ -77,6 +77,8 @@ public class LifecyclePolicyTests extends AbstractXContentTestCase<LifecyclePoli
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(ShrinkAction.NAME), ShrinkAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(ShrinkAction.NAME), ShrinkAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(FreezeAction.NAME), FreezeAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(FreezeAction.NAME), FreezeAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SetPriorityAction.NAME), SetPriorityAction::parse),
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SetPriorityAction.NAME), SetPriorityAction::parse),
|
||||||
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(SearchableSnapshotAction.NAME),
|
||||||
|
SearchableSnapshotAction::parse),
|
||||||
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(UnfollowAction.NAME), UnfollowAction::parse)
|
new NamedXContentRegistry.Entry(LifecycleAction.class, new ParseField(UnfollowAction.NAME), UnfollowAction::parse)
|
||||||
));
|
));
|
||||||
return new NamedXContentRegistry(entries);
|
return new NamedXContentRegistry(entries);
|
||||||
|
@ -224,6 +226,8 @@ public class LifecyclePolicyTests extends AbstractXContentTestCase<LifecyclePoli
|
||||||
return SetPriorityActionTests.randomInstance();
|
return SetPriorityActionTests.randomInstance();
|
||||||
case UnfollowAction.NAME:
|
case UnfollowAction.NAME:
|
||||||
return new UnfollowAction();
|
return new UnfollowAction();
|
||||||
|
case SearchableSnapshotAction.NAME:
|
||||||
|
return SearchableSnapshotActionTests.randomInstance();
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("invalid action [" + action + "]");
|
throw new IllegalArgumentException("invalid action [" + action + "]");
|
||||||
}};
|
}};
|
||||||
|
@ -257,6 +261,8 @@ public class LifecyclePolicyTests extends AbstractXContentTestCase<LifecyclePoli
|
||||||
return new FreezeAction();
|
return new FreezeAction();
|
||||||
case SetPriorityAction.NAME:
|
case SetPriorityAction.NAME:
|
||||||
return SetPriorityActionTests.randomInstance();
|
return SetPriorityActionTests.randomInstance();
|
||||||
|
case SearchableSnapshotAction.NAME:
|
||||||
|
return SearchableSnapshotActionTests.randomInstance();
|
||||||
case UnfollowAction.NAME:
|
case UnfollowAction.NAME:
|
||||||
return new UnfollowAction();
|
return new UnfollowAction();
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*
|
||||||
|
* Licensed to Elasticsearch under one or more contributor
|
||||||
|
* license agreements. See the NOTICE file distributed with
|
||||||
|
* this work for additional information regarding copyright
|
||||||
|
* ownership. Elasticsearch licenses this file to you under
|
||||||
|
* the Apache License, Version 2.0 (the "License"); you may
|
||||||
|
* not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
package org.elasticsearch.client.indexlifecycle;
|
||||||
|
|
||||||
|
import org.elasticsearch.common.xcontent.XContentParser;
|
||||||
|
import org.elasticsearch.test.AbstractXContentTestCase;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
import static org.hamcrest.Matchers.equalTo;
|
||||||
|
|
||||||
|
public class SearchableSnapshotActionTests extends AbstractXContentTestCase<SearchableSnapshotAction> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SearchableSnapshotAction doParseInstance(XContentParser parser) throws IOException {
|
||||||
|
return SearchableSnapshotAction.parse(parser);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected SearchableSnapshotAction createTestInstance() {
|
||||||
|
return randomInstance();
|
||||||
|
}
|
||||||
|
|
||||||
|
static SearchableSnapshotAction randomInstance() {
|
||||||
|
return new SearchableSnapshotAction(randomAlphaOfLengthBetween(5, 10), randomBoolean());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean supportsUnknownFields() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testEmptyOrNullRepository() {
|
||||||
|
{
|
||||||
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> new SearchableSnapshotAction(""));
|
||||||
|
assertThat(e.getMessage(), equalTo("the snapshot repository must be specified"));
|
||||||
|
}
|
||||||
|
{
|
||||||
|
IllegalArgumentException e = expectThrows(IllegalArgumentException.class, () -> new SearchableSnapshotAction(null));
|
||||||
|
assertThat(e.getMessage(), equalTo("the snapshot repository must be specified"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue