amazonka-outposts-2.0: gen/Amazonka/Outposts/StartConnection.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.Outposts.StartConnection
-- Copyright : (c) 2013-2023 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Amazon Web Services uses this action to install Outpost servers.
--
-- Starts the connection required for Outpost server installation.
--
-- Use CloudTrail to monitor this action or Amazon Web Services managed
-- policy for Amazon Web Services Outposts to secure it. For more
-- information, see
-- <https://docs.aws.amazon.com/outposts/latest/userguide/security-iam-awsmanpol.html Amazon Web Services managed policies for Amazon Web Services Outposts>
-- and
-- <https://docs.aws.amazon.com/outposts/latest/userguide/logging-using-cloudtrail.html Logging Amazon Web Services Outposts API calls with Amazon Web Services CloudTrail>
-- in the /Amazon Web Services Outposts User Guide/.
module Amazonka.Outposts.StartConnection
( -- * Creating a Request
StartConnection (..),
newStartConnection,
-- * Request Lenses
startConnection_deviceSerialNumber,
startConnection_assetId,
startConnection_clientPublicKey,
startConnection_networkInterfaceDeviceIndex,
-- * Destructuring the Response
StartConnectionResponse (..),
newStartConnectionResponse,
-- * Response Lenses
startConnectionResponse_connectionId,
startConnectionResponse_underlayIpAddress,
startConnectionResponse_httpStatus,
)
where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Outposts.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
-- | /See:/ 'newStartConnection' smart constructor.
data StartConnection = StartConnection'
{ -- | The serial number of the dongle.
deviceSerialNumber :: Prelude.Text,
-- | The ID of the Outpost server.
assetId :: Prelude.Text,
-- | The public key of the client.
clientPublicKey :: Prelude.Text,
-- | The device index of the network interface on the Outpost server.
networkInterfaceDeviceIndex :: Prelude.Natural
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'StartConnection' 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:
--
-- 'deviceSerialNumber', 'startConnection_deviceSerialNumber' - The serial number of the dongle.
--
-- 'assetId', 'startConnection_assetId' - The ID of the Outpost server.
--
-- 'clientPublicKey', 'startConnection_clientPublicKey' - The public key of the client.
--
-- 'networkInterfaceDeviceIndex', 'startConnection_networkInterfaceDeviceIndex' - The device index of the network interface on the Outpost server.
newStartConnection ::
-- | 'deviceSerialNumber'
Prelude.Text ->
-- | 'assetId'
Prelude.Text ->
-- | 'clientPublicKey'
Prelude.Text ->
-- | 'networkInterfaceDeviceIndex'
Prelude.Natural ->
StartConnection
newStartConnection
pDeviceSerialNumber_
pAssetId_
pClientPublicKey_
pNetworkInterfaceDeviceIndex_ =
StartConnection'
{ deviceSerialNumber =
pDeviceSerialNumber_,
assetId = pAssetId_,
clientPublicKey = pClientPublicKey_,
networkInterfaceDeviceIndex =
pNetworkInterfaceDeviceIndex_
}
-- | The serial number of the dongle.
startConnection_deviceSerialNumber :: Lens.Lens' StartConnection Prelude.Text
startConnection_deviceSerialNumber = Lens.lens (\StartConnection' {deviceSerialNumber} -> deviceSerialNumber) (\s@StartConnection' {} a -> s {deviceSerialNumber = a} :: StartConnection)
-- | The ID of the Outpost server.
startConnection_assetId :: Lens.Lens' StartConnection Prelude.Text
startConnection_assetId = Lens.lens (\StartConnection' {assetId} -> assetId) (\s@StartConnection' {} a -> s {assetId = a} :: StartConnection)
-- | The public key of the client.
startConnection_clientPublicKey :: Lens.Lens' StartConnection Prelude.Text
startConnection_clientPublicKey = Lens.lens (\StartConnection' {clientPublicKey} -> clientPublicKey) (\s@StartConnection' {} a -> s {clientPublicKey = a} :: StartConnection)
-- | The device index of the network interface on the Outpost server.
startConnection_networkInterfaceDeviceIndex :: Lens.Lens' StartConnection Prelude.Natural
startConnection_networkInterfaceDeviceIndex = Lens.lens (\StartConnection' {networkInterfaceDeviceIndex} -> networkInterfaceDeviceIndex) (\s@StartConnection' {} a -> s {networkInterfaceDeviceIndex = a} :: StartConnection)
instance Core.AWSRequest StartConnection where
type
AWSResponse StartConnection =
StartConnectionResponse
request overrides =
Request.postJSON (overrides defaultService)
response =
Response.receiveJSON
( \s h x ->
StartConnectionResponse'
Prelude.<$> (x Data..?> "ConnectionId")
Prelude.<*> (x Data..?> "UnderlayIpAddress")
Prelude.<*> (Prelude.pure (Prelude.fromEnum s))
)
instance Prelude.Hashable StartConnection where
hashWithSalt _salt StartConnection' {..} =
_salt
`Prelude.hashWithSalt` deviceSerialNumber
`Prelude.hashWithSalt` assetId
`Prelude.hashWithSalt` clientPublicKey
`Prelude.hashWithSalt` networkInterfaceDeviceIndex
instance Prelude.NFData StartConnection where
rnf StartConnection' {..} =
Prelude.rnf deviceSerialNumber
`Prelude.seq` Prelude.rnf assetId
`Prelude.seq` Prelude.rnf clientPublicKey
`Prelude.seq` Prelude.rnf networkInterfaceDeviceIndex
instance Data.ToHeaders StartConnection where
toHeaders =
Prelude.const
( Prelude.mconcat
[ "Content-Type"
Data.=# ( "application/x-amz-json-1.1" ::
Prelude.ByteString
)
]
)
instance Data.ToJSON StartConnection where
toJSON StartConnection' {..} =
Data.object
( Prelude.catMaybes
[ Prelude.Just
("DeviceSerialNumber" Data..= deviceSerialNumber),
Prelude.Just ("AssetId" Data..= assetId),
Prelude.Just
("ClientPublicKey" Data..= clientPublicKey),
Prelude.Just
( "NetworkInterfaceDeviceIndex"
Data..= networkInterfaceDeviceIndex
)
]
)
instance Data.ToPath StartConnection where
toPath = Prelude.const "/connections"
instance Data.ToQuery StartConnection where
toQuery = Prelude.const Prelude.mempty
-- | /See:/ 'newStartConnectionResponse' smart constructor.
data StartConnectionResponse = StartConnectionResponse'
{ -- | The ID of the connection.
connectionId :: Prelude.Maybe Prelude.Text,
-- | The underlay IP address.
underlayIpAddress :: Prelude.Maybe Prelude.Text,
-- | The response's http status code.
httpStatus :: Prelude.Int
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'StartConnectionResponse' 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:
--
-- 'connectionId', 'startConnectionResponse_connectionId' - The ID of the connection.
--
-- 'underlayIpAddress', 'startConnectionResponse_underlayIpAddress' - The underlay IP address.
--
-- 'httpStatus', 'startConnectionResponse_httpStatus' - The response's http status code.
newStartConnectionResponse ::
-- | 'httpStatus'
Prelude.Int ->
StartConnectionResponse
newStartConnectionResponse pHttpStatus_ =
StartConnectionResponse'
{ connectionId =
Prelude.Nothing,
underlayIpAddress = Prelude.Nothing,
httpStatus = pHttpStatus_
}
-- | The ID of the connection.
startConnectionResponse_connectionId :: Lens.Lens' StartConnectionResponse (Prelude.Maybe Prelude.Text)
startConnectionResponse_connectionId = Lens.lens (\StartConnectionResponse' {connectionId} -> connectionId) (\s@StartConnectionResponse' {} a -> s {connectionId = a} :: StartConnectionResponse)
-- | The underlay IP address.
startConnectionResponse_underlayIpAddress :: Lens.Lens' StartConnectionResponse (Prelude.Maybe Prelude.Text)
startConnectionResponse_underlayIpAddress = Lens.lens (\StartConnectionResponse' {underlayIpAddress} -> underlayIpAddress) (\s@StartConnectionResponse' {} a -> s {underlayIpAddress = a} :: StartConnectionResponse)
-- | The response's http status code.
startConnectionResponse_httpStatus :: Lens.Lens' StartConnectionResponse Prelude.Int
startConnectionResponse_httpStatus = Lens.lens (\StartConnectionResponse' {httpStatus} -> httpStatus) (\s@StartConnectionResponse' {} a -> s {httpStatus = a} :: StartConnectionResponse)
instance Prelude.NFData StartConnectionResponse where
rnf StartConnectionResponse' {..} =
Prelude.rnf connectionId
`Prelude.seq` Prelude.rnf underlayIpAddress
`Prelude.seq` Prelude.rnf httpStatus