@@ -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+
6192func testAccSlmCreate (name string ) string {
6293 return fmt .Sprintf (`
6394provider "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+
95165func checkSlmDestroy (name string ) func (s * terraform.State ) error {
96166 return func (s * terraform.State ) error {
97167 client , err := clients .NewAcceptanceTestingClient ()
0 commit comments