Skip to content

Commit

Permalink
Merge pull request #32435 from lafod/f-opensearch-vpc-endpoint
Browse files Browse the repository at this point in the history
F create aws open search vpc endpoint
  • Loading branch information
ewbankkit committed Aug 16, 2023
2 parents 6798bdd + 1bed608 commit 4175420
Show file tree
Hide file tree
Showing 9 changed files with 805 additions and 26 deletions.
3 changes: 3 additions & 0 deletions .changelog/32435.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:new-resource
aws_opensearch_vpc_endpoint
```
2 changes: 1 addition & 1 deletion internal/service/opensearch/domain.go
Original file line number Diff line number Diff line change
Expand Up @@ -896,7 +896,7 @@ func resourceDomainRead(ctx context.Context, d *schema.ResourceData, meta interf
}

if ds.VPCOptions != nil {
if err := d.Set("vpc_options", flattenVPCDerivedInfo(ds.VPCOptions)); err != nil {
if err := d.Set("vpc_options", []interface{}{flattenVPCDerivedInfo(ds.VPCOptions)}); err != nil {
return sdkdiag.AppendErrorf(diags, "setting vpc_options: %s", err)
}

Expand Down
2 changes: 1 addition & 1 deletion internal/service/opensearch/domain_data_source.go
Original file line number Diff line number Diff line change
Expand Up @@ -466,7 +466,7 @@ func dataSourceDomainRead(ctx context.Context, d *schema.ResourceData, meta inte
}

if ds.VPCOptions != nil {
if err := d.Set("vpc_options", flattenVPCDerivedInfo(ds.VPCOptions)); err != nil {
if err := d.Set("vpc_options", []interface{}{flattenVPCDerivedInfo(ds.VPCOptions)}); err != nil {
return sdkdiag.AppendErrorf(diags, "setting vpc_options: %s", err)
}

Expand Down
10 changes: 10 additions & 0 deletions internal/service/opensearch/exports_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package opensearch

// Exports for use in tests only.
var (
FindVPCEndpointByID = findVPCEndpointByID
VPCEndpointsError = vpcEndpointsError
)
60 changes: 36 additions & 24 deletions internal/service/opensearch/flex.go
Original file line number Diff line number Diff line change
Expand Up @@ -113,19 +113,6 @@ func expandEncryptAtRestOptions(m map[string]interface{}) *opensearchservice.Enc
return &options
}

func expandVPCOptions(m map[string]interface{}) *opensearchservice.VPCOptions {
options := opensearchservice.VPCOptions{}

if v, ok := m["security_group_ids"]; ok {
options.SecurityGroupIds = flex.ExpandStringSet(v.(*schema.Set))
}
if v, ok := m["subnet_ids"]; ok {
options.SubnetIds = flex.ExpandStringSet(v.(*schema.Set))
}

return &options
}

func flattenCognitoOptions(c *opensearchservice.CognitoOptions) []map[string]interface{} {
m := map[string]interface{}{}

Expand Down Expand Up @@ -216,21 +203,46 @@ func flattenSnapshotOptions(snapshotOptions *opensearchservice.SnapshotOptions)
return []map[string]interface{}{m}
}

func flattenVPCDerivedInfo(o *opensearchservice.VPCDerivedInfo) []map[string]interface{} {
m := map[string]interface{}{}
func expandVPCOptions(tfMap map[string]interface{}) *opensearchservice.VPCOptions {
if tfMap == nil {
return nil
}

if o.AvailabilityZones != nil {
m["availability_zones"] = flex.FlattenStringSet(o.AvailabilityZones)
apiObject := &opensearchservice.VPCOptions{}

if v, ok := tfMap["security_group_ids"].(*schema.Set); ok && v.Len() > 0 {
apiObject.SecurityGroupIds = flex.ExpandStringSet(v)
}
if o.SecurityGroupIds != nil {
m["security_group_ids"] = flex.FlattenStringSet(o.SecurityGroupIds)

if v, ok := tfMap["subnet_ids"].(*schema.Set); ok && v.Len() > 0 {
apiObject.SubnetIds = flex.ExpandStringSet(v)
}
if o.SubnetIds != nil {
m["subnet_ids"] = flex.FlattenStringSet(o.SubnetIds)

return apiObject
}

func flattenVPCDerivedInfo(apiObject *opensearchservice.VPCDerivedInfo) map[string]interface{} {
if apiObject == nil {
return nil
}
if o.VPCId != nil {
m["vpc_id"] = aws.StringValue(o.VPCId)

tfMap := map[string]interface{}{}

if v := apiObject.AvailabilityZones; v != nil {
tfMap["availability_zones"] = aws.StringValueSlice(v)
}

return []map[string]interface{}{m}
if v := apiObject.SecurityGroupIds; v != nil {
tfMap["security_group_ids"] = aws.StringValueSlice(v)
}

if v := apiObject.SubnetIds; v != nil {
tfMap["subnet_ids"] = aws.StringValueSlice(v)
}

if v := apiObject.VPCId; v != nil {
tfMap["vpc_id"] = aws.StringValue(v)
}

return tfMap
}
4 changes: 4 additions & 0 deletions internal/service/opensearch/service_package_gen.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 4175420

Please sign in to comment.