Skip to content

Commit

Permalink
Merge pull request #30125 from royrajan13/f-aws_oam_link
Browse files Browse the repository at this point in the history
New resource - `aws_oam_link`
  • Loading branch information
ewbankkit authored Mar 20, 2023
2 parents 21894c5 + 25e642f commit e8fbc08
Show file tree
Hide file tree
Showing 8 changed files with 853 additions and 51 deletions.
3 changes: 3 additions & 0 deletions .changelog/30125.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:new-resource
aws_oam_link
```
15 changes: 11 additions & 4 deletions internal/flex/flex.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,14 @@ func ExpandStringList(configured []interface{}) []*string {
// ExpandStringValueList takes the result of flatmap.Expand for an array of strings
// and returns a []string
func ExpandStringValueList(configured []interface{}) []string {
vs := make([]string, 0, len(configured))
return ExpandStringyValueList[string](configured)
}

func ExpandStringyValueList[E ~string](configured []any) []E {
vs := make([]E, 0, len(configured))
for _, v := range configured {
val, ok := v.(string)
if ok && val != "" {
vs = append(vs, v.(string))
if val, ok := v.(string); ok && val != "" {
vs = append(vs, E(val))
}
}
return vs
Expand Down Expand Up @@ -116,6 +119,10 @@ func ExpandStringValueSet(configured *schema.Set) []string {
return ExpandStringValueList(configured.List()) // nosemgrep:ci.helper-schema-Set-extraneous-ExpandStringList-with-List
}

func ExpandStringyValueSet[E ~string](configured *schema.Set) []E {
return ExpandStringyValueList[E](configured.List())
}

func FlattenStringSet(list []*string) *schema.Set {
return schema.NewSet(schema.HashString, FlattenStringList(list)) // nosemgrep:ci.helper-schema-Set-extraneous-NewSet-with-FlattenStringList
}
Expand Down
82 changes: 47 additions & 35 deletions internal/flex/flex_test.go
Original file line number Diff line number Diff line change
@@ -1,66 +1,81 @@
package flex

import (
"reflect"
"strings"
"testing"

"github.com/aws/aws-sdk-go/aws"
"github.com/google/go-cmp/cmp"
)

func TestExpandStringList(t *testing.T) {
t.Parallel()

expanded := []interface{}{"us-east-1a", "us-east-1b"} //lintignore:AWSAT003
stringList := ExpandStringList(expanded)
expected := []*string{
aws.String("us-east-1a"), //lintignore:AWSAT003
aws.String("us-east-1b"), //lintignore:AWSAT003
configured := []interface{}{"abc", "xyz123"}
got := ExpandStringList(configured)
want := []*string{
aws.String("abc"),
aws.String("xyz123"),
}

if !reflect.DeepEqual(stringList, expected) {
t.Fatalf(
"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
stringList,
expected)
if !cmp.Equal(got, want) {
t.Errorf("expanded = %v, want = %v", got, want)
}
}

func TestExpandStringListEmptyItems(t *testing.T) {
t.Parallel()

expanded := []interface{}{"foo", "bar", "", "baz"}
stringList := ExpandStringList(expanded)
expected := []*string{
configured := []interface{}{"foo", "bar", "", "baz"}
got := ExpandStringList(configured)
want := []*string{
aws.String("foo"),
aws.String("bar"),
aws.String("baz"),
}

if !reflect.DeepEqual(stringList, expected) {
t.Fatalf(
"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
stringList,
expected)
if !cmp.Equal(got, want) {
t.Errorf("expanded = %v, want = %v", got, want)
}
}

func TestExpandStringValueList(t *testing.T) {
t.Parallel()

configured := []interface{}{"abc", "xyz123"}
got := ExpandStringValueList(configured)
want := []string{"abc", "xyz123"}

if !cmp.Equal(got, want) {
t.Errorf("expanded = %v, want = %v", got, want)
}
}

func TestExpandStringValueListEmptyItems(t *testing.T) {
t.Parallel()

configured := []interface{}{"foo", "bar", "", "baz"}
got := ExpandStringValueList(configured)
want := []string{"foo", "bar", "baz"}

if !cmp.Equal(got, want) {
t.Errorf("expanded = %v, want = %v", got, want)
}
}

func TestExpandResourceId(t *testing.T) {
t.Parallel()

resourceId := "foo,bar,baz"
expandedId, _ := ExpandResourceId(resourceId, 3)
expected := []string{
id := "foo,bar,baz"
got, _ := ExpandResourceId(id, 3)
want := []string{
"foo",
"bar",
"baz",
}

if !reflect.DeepEqual(expandedId, expected) {
t.Fatalf(
"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
expandedId,
expected)
if !cmp.Equal(got, want) {
t.Errorf("expanded = %v, want = %v", got, want)
}
}

Expand Down Expand Up @@ -101,14 +116,11 @@ func TestFlattenResourceId(t *testing.T) {
t.Parallel()

idParts := []string{"foo", "bar", "baz"}
flattenedId, _ := FlattenResourceId(idParts, 3)
expected := "foo,bar,baz"

if !reflect.DeepEqual(flattenedId, expected) {
t.Fatalf(
"Got:\n\n%#v\n\nExpected:\n\n%#v\n",
flattenedId,
expected)
got, _ := FlattenResourceId(idParts, 3)
want := "foo,bar,baz"

if !cmp.Equal(got, want) {
t.Errorf("flattened = %v, want = %v", got, want)
}
}

Expand Down
14 changes: 2 additions & 12 deletions internal/service/inspector2/enabler.go
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ func resourceEnablerCreate(ctx context.Context, d *schema.ResourceData, meta int

in := &inspector2.EnableInput{
AccountIds: flex.ExpandStringValueSet(d.Get("account_ids").(*schema.Set)),
ResourceTypes: expandResourceScanTypes(flex.ExpandStringValueSet(d.Get("resource_types").(*schema.Set))),
ResourceTypes: flex.ExpandStringyValueSet[types.ResourceScanType](d.Get("resource_types").(*schema.Set)),
ClientToken: aws.String(resource.UniqueId()),
}

Expand Down Expand Up @@ -129,7 +129,7 @@ func resourceEnablerDelete(ctx context.Context, d *schema.ResourceData, meta int

in := &inspector2.DisableInput{
AccountIds: flex.ExpandStringValueSet(d.Get("account_ids").(*schema.Set)),
ResourceTypes: expandResourceScanTypes(flex.ExpandStringValueSet(d.Get("resource_types").(*schema.Set))),
ResourceTypes: flex.ExpandStringyValueSet[types.ResourceScanType](d.Get("resource_types").(*schema.Set)),
}

_, err := conn.Disable(ctx, in)
Expand Down Expand Up @@ -347,16 +347,6 @@ func compositeStatus(ec2, ecr bool, ec2Status, ecrStatus string) string {
return string(types.StatusSuspended)
}

func expandResourceScanTypes(s []string) []types.ResourceScanType {
vs := make([]types.ResourceScanType, 0, len(s))
for _, v := range s {
if v != "" {
vs = append(vs, types.ResourceScanType(v))
}
}
return vs
}

func EnablerID(accountIDs []string, types []string) string {
return fmt.Sprintf("%s-%s", strings.Join(accountIDs, ":"), strings.Join(types, ":"))
}
Expand Down
Loading

0 comments on commit e8fbc08

Please sign in to comment.