amazonka-networkmanager-2.0: gen/Amazonka/NetworkManager/CreateVpcAttachment.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Amazonka.NetworkManager.CreateVpcAttachment
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates a VPC attachment on an edge location of a core network.
module Amazonka.NetworkManager.CreateVpcAttachment
( -- * Creating a Request
CreateVpcAttachment (..),
newCreateVpcAttachment,
-- * Request Lenses
createVpcAttachment_clientToken,
createVpcAttachment_options,
createVpcAttachment_tags,
createVpcAttachment_coreNetworkId,
createVpcAttachment_vpcArn,
createVpcAttachment_subnetArns,
-- * Destructuring the Response
CreateVpcAttachmentResponse (..),
newCreateVpcAttachmentResponse,
-- * Response Lenses
createVpcAttachmentResponse_vpcAttachment,
createVpcAttachmentResponse_httpStatus,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.NetworkManager.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
-- | /See:/ 'newCreateVpcAttachment' smart constructor.
data CreateVpcAttachment = CreateVpcAttachment'
{ -- | The client token associated with the request.
clientToken :: Prelude.Maybe Prelude.Text,
-- | Options for the VPC attachment.
options :: Prelude.Maybe VpcOptions,
-- | The key-value tags associated with the request.
tags :: Prelude.Maybe [Tag],
-- | The ID of a core network for the VPC attachment.
coreNetworkId :: Prelude.Text,
-- | The ARN of the VPC.
vpcArn :: Prelude.Text,
-- | The subnet ARN of the VPC attachment.
subnetArns :: [Prelude.Text]
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'CreateVpcAttachment' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'clientToken', 'createVpcAttachment_clientToken' - The client token associated with the request.
--
-- 'options', 'createVpcAttachment_options' - Options for the VPC attachment.
--
-- 'tags', 'createVpcAttachment_tags' - The key-value tags associated with the request.
--
-- 'coreNetworkId', 'createVpcAttachment_coreNetworkId' - The ID of a core network for the VPC attachment.
--
-- 'vpcArn', 'createVpcAttachment_vpcArn' - The ARN of the VPC.
--
-- 'subnetArns', 'createVpcAttachment_subnetArns' - The subnet ARN of the VPC attachment.
newCreateVpcAttachment ::
-- | 'coreNetworkId'
Prelude.Text ->
-- | 'vpcArn'
Prelude.Text ->
CreateVpcAttachment
newCreateVpcAttachment pCoreNetworkId_ pVpcArn_ =
CreateVpcAttachment'
{ clientToken = Prelude.Nothing,
options = Prelude.Nothing,
tags = Prelude.Nothing,
coreNetworkId = pCoreNetworkId_,
vpcArn = pVpcArn_,
subnetArns = Prelude.mempty
}
-- | The client token associated with the request.
createVpcAttachment_clientToken :: Lens.Lens' CreateVpcAttachment (Prelude.Maybe Prelude.Text)
createVpcAttachment_clientToken = Lens.lens (\CreateVpcAttachment' {clientToken} -> clientToken) (\s@CreateVpcAttachment' {} a -> s {clientToken = a} :: CreateVpcAttachment)
-- | Options for the VPC attachment.
createVpcAttachment_options :: Lens.Lens' CreateVpcAttachment (Prelude.Maybe VpcOptions)
createVpcAttachment_options = Lens.lens (\CreateVpcAttachment' {options} -> options) (\s@CreateVpcAttachment' {} a -> s {options = a} :: CreateVpcAttachment)
-- | The key-value tags associated with the request.
createVpcAttachment_tags :: Lens.Lens' CreateVpcAttachment (Prelude.Maybe [Tag])
createVpcAttachment_tags = Lens.lens (\CreateVpcAttachment' {tags} -> tags) (\s@CreateVpcAttachment' {} a -> s {tags = a} :: CreateVpcAttachment) Prelude.. Lens.mapping Lens.coerced
-- | The ID of a core network for the VPC attachment.
createVpcAttachment_coreNetworkId :: Lens.Lens' CreateVpcAttachment Prelude.Text
createVpcAttachment_coreNetworkId = Lens.lens (\CreateVpcAttachment' {coreNetworkId} -> coreNetworkId) (\s@CreateVpcAttachment' {} a -> s {coreNetworkId = a} :: CreateVpcAttachment)
-- | The ARN of the VPC.
createVpcAttachment_vpcArn :: Lens.Lens' CreateVpcAttachment Prelude.Text
createVpcAttachment_vpcArn = Lens.lens (\CreateVpcAttachment' {vpcArn} -> vpcArn) (\s@CreateVpcAttachment' {} a -> s {vpcArn = a} :: CreateVpcAttachment)
-- | The subnet ARN of the VPC attachment.
createVpcAttachment_subnetArns :: Lens.Lens' CreateVpcAttachment [Prelude.Text]
createVpcAttachment_subnetArns = Lens.lens (\CreateVpcAttachment' {subnetArns} -> subnetArns) (\s@CreateVpcAttachment' {} a -> s {subnetArns = a} :: CreateVpcAttachment) Prelude.. Lens.coerced
instance Core.AWSRequest CreateVpcAttachment where
type
AWSResponse CreateVpcAttachment =
CreateVpcAttachmentResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
CreateVpcAttachmentResponse'
Prelude.<$> (x Data..?> "VpcAttachment")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable CreateVpcAttachment where
hashWithSalt _salt CreateVpcAttachment' {..} =
_salt
`Prelude.hashWithSalt` clientToken
`Prelude.hashWithSalt` options
`Prelude.hashWithSalt` tags
`Prelude.hashWithSalt` coreNetworkId
`Prelude.hashWithSalt` vpcArn
`Prelude.hashWithSalt` subnetArns
instance Prelude.NFData CreateVpcAttachment where
rnf CreateVpcAttachment' {..} =
Prelude.rnf clientToken
`Prelude.seq` Prelude.rnf options
`Prelude.seq` Prelude.rnf tags
`Prelude.seq` Prelude.rnf coreNetworkId
`Prelude.seq` Prelude.rnf vpcArn
`Prelude.seq` Prelude.rnf subnetArns
instance Data.ToHeaders CreateVpcAttachment where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON CreateVpcAttachment where
toJSON CreateVpcAttachment' {..} =
Data.object
( Prelude.catMaybes
[ ("ClientToken" Data..=) Prelude.<$> clientToken,
("Options" Data..=) Prelude.<$> options,
("Tags" Data..=) Prelude.<$> tags,
Prelude.Just ("CoreNetworkId" Data..= coreNetworkId),
Prelude.Just ("VpcArn" Data..= vpcArn),
Prelude.Just ("SubnetArns" Data..= subnetArns)
]
)
instance Data.ToPath CreateVpcAttachment where
toPath = Prelude.const "/vpc-attachments"
instance Data.ToQuery CreateVpcAttachment where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newCreateVpcAttachmentResponse' smart constructor.
data CreateVpcAttachmentResponse = CreateVpcAttachmentResponse'
{ -- | Provides details about the VPC attachment.
vpcAttachment :: Prelude.Maybe VpcAttachment,
-- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'CreateVpcAttachmentResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'vpcAttachment', 'createVpcAttachmentResponse_vpcAttachment' - Provides details about the VPC attachment.
--
-- 'httpStatus', 'createVpcAttachmentResponse_httpStatus' - The response's http status code.
newCreateVpcAttachmentResponse ::
-- | 'httpStatus'
Prelude.Int ->
CreateVpcAttachmentResponse
newCreateVpcAttachmentResponse pHttpStatus_ =
CreateVpcAttachmentResponse'
{ vpcAttachment =
Prelude.Nothing,
httpStatus = pHttpStatus_
}
-- | Provides details about the VPC attachment.
createVpcAttachmentResponse_vpcAttachment :: Lens.Lens' CreateVpcAttachmentResponse (Prelude.Maybe VpcAttachment)
createVpcAttachmentResponse_vpcAttachment = Lens.lens (\CreateVpcAttachmentResponse' {vpcAttachment} -> vpcAttachment) (\s@CreateVpcAttachmentResponse' {} a -> s {vpcAttachment = a} :: CreateVpcAttachmentResponse)
-- | The response's http status code.
createVpcAttachmentResponse_httpStatus :: Lens.Lens' CreateVpcAttachmentResponse Prelude.Int
createVpcAttachmentResponse_httpStatus = Lens.lens (\CreateVpcAttachmentResponse' {httpStatus} -> httpStatus) (\s@CreateVpcAttachmentResponse' {} a -> s {httpStatus = a} :: CreateVpcAttachmentResponse)
instance Prelude.NFData CreateVpcAttachmentResponse where
rnf CreateVpcAttachmentResponse' {..} =
Prelude.rnf vpcAttachment
`Prelude.seq` Prelude.rnf httpStatus