{-# 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.DirectConnect.AllocateTransitVirtualInterface -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Provisions a transit virtual interface to be owned by the specified -- Amazon Web Services account. Use this type of interface to connect a -- transit gateway to your Direct Connect gateway. -- -- The owner of a connection provisions a transit virtual interface to be -- owned by the specified Amazon Web Services account. -- -- After you create a transit virtual interface, it must be confirmed by -- the owner using ConfirmTransitVirtualInterface. Until this step has been -- completed, the transit virtual interface is in the @requested@ state and -- is not available to handle traffic. module Amazonka.DirectConnect.AllocateTransitVirtualInterface ( -- * Creating a Request AllocateTransitVirtualInterface (..), newAllocateTransitVirtualInterface, -- * Request Lenses allocateTransitVirtualInterface_connectionId, allocateTransitVirtualInterface_ownerAccount, allocateTransitVirtualInterface_newTransitVirtualInterfaceAllocation, -- * Destructuring the Response AllocateTransitVirtualInterfaceResponse (..), newAllocateTransitVirtualInterfaceResponse, -- * Response Lenses allocateTransitVirtualInterfaceResponse_virtualInterface, allocateTransitVirtualInterfaceResponse_httpStatus, ) where import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import Amazonka.DirectConnect.Types import qualified Amazonka.Prelude as Prelude import qualified Amazonka.Request as Request import qualified Amazonka.Response as Response -- | /See:/ 'newAllocateTransitVirtualInterface' smart constructor. data AllocateTransitVirtualInterface = AllocateTransitVirtualInterface' { -- | The ID of the connection on which the transit virtual interface is -- provisioned. connectionId :: Prelude.Text, -- | The ID of the Amazon Web Services account that owns the transit virtual -- interface. ownerAccount :: Prelude.Text, -- | Information about the transit virtual interface. newTransitVirtualInterfaceAllocation' :: NewTransitVirtualInterfaceAllocation } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'AllocateTransitVirtualInterface' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'connectionId', 'allocateTransitVirtualInterface_connectionId' - The ID of the connection on which the transit virtual interface is -- provisioned. -- -- 'ownerAccount', 'allocateTransitVirtualInterface_ownerAccount' - The ID of the Amazon Web Services account that owns the transit virtual -- interface. -- -- 'newTransitVirtualInterfaceAllocation'', 'allocateTransitVirtualInterface_newTransitVirtualInterfaceAllocation' - Information about the transit virtual interface. newAllocateTransitVirtualInterface :: -- | 'connectionId' Prelude.Text -> -- | 'ownerAccount' Prelude.Text -> -- | 'newTransitVirtualInterfaceAllocation'' NewTransitVirtualInterfaceAllocation -> AllocateTransitVirtualInterface newAllocateTransitVirtualInterface pConnectionId_ pOwnerAccount_ pNewTransitVirtualInterfaceAllocation_ = AllocateTransitVirtualInterface' { connectionId = pConnectionId_, ownerAccount = pOwnerAccount_, newTransitVirtualInterfaceAllocation' = pNewTransitVirtualInterfaceAllocation_ } -- | The ID of the connection on which the transit virtual interface is -- provisioned. allocateTransitVirtualInterface_connectionId :: Lens.Lens' AllocateTransitVirtualInterface Prelude.Text allocateTransitVirtualInterface_connectionId = Lens.lens (\AllocateTransitVirtualInterface' {connectionId} -> connectionId) (\s@AllocateTransitVirtualInterface' {} a -> s {connectionId = a} :: AllocateTransitVirtualInterface) -- | The ID of the Amazon Web Services account that owns the transit virtual -- interface. allocateTransitVirtualInterface_ownerAccount :: Lens.Lens' AllocateTransitVirtualInterface Prelude.Text allocateTransitVirtualInterface_ownerAccount = Lens.lens (\AllocateTransitVirtualInterface' {ownerAccount} -> ownerAccount) (\s@AllocateTransitVirtualInterface' {} a -> s {ownerAccount = a} :: AllocateTransitVirtualInterface) -- | Information about the transit virtual interface. allocateTransitVirtualInterface_newTransitVirtualInterfaceAllocation :: Lens.Lens' AllocateTransitVirtualInterface NewTransitVirtualInterfaceAllocation allocateTransitVirtualInterface_newTransitVirtualInterfaceAllocation = Lens.lens (\AllocateTransitVirtualInterface' {newTransitVirtualInterfaceAllocation'} -> newTransitVirtualInterfaceAllocation') (\s@AllocateTransitVirtualInterface' {} a -> s {newTransitVirtualInterfaceAllocation' = a} :: AllocateTransitVirtualInterface) instance Core.AWSRequest AllocateTransitVirtualInterface where type AWSResponse AllocateTransitVirtualInterface = AllocateTransitVirtualInterfaceResponse request overrides = Request.postJSON (overrides defaultService) response = Response.receiveJSON ( \s h x -> AllocateTransitVirtualInterfaceResponse' Prelude.<$> (x Data..?> "virtualInterface") Prelude.<*> (Prelude.pure (Prelude.fromEnum s)) ) instance Prelude.Hashable AllocateTransitVirtualInterface where hashWithSalt _salt AllocateTransitVirtualInterface' {..} = _salt `Prelude.hashWithSalt` connectionId `Prelude.hashWithSalt` ownerAccount `Prelude.hashWithSalt` newTransitVirtualInterfaceAllocation' instance Prelude.NFData AllocateTransitVirtualInterface where rnf AllocateTransitVirtualInterface' {..} = Prelude.rnf connectionId `Prelude.seq` Prelude.rnf ownerAccount `Prelude.seq` Prelude.rnf newTransitVirtualInterfaceAllocation' instance Data.ToHeaders AllocateTransitVirtualInterface where toHeaders = Prelude.const ( Prelude.mconcat [ "X-Amz-Target" Data.=# ( "OvertureService.AllocateTransitVirtualInterface" :: Prelude.ByteString ), "Content-Type" Data.=# ( "application/x-amz-json-1.1" :: Prelude.ByteString ) ] ) instance Data.ToJSON AllocateTransitVirtualInterface where toJSON AllocateTransitVirtualInterface' {..} = Data.object ( Prelude.catMaybes [ Prelude.Just ("connectionId" Data..= connectionId), Prelude.Just ("ownerAccount" Data..= ownerAccount), Prelude.Just ( "newTransitVirtualInterfaceAllocation" Data..= newTransitVirtualInterfaceAllocation' ) ] ) instance Data.ToPath AllocateTransitVirtualInterface where toPath = Prelude.const "/" instance Data.ToQuery AllocateTransitVirtualInterface where toQuery = Prelude.const Prelude.mempty -- | /See:/ 'newAllocateTransitVirtualInterfaceResponse' smart constructor. data AllocateTransitVirtualInterfaceResponse = AllocateTransitVirtualInterfaceResponse' { virtualInterface :: Prelude.Maybe VirtualInterface, -- | The response's http status code. httpStatus :: Prelude.Int } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'AllocateTransitVirtualInterfaceResponse' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'virtualInterface', 'allocateTransitVirtualInterfaceResponse_virtualInterface' - Undocumented member. -- -- 'httpStatus', 'allocateTransitVirtualInterfaceResponse_httpStatus' - The response's http status code. newAllocateTransitVirtualInterfaceResponse :: -- | 'httpStatus' Prelude.Int -> AllocateTransitVirtualInterfaceResponse newAllocateTransitVirtualInterfaceResponse pHttpStatus_ = AllocateTransitVirtualInterfaceResponse' { virtualInterface = Prelude.Nothing, httpStatus = pHttpStatus_ } -- | Undocumented member. allocateTransitVirtualInterfaceResponse_virtualInterface :: Lens.Lens' AllocateTransitVirtualInterfaceResponse (Prelude.Maybe VirtualInterface) allocateTransitVirtualInterfaceResponse_virtualInterface = Lens.lens (\AllocateTransitVirtualInterfaceResponse' {virtualInterface} -> virtualInterface) (\s@AllocateTransitVirtualInterfaceResponse' {} a -> s {virtualInterface = a} :: AllocateTransitVirtualInterfaceResponse) -- | The response's http status code. allocateTransitVirtualInterfaceResponse_httpStatus :: Lens.Lens' AllocateTransitVirtualInterfaceResponse Prelude.Int allocateTransitVirtualInterfaceResponse_httpStatus = Lens.lens (\AllocateTransitVirtualInterfaceResponse' {httpStatus} -> httpStatus) (\s@AllocateTransitVirtualInterfaceResponse' {} a -> s {httpStatus = a} :: AllocateTransitVirtualInterfaceResponse) instance Prelude.NFData AllocateTransitVirtualInterfaceResponse where rnf AllocateTransitVirtualInterfaceResponse' {..} = Prelude.rnf virtualInterface `Prelude.seq` Prelude.rnf httpStatus