Skip to content

Commit c8ea07e

Browse files
Copilottobio
andcommitted
Fix metadata []byte to string conversion and add test
Co-authored-by: tobio <[email protected]>
1 parent 981684a commit c8ea07e

File tree

2 files changed

+71
-1
lines changed

2 files changed

+71
-1
lines changed

internal/elasticsearch/cluster/slm.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ func resourceSlmRead(ctx context.Context, d *schema.ResourceData, meta interface
313313
if err != nil {
314314
return diag.FromErr(err)
315315
}
316-
if err := d.Set("metadata", meta); err != nil {
316+
if err := d.Set("metadata", string(meta)); err != nil {
317317
return diag.FromErr(err)
318318
}
319319
}

internal/elasticsearch/cluster/slm_test.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,37 @@ func TestAccResourceSLM(t *testing.T) {
5858
})
5959
}
6060

61+
func TestAccResourceSLMWithMetadata(t *testing.T) {
62+
// generate a random policy name
63+
name := sdkacctest.RandStringFromCharSet(10, sdkacctest.CharSetAlphaNum)
64+
65+
resource.Test(t, resource.TestCase{
66+
PreCheck: func() { acctest.PreCheck(t) },
67+
CheckDestroy: checkSlmDestroy(name),
68+
ProtoV6ProviderFactories: acctest.Providers,
69+
Steps: []resource.TestStep{
70+
{
71+
Config: testAccSlmCreateWithMetadata(name),
72+
Check: resource.ComposeTestCheckFunc(
73+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_snapshot_lifecycle.test_slm_metadata", "name", name),
74+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_snapshot_lifecycle.test_slm_metadata", "schedule", "0 30 1 * * ?"),
75+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_snapshot_lifecycle.test_slm_metadata", "repository", fmt.Sprintf("%s-repo", name)),
76+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_snapshot_lifecycle.test_slm_metadata", "expire_after", "30d"),
77+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_snapshot_lifecycle.test_slm_metadata", "min_count", "5"),
78+
resource.TestCheckResourceAttr("elasticstack_elasticsearch_snapshot_lifecycle.test_slm_metadata", "max_count", "50"),
79+
resource.TestCheckResourceAttrSet("elasticstack_elasticsearch_snapshot_lifecycle.test_slm_metadata", "metadata"),
80+
),
81+
},
82+
{
83+
RefreshState: true,
84+
Check: resource.ComposeTestCheckFunc(
85+
resource.TestCheckResourceAttrSet("elasticstack_elasticsearch_snapshot_lifecycle.test_slm_metadata", "metadata"),
86+
),
87+
},
88+
},
89+
})
90+
}
91+
6192
func testAccSlmCreate(name string) string {
6293
return fmt.Sprintf(`
6394
provider "elasticstack" {
@@ -92,6 +123,45 @@ resource "elasticstack_elasticsearch_snapshot_lifecycle" "test_slm" {
92123
`, name, name)
93124
}
94125

126+
func testAccSlmCreateWithMetadata(name string) string {
127+
return fmt.Sprintf(`
128+
provider "elasticstack" {
129+
elasticsearch {}
130+
}
131+
132+
resource "elasticstack_elasticsearch_snapshot_repository" "repo" {
133+
name = "%s-repo"
134+
135+
fs {
136+
location = "/tmp/snapshots"
137+
compress = true
138+
max_restore_bytes_per_sec = "20mb"
139+
}
140+
}
141+
142+
resource "elasticstack_elasticsearch_snapshot_lifecycle" "test_slm_metadata" {
143+
name = "%s"
144+
145+
schedule = "0 30 1 * * ?"
146+
snapshot_name = "<daily-snap-{now/d}>"
147+
repository = elasticstack_elasticsearch_snapshot_repository.repo.name
148+
149+
indices = ["data-*", "abc"]
150+
ignore_unavailable = false
151+
include_global_state = false
152+
153+
expire_after = "30d"
154+
min_count = 5
155+
max_count = 50
156+
157+
metadata = jsonencode({
158+
created_by = "terraform"
159+
purpose = "daily backup"
160+
})
161+
}
162+
`, name, name)
163+
}
164+
95165
func checkSlmDestroy(name string) func(s *terraform.State) error {
96166
return func(s *terraform.State) error {
97167
client, err := clients.NewAcceptanceTestingClient()

0 commit comments

Comments
 (0)