Skip to content

Commit

Permalink
Merge pull request #34637 from hashicorp/td-docdb-sweepers
Browse files Browse the repository at this point in the history
[WIP] DocDB & Neptune sweepers
  • Loading branch information
ewbankkit authored Nov 29, 2023
2 parents ebf9002 + 90335ff commit 38f0bff
Show file tree
Hide file tree
Showing 39 changed files with 1,971 additions and 1,617 deletions.
3 changes: 3 additions & 0 deletions .changelog/34500.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/aws_neptune_parameter_group: Add `name_prefix` argument
```
3 changes: 3 additions & 0 deletions .changelog/34637.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:enhancement
resource/aws_docdb_cluster: Add `storage_type` argument
```
218 changes: 119 additions & 99 deletions internal/service/docdb/cluster.go

Large diffs are not rendered by default.

61 changes: 36 additions & 25 deletions internal/service/docdb/cluster_parameter_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,6 @@ import (
"github.com/hashicorp/terraform-provider-aws/names"
)

const clusterParameterGroupMaxParamsBulkEdit = 20

// @SDKResource("aws_docdb_cluster_parameter_group", name="Cluster Parameter Group")
// @Tags(identifierAttribute="arn")
func ResourceClusterParameterGroup() *schema.Resource {
Expand Down Expand Up @@ -159,21 +157,8 @@ func resourceClusterParameterGroupRead(ctx context.Context, d *schema.ResourceDa
input := &docdb.DescribeDBClusterParametersInput{
DBClusterParameterGroupName: aws.String(d.Id()),
}
var parameters []*docdb.Parameter

err = conn.DescribeDBClusterParametersPagesWithContext(ctx, input, func(page *docdb.DescribeDBClusterParametersOutput, lastPage bool) bool {
if page == nil {
return !lastPage
}

for _, v := range page.Parameters {
if v != nil {
parameters = append(parameters, v)
}
}

return !lastPage
})
parameters, err := findDBClusterParameters(ctx, conn, input)

if err != nil {
return sdkdiag.AppendErrorf(diags, "reading DocumentDB Cluster Parameter Group (%s) parameters: %s", d.Id(), err)
Expand All @@ -192,15 +177,7 @@ func resourceClusterParameterGroupUpdate(ctx context.Context, d *schema.Resource

if d.HasChange("parameter") {
o, n := d.GetChange("parameter")
if o == nil {
o = new(schema.Set)
}
if n == nil {
n = new(schema.Set)
}

os := o.(*schema.Set)
ns := n.(*schema.Set)
os, ns := o.(*schema.Set), n.(*schema.Set)

if parameters := expandParameters(ns.Difference(os).List()); len(parameters) > 0 {
err := modifyClusterParameterGroupParameters(ctx, conn, d.Id(), parameters)
Expand Down Expand Up @@ -243,6 +220,9 @@ func resourceClusterParameterGroupDelete(ctx context.Context, d *schema.Resource
}

func modifyClusterParameterGroupParameters(ctx context.Context, conn *docdb.DocDB, name string, parameters []*docdb.Parameter) error {
const (
clusterParameterGroupMaxParamsBulkEdit = 20
)
// We can only modify 20 parameters at a time, so chunk them until we've got them all.
for _, chunk := range tfslices.Chunks(parameters, clusterParameterGroupMaxParamsBulkEdit) {
input := &docdb.ModifyDBClusterParameterGroupInput{
Expand Down Expand Up @@ -320,3 +300,34 @@ func findDBClusterParameterGroups(ctx context.Context, conn *docdb.DocDB, input

return output, nil
}

func findDBClusterParameters(ctx context.Context, conn *docdb.DocDB, input *docdb.DescribeDBClusterParametersInput) ([]*docdb.Parameter, error) {
var output []*docdb.Parameter

err := conn.DescribeDBClusterParametersPagesWithContext(ctx, input, func(page *docdb.DescribeDBClusterParametersOutput, lastPage bool) bool {
if page == nil {
return !lastPage
}

for _, v := range page.Parameters {
if v != nil {
output = append(output, v)
}
}

return !lastPage
})

if tfawserr.ErrCodeEquals(err, docdb.ErrCodeDBParameterGroupNotFoundFault) {
return nil, &retry.NotFoundError{
LastError: err,
LastRequest: input,
}
}

if err != nil {
return nil, err
}

return output, nil
}
Loading

0 comments on commit 38f0bff

Please sign in to comment.