Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

f/aws_networkmanager_connect_attachment #27787

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .changelog/27787.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:new-resource
aws_networkmanager_connect_attachment
```
1 change: 1 addition & 0 deletions internal/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -1809,6 +1809,7 @@ func New(_ context.Context) (*schema.Provider, error) {
"aws_networkfirewall_rule_group": networkfirewall.ResourceRuleGroup(),

"aws_networkmanager_attachment_accepter": networkmanager.ResourceAttachmentAccepter(),
"aws_networkmanager_connect_attachment": networkmanager.ResourceConnectAttachment(),
"aws_networkmanager_connection": networkmanager.ResourceConnection(),
"aws_networkmanager_customer_gateway_association": networkmanager.ResourceCustomerGatewayAssociation(),
"aws_networkmanager_device": networkmanager.ResourceDevice(),
Expand Down
63 changes: 45 additions & 18 deletions internal/service/networkmanager/attachment_accepter.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ func ResourceAttachmentAccepter() *schema.Resource {
ValidateFunc: validation.StringInSlice([]string{
networkmanager.AttachmentTypeVpc,
networkmanager.AttachmentTypeSiteToSiteVpn,
networkmanager.AttachmentTypeConnect,
}, false),
},
"core_network_arn": {
Expand Down Expand Up @@ -110,6 +111,17 @@ func resourceAttachmentAccepterCreate(ctx context.Context, d *schema.ResourceDat

d.SetId(attachmentID)

case networkmanager.AttachmentTypeConnect:
connectAttachment, err := FindConnectAttachmentByID(ctx, conn, attachmentID)

if err != nil {
return diag.Errorf("reading Network Manager Connect Attachment (%s): %s", attachmentID, err)
}

state = aws.StringValue(connectAttachment.Attachment.State)

d.SetId(attachmentID)

default:
return diag.Errorf("unsupported Network Manager Attachment type: %s", attachmentType)
}
Expand All @@ -135,6 +147,11 @@ func resourceAttachmentAccepterCreate(ctx context.Context, d *schema.ResourceDat
if _, err := waitSiteToSiteVPNAttachmentAvailable(ctx, conn, attachmentID, d.Timeout(schema.TimeoutCreate)); err != nil {
return diag.Errorf("waiting for Network Manager VPN Attachment (%s) create: %s", attachmentID, err)
}

case networkmanager.AttachmentTypeConnect:
if _, err := waitConnectAttachmentAvailable(ctx, conn, attachmentID, d.Timeout(schema.TimeoutCreate)); err != nil {
return diag.Errorf("waiting for Network Manager Connect Attachment (%s) create: %s", attachmentID, err)
}
}
}

Expand All @@ -144,6 +161,8 @@ func resourceAttachmentAccepterCreate(ctx context.Context, d *schema.ResourceDat
func resourceAttachmentAccepterRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics {
conn := meta.(*conns.AWSClient).NetworkManagerConn

var a *networkmanager.Attachment

switch aType := d.Get("attachment_type"); aType {
case networkmanager.AttachmentTypeVpc:
vpcAttachment, err := FindVPCAttachmentByID(ctx, conn, d.Id())
Expand All @@ -158,15 +177,7 @@ func resourceAttachmentAccepterRead(ctx context.Context, d *schema.ResourceData,
return diag.Errorf("reading Network Manager VPC Attachment (%s): %s", d.Id(), err)
}

a := vpcAttachment.Attachment
d.Set("attachment_policy_rule_number", a.AttachmentPolicyRuleNumber)
d.Set("core_network_arn", a.CoreNetworkArn)
d.Set("core_network_id", a.CoreNetworkId)
d.Set("edge_location", a.EdgeLocation)
d.Set("owner_account_id", a.OwnerAccountId)
d.Set("resource_arn", a.ResourceArn)
d.Set("segment_name", a.SegmentName)
d.Set("state", a.State)
a = vpcAttachment.Attachment

case networkmanager.AttachmentTypeSiteToSiteVpn:
vpnAttachment, err := FindSiteToSiteVPNAttachmentByID(ctx, conn, d.Id())
Expand All @@ -181,16 +192,32 @@ func resourceAttachmentAccepterRead(ctx context.Context, d *schema.ResourceData,
return diag.Errorf("reading Network Manager Site To Site VPN Attachment (%s): %s", d.Id(), err)
}

a := vpnAttachment.Attachment
d.Set("attachment_policy_rule_number", a.AttachmentPolicyRuleNumber)
d.Set("core_network_arn", a.CoreNetworkArn)
d.Set("core_network_id", a.CoreNetworkId)
d.Set("edge_location", a.EdgeLocation)
d.Set("owner_account_id", a.OwnerAccountId)
d.Set("resource_arn", a.ResourceArn)
d.Set("segment_name", a.SegmentName)
d.Set("state", a.State)
a = vpnAttachment.Attachment

case networkmanager.AttachmentTypeConnect:
connectAttachment, err := FindConnectAttachmentByID(ctx, conn, d.Id())

if !d.IsNewResource() && tfresource.NotFound(err) {
log.Printf("[WARN] Network Manager Connect Attachment %s not found, removing from state", d.Id())
d.SetId("")
return nil
}

if err != nil {
return diag.Errorf("reading Network Manager Connect Attachment (%s): %s", d.Id(), err)
}

a = connectAttachment.Attachment
}

d.Set("attachment_policy_rule_number", a.AttachmentPolicyRuleNumber)
d.Set("core_network_arn", a.CoreNetworkArn)
d.Set("core_network_id", a.CoreNetworkId)
d.Set("edge_location", a.EdgeLocation)
d.Set("owner_account_id", a.OwnerAccountId)
d.Set("resource_arn", a.ResourceArn)
d.Set("segment_name", a.SegmentName)
d.Set("state", a.State)

return nil
}
Loading