Skip to content

Commit 0b4e566

Browse files
authored
Support allow_write_after_shrink in ILM policies (#662)
* Support allow_write_after_shrink in ILM policies * Changelog * Generate docs * Support allow_write_after_shrink in ILM policies * Fixup pre 8.14 support
1 parent e056f62 commit 0b4e566

File tree

5 files changed

+22
-9
lines changed

5 files changed

+22
-9
lines changed

.github/workflows/test.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ jobs:
102102
- '8.11.4'
103103
- '8.12.2'
104104
- '8.13.4'
105+
- '8.14.0'
105106
steps:
106107
- uses: actions/checkout@v4
107108
- uses: actions/setup-go@v5

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
- Populate policy_id when importing fleet policies and integrations ([#646](https://github.com/elastic/terraform-provider-elasticstack/pull/646))
66
- Fix alerting rule update crash when backend responds with HTTP 4xx. ([#649](https://github.com/elastic/terraform-provider-elasticstack/pull/649))
7+
- Support allow_write_after_shrink when managing ILM policies ([#662](https://github.com/elastic/terraform-provider-elasticstack/pull/662))
78

89
## [0.11.3] - 2024-05-16
910

docs/resources/elasticsearch_index_lifecycle.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,7 @@ Required:
322322

323323
Optional:
324324

325+
- `allow_write_after_shrink` (Boolean) If true, the shrunken index is made writable by removing the write block.
325326
- `max_primary_shard_size` (String) The max primary shard size for the target index.
326327
- `number_of_shards` (Number) Number of shards to shrink to.
327328

@@ -415,6 +416,7 @@ Required:
415416

416417
Optional:
417418

419+
- `allow_write_after_shrink` (Boolean) If true, the shrunken index is made writable by removing the write block.
418420
- `max_primary_shard_size` (String) The max primary shard size for the target index.
419421
- `number_of_shards` (Number) Number of shards to shrink to.
420422

internal/elasticsearch/index/ilm.go

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,11 @@ var supportedActions = map[string]*schema.Schema{
355355
Type: schema.TypeString,
356356
Optional: true,
357357
},
358+
"allow_write_after_shrink": {
359+
Description: "If true, the shrunken index is made writable by removing the write block.",
360+
Type: schema.TypeBool,
361+
Optional: true,
362+
},
358363
},
359364
},
360365
},
@@ -530,7 +535,7 @@ func expandPhase(p map[string]interface{}, serverVersion *version.Version) (*mod
530535
case "set_priority":
531536
actions[actionName], diags = expandAction(a, serverVersion, "priority")
532537
case "shrink":
533-
actions[actionName], diags = expandAction(a, serverVersion, "number_of_shards", "max_primary_shard_size")
538+
actions[actionName], diags = expandAction(a, serverVersion, "number_of_shards", "max_primary_shard_size", "allow_write_after_shrink")
534539
case "unfollow":
535540
if a[0] != nil {
536541
ac := a[0].(map[string]interface{})
@@ -563,14 +568,15 @@ var ilmActionSettingOptions = map[string]struct {
563568
def interface{}
564569
minVersion *version.Version
565570
}{
566-
"number_of_replicas": {skipEmptyCheck: true},
567-
"total_shards_per_node": {skipEmptyCheck: true, def: -1, minVersion: version.Must(version.NewVersion("7.16.0"))},
568-
"priority": {skipEmptyCheck: true},
569-
"min_age": {def: "", minVersion: RolloverMinConditionsMinSupportedVersion},
570-
"min_docs": {def: 0, minVersion: RolloverMinConditionsMinSupportedVersion},
571-
"min_size": {def: "", minVersion: RolloverMinConditionsMinSupportedVersion},
572-
"min_primary_shard_size": {def: "", minVersion: RolloverMinConditionsMinSupportedVersion},
573-
"min_primary_shard_docs": {def: 0, minVersion: RolloverMinConditionsMinSupportedVersion},
571+
"number_of_replicas": {skipEmptyCheck: true},
572+
"total_shards_per_node": {skipEmptyCheck: true, def: -1, minVersion: version.Must(version.NewVersion("7.16.0"))},
573+
"priority": {skipEmptyCheck: true},
574+
"min_age": {def: "", minVersion: RolloverMinConditionsMinSupportedVersion},
575+
"min_docs": {def: 0, minVersion: RolloverMinConditionsMinSupportedVersion},
576+
"min_size": {def: "", minVersion: RolloverMinConditionsMinSupportedVersion},
577+
"min_primary_shard_size": {def: "", minVersion: RolloverMinConditionsMinSupportedVersion},
578+
"min_primary_shard_docs": {def: 0, minVersion: RolloverMinConditionsMinSupportedVersion},
579+
"allow_write_after_shrink": {def: false, minVersion: version.Must(version.NewVersion("8.14.0"))},
574580
}
575581

576582
func expandAction(a []interface{}, serverVersion *version.Version, settings ...string) (map[string]interface{}, diag.Diagnostics) {

internal/elasticsearch/index/ilm_test.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,9 @@ resource "elasticstack_elasticsearch_index_lifecycle" "test" {
210210
})
211211
number_of_replicas = 1
212212
}
213+
shrink {
214+
max_primary_shard_size = "50gb"
215+
}
213216
}
214217
215218
}

0 commit comments

Comments
 (0)