Fix indices options parsing from REST in delete index API (#25709)
When parsing indices options from REST, we parse the optional parameters that are supported at REST (ignore_unavailable, allow_no_indices and expand_wildcards) and we provide the API default values for all the other (internal) options so that they are set to the new indices options while parsing. The `ignoreAliases` option was forgotten though, which means that whenever you pass in any index option at REST to the delete index API, you get to delete aliases like it was supported before (as ignoreAliases gets set to false like in all the other APIs). Added unit tests for IndicesOptions parsing from REST parameters, and yaml tests for the delete index API.
This commit is contained in:
parent
afd9a1c1b1
commit
7930b8a720
|
@ -141,17 +141,11 @@ public class IndicesOptions {
|
|||
}
|
||||
|
||||
public static IndicesOptions fromOptions(boolean ignoreUnavailable, boolean allowNoIndices, boolean expandToOpenIndices, boolean expandToClosedIndices) {
|
||||
return fromOptions(ignoreUnavailable, allowNoIndices, expandToOpenIndices, expandToClosedIndices, true, false);
|
||||
return fromOptions(ignoreUnavailable, allowNoIndices, expandToOpenIndices, expandToClosedIndices, true, false, false);
|
||||
}
|
||||
|
||||
public static IndicesOptions fromOptions(boolean ignoreUnavailable, boolean allowNoIndices, boolean expandToOpenIndices, boolean expandToClosedIndices, IndicesOptions defaultOptions) {
|
||||
return fromOptions(ignoreUnavailable, allowNoIndices, expandToOpenIndices, expandToClosedIndices, defaultOptions.allowAliasesToMultipleIndices(), defaultOptions.forbidClosedIndices());
|
||||
}
|
||||
|
||||
public static IndicesOptions fromOptions(boolean ignoreUnavailable, boolean allowNoIndices, boolean expandToOpenIndices,
|
||||
boolean expandToClosedIndices, boolean allowAliasesToMultipleIndices, boolean forbidClosedIndices) {
|
||||
return fromOptions(ignoreUnavailable, allowNoIndices, expandToOpenIndices, expandToClosedIndices, allowAliasesToMultipleIndices,
|
||||
forbidClosedIndices, false);
|
||||
return fromOptions(ignoreUnavailable, allowNoIndices, expandToOpenIndices, expandToClosedIndices, defaultOptions.allowAliasesToMultipleIndices(), defaultOptions.forbidClosedIndices(), defaultOptions.ignoreAliases());
|
||||
}
|
||||
|
||||
public static IndicesOptions fromOptions(boolean ignoreUnavailable, boolean allowNoIndices, boolean expandToOpenIndices,
|
||||
|
@ -223,7 +217,8 @@ public class IndicesOptions {
|
|||
expandWildcardsOpen,
|
||||
expandWildcardsClosed,
|
||||
defaultSettings.allowAliasesToMultipleIndices(),
|
||||
defaultSettings.forbidClosedIndices()
|
||||
defaultSettings.forbidClosedIndices(),
|
||||
defaultSettings.ignoreAliases()
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -60,29 +60,82 @@ public class IndicesOptionsTests extends ESTestCase {
|
|||
}
|
||||
|
||||
public void testFromOptions() {
|
||||
int iterations = randomIntBetween(5, 20);
|
||||
for (int i = 0; i < iterations; i++) {
|
||||
boolean ignoreUnavailable = randomBoolean();
|
||||
boolean allowNoIndices = randomBoolean();
|
||||
boolean expandToOpenIndices = randomBoolean();
|
||||
boolean expandToClosedIndices = randomBoolean();
|
||||
boolean allowAliasesToMultipleIndices = randomBoolean();
|
||||
boolean forbidClosedIndices = randomBoolean();
|
||||
boolean ignoreAliases = randomBoolean();
|
||||
boolean ignoreUnavailable = randomBoolean();
|
||||
boolean allowNoIndices = randomBoolean();
|
||||
boolean expandToOpenIndices = randomBoolean();
|
||||
boolean expandToClosedIndices = randomBoolean();
|
||||
boolean allowAliasesToMultipleIndices = randomBoolean();
|
||||
boolean forbidClosedIndices = randomBoolean();
|
||||
boolean ignoreAliases = randomBoolean();
|
||||
|
||||
IndicesOptions indicesOptions = IndicesOptions.fromOptions(
|
||||
ignoreUnavailable, allowNoIndices,expandToOpenIndices, expandToClosedIndices,
|
||||
allowAliasesToMultipleIndices, forbidClosedIndices, ignoreAliases
|
||||
);
|
||||
IndicesOptions indicesOptions = IndicesOptions.fromOptions(ignoreUnavailable, allowNoIndices,expandToOpenIndices,
|
||||
expandToClosedIndices, allowAliasesToMultipleIndices, forbidClosedIndices, ignoreAliases);
|
||||
|
||||
assertThat(indicesOptions.ignoreUnavailable(), equalTo(ignoreUnavailable));
|
||||
assertThat(indicesOptions.allowNoIndices(), equalTo(allowNoIndices));
|
||||
assertThat(indicesOptions.expandWildcardsOpen(), equalTo(expandToOpenIndices));
|
||||
assertThat(indicesOptions.expandWildcardsClosed(), equalTo(expandToClosedIndices));
|
||||
assertThat(indicesOptions.allowAliasesToMultipleIndices(), equalTo(allowAliasesToMultipleIndices));
|
||||
assertThat(indicesOptions.allowAliasesToMultipleIndices(), equalTo(allowAliasesToMultipleIndices));
|
||||
assertThat(indicesOptions.forbidClosedIndices(), equalTo(forbidClosedIndices));
|
||||
assertEquals(ignoreAliases, indicesOptions.ignoreAliases());
|
||||
assertThat(indicesOptions.ignoreUnavailable(), equalTo(ignoreUnavailable));
|
||||
assertThat(indicesOptions.allowNoIndices(), equalTo(allowNoIndices));
|
||||
assertThat(indicesOptions.expandWildcardsOpen(), equalTo(expandToOpenIndices));
|
||||
assertThat(indicesOptions.expandWildcardsClosed(), equalTo(expandToClosedIndices));
|
||||
assertThat(indicesOptions.allowAliasesToMultipleIndices(), equalTo(allowAliasesToMultipleIndices));
|
||||
assertThat(indicesOptions.allowAliasesToMultipleIndices(), equalTo(allowAliasesToMultipleIndices));
|
||||
assertThat(indicesOptions.forbidClosedIndices(), equalTo(forbidClosedIndices));
|
||||
assertEquals(ignoreAliases, indicesOptions.ignoreAliases());
|
||||
}
|
||||
|
||||
public void testFromOptionsWithDefaultOptions() {
|
||||
boolean ignoreUnavailable = randomBoolean();
|
||||
boolean allowNoIndices = randomBoolean();
|
||||
boolean expandToOpenIndices = randomBoolean();
|
||||
boolean expandToClosedIndices = randomBoolean();
|
||||
|
||||
IndicesOptions defaultOptions = IndicesOptions.fromOptions(randomBoolean(), randomBoolean(), randomBoolean(),
|
||||
randomBoolean(), randomBoolean(), randomBoolean(), randomBoolean());
|
||||
|
||||
IndicesOptions indicesOptions = IndicesOptions.fromOptions(ignoreUnavailable, allowNoIndices,expandToOpenIndices,
|
||||
expandToClosedIndices, defaultOptions);
|
||||
|
||||
assertEquals(ignoreUnavailable, indicesOptions.ignoreUnavailable());
|
||||
assertEquals(allowNoIndices, indicesOptions.allowNoIndices());
|
||||
assertEquals(expandToOpenIndices, indicesOptions.expandWildcardsOpen());
|
||||
assertEquals(expandToClosedIndices, indicesOptions.expandWildcardsClosed());
|
||||
assertEquals(defaultOptions.allowAliasesToMultipleIndices(), indicesOptions.allowAliasesToMultipleIndices());
|
||||
assertEquals(defaultOptions.forbidClosedIndices(), indicesOptions.forbidClosedIndices());
|
||||
assertEquals(defaultOptions.ignoreAliases(), indicesOptions.ignoreAliases());
|
||||
}
|
||||
|
||||
public void testFromParameters() {
|
||||
boolean expandWildcardsOpen = randomBoolean();
|
||||
boolean expandWildcardsClosed = randomBoolean();
|
||||
String expandWildcardsString;
|
||||
if (expandWildcardsOpen && expandWildcardsClosed) {
|
||||
if (randomBoolean()) {
|
||||
expandWildcardsString = "open,closed";
|
||||
} else {
|
||||
expandWildcardsString = "all";
|
||||
}
|
||||
} else if (expandWildcardsOpen) {
|
||||
expandWildcardsString = "open";
|
||||
} else if (expandWildcardsClosed) {
|
||||
expandWildcardsString = "closed";
|
||||
} else {
|
||||
expandWildcardsString = "none";
|
||||
}
|
||||
boolean ignoreUnavailable = randomBoolean();
|
||||
String ignoreUnavailableString = Boolean.toString(ignoreUnavailable);
|
||||
boolean allowNoIndices = randomBoolean();
|
||||
String allowNoIndicesString = Boolean.toString(allowNoIndices);
|
||||
|
||||
IndicesOptions defaultOptions = IndicesOptions.fromOptions(randomBoolean(), randomBoolean(), randomBoolean(), randomBoolean(),
|
||||
randomBoolean(), randomBoolean(), randomBoolean());
|
||||
|
||||
IndicesOptions updatedOptions = IndicesOptions.fromParameters(expandWildcardsString, ignoreUnavailableString,
|
||||
allowNoIndicesString, defaultOptions);
|
||||
|
||||
assertEquals(expandWildcardsOpen, updatedOptions.expandWildcardsOpen());
|
||||
assertEquals(expandWildcardsClosed, updatedOptions.expandWildcardsClosed());
|
||||
assertEquals(ignoreUnavailable, updatedOptions.ignoreUnavailable());
|
||||
assertEquals(allowNoIndices, updatedOptions.allowNoIndices());
|
||||
assertEquals(defaultOptions.allowAliasesToMultipleIndices(), updatedOptions.allowAliasesToMultipleIndices());
|
||||
assertEquals(defaultOptions.forbidClosedIndices(), updatedOptions.forbidClosedIndices());
|
||||
assertEquals(defaultOptions.ignoreAliases(), updatedOptions.ignoreAliases());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -20,6 +20,20 @@
|
|||
"master_timeout": {
|
||||
"type" : "time",
|
||||
"description" : "Specify timeout for connection to master"
|
||||
},
|
||||
"ignore_unavailable": {
|
||||
"type": "boolean",
|
||||
"description": "Ignore unavailable indexes (default: false)"
|
||||
},
|
||||
"allow_no_indices": {
|
||||
"type": "boolean",
|
||||
"description": "Ignore if a wildcard expression resolves to no concrete indices (default: false)"
|
||||
},
|
||||
"expand_wildcards": {
|
||||
"type": "enum",
|
||||
"options": [ "open", "closed", "none", "all" ],
|
||||
"default": "open",
|
||||
"description": "Whether wildcard expressions should get expanded to open or closed indices (default: open)"
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
|
@ -0,0 +1,124 @@
|
|||
setup:
|
||||
- do:
|
||||
indices.create:
|
||||
index: index
|
||||
body:
|
||||
aliases:
|
||||
alias: {}
|
||||
- do:
|
||||
indices.create:
|
||||
index: index2
|
||||
---
|
||||
"Delete index against alias":
|
||||
- skip:
|
||||
version: " - 5.99.0"
|
||||
reason: delete index doesn't support aliases only from 6.0.0 on
|
||||
- do:
|
||||
catch: missing
|
||||
indices.delete:
|
||||
index: alias
|
||||
- do:
|
||||
indices.get:
|
||||
index: index,index2
|
||||
- is_true: index
|
||||
- is_true: index2
|
||||
---
|
||||
"Delete index against alias - ignore unavailable":
|
||||
- skip:
|
||||
version: " - 5.99.0"
|
||||
reason: delete index doesn't support aliases only from 6.0.0 on
|
||||
- do:
|
||||
indices.delete:
|
||||
index: alias
|
||||
ignore_unavailable: true
|
||||
- do:
|
||||
indices.get:
|
||||
index: index,index2
|
||||
- is_true: index
|
||||
- is_true: index2
|
||||
---
|
||||
"Delete index against alias - multiple indices":
|
||||
- skip:
|
||||
version: " - 5.99.0"
|
||||
reason: delete index doesn't support aliases only from 6.0.0 on
|
||||
- do:
|
||||
catch: missing
|
||||
indices.delete:
|
||||
index: alias,index2
|
||||
- do:
|
||||
indices.get:
|
||||
index: index,index2
|
||||
- is_true: index
|
||||
- is_true: index2
|
||||
---
|
||||
"Delete index against alias - ignore unavailable - multiple indices":
|
||||
- skip:
|
||||
version: " - 5.99.0"
|
||||
reason: delete index doesn't support aliases only from 6.0.0 on
|
||||
- do:
|
||||
indices.delete:
|
||||
index: alias,index2
|
||||
ignore_unavailable: true
|
||||
- do:
|
||||
indices.get:
|
||||
index: index,index2
|
||||
ignore_unavailable: true
|
||||
- is_true: index
|
||||
- is_false: index2
|
||||
---
|
||||
"Delete index against wildcard matching alias":
|
||||
- skip:
|
||||
version: " - 5.99.0"
|
||||
reason: delete index doesn't support aliases only from 6.0.0 on
|
||||
- do:
|
||||
indices.delete:
|
||||
index: alia*
|
||||
- do:
|
||||
indices.get:
|
||||
index: index,index2
|
||||
- is_true: index
|
||||
- is_true: index2
|
||||
---
|
||||
"Delete index against wildcard matching alias - disallow no indices":
|
||||
- skip:
|
||||
version: " - 5.99.0"
|
||||
reason: delete index doesn't support aliases only from 6.0.0 on
|
||||
- do:
|
||||
catch: missing
|
||||
indices.delete:
|
||||
index: alia*
|
||||
allow_no_indices: false
|
||||
- do:
|
||||
indices.get:
|
||||
index: index,index2
|
||||
- is_true: index
|
||||
- is_true: index2
|
||||
---
|
||||
"Delete index against wildcard matching alias - multiple indices":
|
||||
- skip:
|
||||
version: " - 5.99.0"
|
||||
reason: delete index doesn't support aliases only from 6.0.0 on
|
||||
- do:
|
||||
indices.delete:
|
||||
index: alia*,index2
|
||||
- do:
|
||||
indices.get:
|
||||
index: index,index2
|
||||
ignore_unavailable: true
|
||||
- is_true: index
|
||||
- is_false: index2
|
||||
---
|
||||
"Delete index against wildcard matching alias - disallow no indices - multiple indices":
|
||||
- skip:
|
||||
version: " - 5.99.0"
|
||||
reason: delete index doesn't support aliases only from 6.0.0 on
|
||||
- do:
|
||||
catch: missing
|
||||
indices.delete:
|
||||
index: index2,alia*
|
||||
allow_no_indices: false
|
||||
- do:
|
||||
indices.get:
|
||||
index: index,index2
|
||||
- is_true: index
|
||||
- is_true: index2
|
Loading…
Reference in New Issue