Skip to content

Commit 10fc816

Browse files
committed
d/aws_memorydb_parameter_group: new data source
1 parent 01f0e5d commit 10fc816

File tree

4 files changed

+212
-1
lines changed

4 files changed

+212
-1
lines changed

internal/provider/provider.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -716,7 +716,8 @@ func Provider() *schema.Provider {
716716
"aws_regions": meta.DataSourceRegions(),
717717
"aws_service": meta.DataSourceService(),
718718

719-
"aws_memorydb_subnet_group": memorydb.DataSourceSubnetGroup(),
719+
"aws_memorydb_parameter_group": memorydb.DataSourceParameterGroup(),
720+
"aws_memorydb_subnet_group": memorydb.DataSourceSubnetGroup(),
720721

721722
"aws_mq_broker": mq.DataSourceBroker(),
722723

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
package memorydb
2+
3+
import (
4+
"context"
5+
6+
"github.com/aws/aws-sdk-go/aws"
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
"github.com/hashicorp/terraform-provider-aws/internal/conns"
10+
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
11+
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
12+
)
13+
14+
func DataSourceParameterGroup() *schema.Resource {
15+
return &schema.Resource{
16+
ReadWithoutTimeout: dataSourceParameterGroupRead,
17+
18+
Schema: map[string]*schema.Schema{
19+
"arn": {
20+
Type: schema.TypeString,
21+
Computed: true,
22+
},
23+
"description": {
24+
Type: schema.TypeString,
25+
Computed: true,
26+
},
27+
"family": {
28+
Type: schema.TypeString,
29+
Computed: true,
30+
},
31+
"name": {
32+
Type: schema.TypeString,
33+
Required: true,
34+
},
35+
"parameter": {
36+
Type: schema.TypeSet,
37+
Computed: true,
38+
Elem: &schema.Resource{
39+
Schema: map[string]*schema.Schema{
40+
"name": {
41+
Type: schema.TypeString,
42+
Computed: true,
43+
},
44+
"value": {
45+
Type: schema.TypeString,
46+
Computed: true,
47+
},
48+
},
49+
},
50+
Set: ParameterHash,
51+
},
52+
"tags": tftags.TagsSchemaComputed(),
53+
},
54+
}
55+
}
56+
57+
func dataSourceParameterGroupRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
58+
conn := meta.(*conns.AWSClient).MemoryDBConn
59+
ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig
60+
61+
name := d.Get("name").(string)
62+
63+
group, err := FindParameterGroupByName(ctx, conn, name)
64+
65+
if err != nil {
66+
return diag.FromErr(tfresource.SingularDataSourceFindError("MemoryDB Parameter Group", err))
67+
}
68+
69+
d.SetId(aws.StringValue(group.Name))
70+
71+
d.Set("arn", group.ARN)
72+
d.Set("description", group.Description)
73+
d.Set("family", group.Family)
74+
d.Set("name", group.Name)
75+
76+
userDefinedParameters := createUserDefinedParameterMap(d)
77+
78+
parameters, err := listParameterGroupParameters(ctx, conn, d.Get("family").(string), d.Id(), userDefinedParameters)
79+
if err != nil {
80+
return diag.Errorf("error listing parameters for MemoryDB Parameter Group (%s): %s", d.Id(), err)
81+
}
82+
83+
if err := d.Set("parameter", flattenParameters(parameters)); err != nil {
84+
return diag.Errorf("failed to set parameter: %s", err)
85+
}
86+
87+
tags, err := ListTags(conn, d.Get("arn").(string))
88+
89+
if err != nil {
90+
return diag.Errorf("error listing tags for MemoryDB Parameter Group (%s): %s", d.Id(), err)
91+
}
92+
93+
if err := d.Set("tags", tags.IgnoreAWS().IgnoreConfig(ignoreTagsConfig).Map()); err != nil {
94+
return diag.Errorf("error setting tags: %s", err)
95+
}
96+
97+
return nil
98+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
package memorydb_test
2+
3+
import (
4+
"fmt"
5+
"testing"
6+
7+
"github.com/aws/aws-sdk-go/service/memorydb"
8+
sdkacctest "github.com/hashicorp/terraform-plugin-sdk/v2/helper/acctest"
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
10+
"github.com/hashicorp/terraform-provider-aws/internal/acctest"
11+
)
12+
13+
func TestAccMemoryDBParameterGroupDataSource_basic(t *testing.T) {
14+
rName := "tf-test-" + sdkacctest.RandString(8)
15+
resourceName := "aws_memorydb_parameter_group.test"
16+
dataSourceName := "data.aws_memorydb_parameter_group.test"
17+
18+
resource.ParallelTest(t, resource.TestCase{
19+
PreCheck: func() { acctest.PreCheck(t); testAccPreCheck(t) },
20+
ErrorCheck: acctest.ErrorCheck(t, memorydb.EndpointsID),
21+
ProviderFactories: acctest.ProviderFactories,
22+
Steps: []resource.TestStep{
23+
{
24+
Config: testAccParameterGroupDataSourceConfig(rName),
25+
Check: resource.ComposeAggregateTestCheckFunc(
26+
resource.TestCheckResourceAttrPair(dataSourceName, "arn", resourceName, "arn"),
27+
resource.TestCheckResourceAttrPair(dataSourceName, "description", resourceName, "description"),
28+
resource.TestCheckResourceAttrPair(dataSourceName, "name", resourceName, "name"),
29+
resource.TestCheckResourceAttrPair(dataSourceName, "family", resourceName, "family"),
30+
resource.TestCheckResourceAttrPair(dataSourceName, "id", resourceName, "id"),
31+
resource.TestCheckResourceAttr(dataSourceName, "parameter.#", "2"),
32+
resource.TestCheckTypeSetElemNestedAttrs(dataSourceName, "parameter.*", map[string]string{
33+
"name": "active-defrag-cycle-max",
34+
"value": "70",
35+
}),
36+
resource.TestCheckTypeSetElemNestedAttrs(dataSourceName, "parameter.*", map[string]string{
37+
"name": "active-defrag-cycle-min",
38+
"value": "10",
39+
}),
40+
resource.TestCheckResourceAttr(dataSourceName, "tags.%", "1"),
41+
resource.TestCheckResourceAttrPair(dataSourceName, "tags.Test", resourceName, "tags.Test"),
42+
resource.TestCheckResourceAttrPair(dataSourceName, "vpc_id", resourceName, "vpc_id"),
43+
),
44+
},
45+
},
46+
})
47+
}
48+
49+
func testAccParameterGroupDataSourceConfig(rName string) string {
50+
return fmt.Sprintf(`
51+
resource "aws_memorydb_parameter_group" "test" {
52+
name = %[1]q
53+
family = "memorydb_redis6"
54+
55+
parameter {
56+
name = "active-defrag-cycle-max"
57+
value = "70"
58+
}
59+
60+
parameter {
61+
name = "active-defrag-cycle-min"
62+
value = "10"
63+
}
64+
65+
tags = {
66+
Test = "test"
67+
}
68+
}
69+
70+
data "aws_memorydb_parameter_group" "test" {
71+
name = aws_memorydb_parameter_group.test.name
72+
}
73+
`, rName)
74+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
---
2+
subcategory: "MemoryDB"
3+
layout: "aws"
4+
page_title: "AWS: aws_memorydb_parameter_group"
5+
description: |-
6+
Provides information about a MemoryDB Parameter Group.
7+
---
8+
9+
# Resource: aws_memorydb_parameter_group
10+
11+
Provides information about a MemoryDB Parameter Group.
12+
13+
## Example Usage
14+
15+
```terraform
16+
data "aws_memorydb_parameter_group" "example" {
17+
name = "my-parameter-group"
18+
}
19+
```
20+
21+
## Argument Reference
22+
23+
The following arguments are required:
24+
25+
* `name` - (Required) Name of the parameter group.
26+
27+
## Attributes Reference
28+
29+
In addition, the following attributes are exported:
30+
31+
* `id` - Name of the parameter group.
32+
* `arn` - ARN of the parameter group.
33+
* `description` - Description of the parameter group.
34+
* `family` - The engine version that the parameter group can be used with.
35+
* `parameter` - Set of user-defined MemoryDB parameters applied by the parameter group.
36+
* `name` - Name of the parameter.
37+
* `value` - Value of the parameter.
38+
* `tags` - A map of tags assigned to the parameter group.

0 commit comments

Comments
 (0)