{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.Lightsail.Types.InstanceAccessDetails
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Lightsail.Types.InstanceAccessDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Lightsail.Types.HostKeyAttributes
import Amazonka.Lightsail.Types.InstanceAccessProtocol
import Amazonka.Lightsail.Types.PasswordData
import qualified Amazonka.Prelude as Prelude

-- | The parameters for gaining temporary access to one of your Amazon
-- Lightsail instances.
--
-- /See:/ 'newInstanceAccessDetails' smart constructor.
data InstanceAccessDetails = InstanceAccessDetails'
  { -- | For SSH access, the public key to use when accessing your instance For
    -- OpenSSH clients (e.g., command line SSH), you should save this value to
    -- @tempkey-cert.pub@.
    InstanceAccessDetails -> Maybe Text
certKey :: Prelude.Maybe Prelude.Text,
    -- | For SSH access, the date on which the temporary keys expire.
    InstanceAccessDetails -> Maybe POSIX
expiresAt :: Prelude.Maybe Data.POSIX,
    -- | Describes the public SSH host keys or the RDP certificate.
    InstanceAccessDetails -> Maybe [HostKeyAttributes]
hostKeys :: Prelude.Maybe [HostKeyAttributes],
    -- | The name of this Amazon Lightsail instance.
    InstanceAccessDetails -> Maybe Text
instanceName :: Prelude.Maybe Prelude.Text,
    -- | The public IP address of the Amazon Lightsail instance.
    InstanceAccessDetails -> Maybe Text
ipAddress :: Prelude.Maybe Prelude.Text,
    -- | For RDP access, the password for your Amazon Lightsail instance.
    -- Password will be an empty string if the password for your new instance
    -- is not ready yet. When you create an instance, it can take up to 15
    -- minutes for the instance to be ready.
    --
    -- If you create an instance using any key pair other than the default
    -- (@LightsailDefaultKeyPair@), @password@ will always be an empty string.
    --
    -- If you change the Administrator password on the instance, Lightsail will
    -- continue to return the original password value. When accessing the
    -- instance using RDP, you need to manually enter the Administrator
    -- password after changing it from the default.
    InstanceAccessDetails -> Maybe Text
password :: Prelude.Maybe Prelude.Text,
    -- | For a Windows Server-based instance, an object with the data you can use
    -- to retrieve your password. This is only needed if @password@ is empty
    -- and the instance is not new (and therefore the password is not ready
    -- yet). When you create an instance, it can take up to 15 minutes for the
    -- instance to be ready.
    InstanceAccessDetails -> Maybe PasswordData
passwordData :: Prelude.Maybe PasswordData,
    -- | For SSH access, the temporary private key. For OpenSSH clients (e.g.,
    -- command line SSH), you should save this value to @tempkey@).
    InstanceAccessDetails -> Maybe Text
privateKey :: Prelude.Maybe Prelude.Text,
    -- | The protocol for these Amazon Lightsail instance access details.
    InstanceAccessDetails -> Maybe InstanceAccessProtocol
protocol :: Prelude.Maybe InstanceAccessProtocol,
    -- | The user name to use when logging in to the Amazon Lightsail instance.
    InstanceAccessDetails -> Maybe Text
username :: Prelude.Maybe Prelude.Text
  }
  deriving (InstanceAccessDetails -> InstanceAccessDetails -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: InstanceAccessDetails -> InstanceAccessDetails -> Bool
$c/= :: InstanceAccessDetails -> InstanceAccessDetails -> Bool
== :: InstanceAccessDetails -> InstanceAccessDetails -> Bool
$c== :: InstanceAccessDetails -> InstanceAccessDetails -> Bool
Prelude.Eq, ReadPrec [InstanceAccessDetails]
ReadPrec InstanceAccessDetails
Int -> ReadS InstanceAccessDetails
ReadS [InstanceAccessDetails]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [InstanceAccessDetails]
$creadListPrec :: ReadPrec [InstanceAccessDetails]
readPrec :: ReadPrec InstanceAccessDetails
$creadPrec :: ReadPrec InstanceAccessDetails
readList :: ReadS [InstanceAccessDetails]
$creadList :: ReadS [InstanceAccessDetails]
readsPrec :: Int -> ReadS InstanceAccessDetails
$creadsPrec :: Int -> ReadS InstanceAccessDetails
Prelude.Read, Int -> InstanceAccessDetails -> ShowS
[InstanceAccessDetails] -> ShowS
InstanceAccessDetails -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [InstanceAccessDetails] -> ShowS
$cshowList :: [InstanceAccessDetails] -> ShowS
show :: InstanceAccessDetails -> String
$cshow :: InstanceAccessDetails -> String
showsPrec :: Int -> InstanceAccessDetails -> ShowS
$cshowsPrec :: Int -> InstanceAccessDetails -> ShowS
Prelude.Show, forall x. Rep InstanceAccessDetails x -> InstanceAccessDetails
forall x. InstanceAccessDetails -> Rep InstanceAccessDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep InstanceAccessDetails x -> InstanceAccessDetails
$cfrom :: forall x. InstanceAccessDetails -> Rep InstanceAccessDetails x
Prelude.Generic)

-- |
-- Create a value of 'InstanceAccessDetails' 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:
--
-- 'certKey', 'instanceAccessDetails_certKey' - For SSH access, the public key to use when accessing your instance For
-- OpenSSH clients (e.g., command line SSH), you should save this value to
-- @tempkey-cert.pub@.
--
-- 'expiresAt', 'instanceAccessDetails_expiresAt' - For SSH access, the date on which the temporary keys expire.
--
-- 'hostKeys', 'instanceAccessDetails_hostKeys' - Describes the public SSH host keys or the RDP certificate.
--
-- 'instanceName', 'instanceAccessDetails_instanceName' - The name of this Amazon Lightsail instance.
--
-- 'ipAddress', 'instanceAccessDetails_ipAddress' - The public IP address of the Amazon Lightsail instance.
--
-- 'password', 'instanceAccessDetails_password' - For RDP access, the password for your Amazon Lightsail instance.
-- Password will be an empty string if the password for your new instance
-- is not ready yet. When you create an instance, it can take up to 15
-- minutes for the instance to be ready.
--
-- If you create an instance using any key pair other than the default
-- (@LightsailDefaultKeyPair@), @password@ will always be an empty string.
--
-- If you change the Administrator password on the instance, Lightsail will
-- continue to return the original password value. When accessing the
-- instance using RDP, you need to manually enter the Administrator
-- password after changing it from the default.
--
-- 'passwordData', 'instanceAccessDetails_passwordData' - For a Windows Server-based instance, an object with the data you can use
-- to retrieve your password. This is only needed if @password@ is empty
-- and the instance is not new (and therefore the password is not ready
-- yet). When you create an instance, it can take up to 15 minutes for the
-- instance to be ready.
--
-- 'privateKey', 'instanceAccessDetails_privateKey' - For SSH access, the temporary private key. For OpenSSH clients (e.g.,
-- command line SSH), you should save this value to @tempkey@).
--
-- 'protocol', 'instanceAccessDetails_protocol' - The protocol for these Amazon Lightsail instance access details.
--
-- 'username', 'instanceAccessDetails_username' - The user name to use when logging in to the Amazon Lightsail instance.
newInstanceAccessDetails ::
  InstanceAccessDetails
newInstanceAccessDetails :: InstanceAccessDetails
newInstanceAccessDetails =
  InstanceAccessDetails'
    { $sel:certKey:InstanceAccessDetails' :: Maybe Text
certKey = forall a. Maybe a
Prelude.Nothing,
      $sel:expiresAt:InstanceAccessDetails' :: Maybe POSIX
expiresAt = forall a. Maybe a
Prelude.Nothing,
      $sel:hostKeys:InstanceAccessDetails' :: Maybe [HostKeyAttributes]
hostKeys = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceName:InstanceAccessDetails' :: Maybe Text
instanceName = forall a. Maybe a
Prelude.Nothing,
      $sel:ipAddress:InstanceAccessDetails' :: Maybe Text
ipAddress = forall a. Maybe a
Prelude.Nothing,
      $sel:password:InstanceAccessDetails' :: Maybe Text
password = forall a. Maybe a
Prelude.Nothing,
      $sel:passwordData:InstanceAccessDetails' :: Maybe PasswordData
passwordData = forall a. Maybe a
Prelude.Nothing,
      $sel:privateKey:InstanceAccessDetails' :: Maybe Text
privateKey = forall a. Maybe a
Prelude.Nothing,
      $sel:protocol:InstanceAccessDetails' :: Maybe InstanceAccessProtocol
protocol = forall a. Maybe a
Prelude.Nothing,
      $sel:username:InstanceAccessDetails' :: Maybe Text
username = forall a. Maybe a
Prelude.Nothing
    }

-- | For SSH access, the public key to use when accessing your instance For
-- OpenSSH clients (e.g., command line SSH), you should save this value to
-- @tempkey-cert.pub@.
instanceAccessDetails_certKey :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe Prelude.Text)
instanceAccessDetails_certKey :: Lens' InstanceAccessDetails (Maybe Text)
instanceAccessDetails_certKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe Text
certKey :: Maybe Text
$sel:certKey:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
certKey} -> Maybe Text
certKey) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe Text
a -> InstanceAccessDetails
s {$sel:certKey:InstanceAccessDetails' :: Maybe Text
certKey = Maybe Text
a} :: InstanceAccessDetails)

-- | For SSH access, the date on which the temporary keys expire.
instanceAccessDetails_expiresAt :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe Prelude.UTCTime)
instanceAccessDetails_expiresAt :: Lens' InstanceAccessDetails (Maybe UTCTime)
instanceAccessDetails_expiresAt = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe POSIX
expiresAt :: Maybe POSIX
$sel:expiresAt:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe POSIX
expiresAt} -> Maybe POSIX
expiresAt) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe POSIX
a -> InstanceAccessDetails
s {$sel:expiresAt:InstanceAccessDetails' :: Maybe POSIX
expiresAt = Maybe POSIX
a} :: InstanceAccessDetails) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | Describes the public SSH host keys or the RDP certificate.
instanceAccessDetails_hostKeys :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe [HostKeyAttributes])
instanceAccessDetails_hostKeys :: Lens' InstanceAccessDetails (Maybe [HostKeyAttributes])
instanceAccessDetails_hostKeys = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe [HostKeyAttributes]
hostKeys :: Maybe [HostKeyAttributes]
$sel:hostKeys:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe [HostKeyAttributes]
hostKeys} -> Maybe [HostKeyAttributes]
hostKeys) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe [HostKeyAttributes]
a -> InstanceAccessDetails
s {$sel:hostKeys:InstanceAccessDetails' :: Maybe [HostKeyAttributes]
hostKeys = Maybe [HostKeyAttributes]
a} :: InstanceAccessDetails) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of this Amazon Lightsail instance.
instanceAccessDetails_instanceName :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe Prelude.Text)
instanceAccessDetails_instanceName :: Lens' InstanceAccessDetails (Maybe Text)
instanceAccessDetails_instanceName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe Text
instanceName :: Maybe Text
$sel:instanceName:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
instanceName} -> Maybe Text
instanceName) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe Text
a -> InstanceAccessDetails
s {$sel:instanceName:InstanceAccessDetails' :: Maybe Text
instanceName = Maybe Text
a} :: InstanceAccessDetails)

-- | The public IP address of the Amazon Lightsail instance.
instanceAccessDetails_ipAddress :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe Prelude.Text)
instanceAccessDetails_ipAddress :: Lens' InstanceAccessDetails (Maybe Text)
instanceAccessDetails_ipAddress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe Text
ipAddress :: Maybe Text
$sel:ipAddress:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
ipAddress} -> Maybe Text
ipAddress) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe Text
a -> InstanceAccessDetails
s {$sel:ipAddress:InstanceAccessDetails' :: Maybe Text
ipAddress = Maybe Text
a} :: InstanceAccessDetails)

-- | For RDP access, the password for your Amazon Lightsail instance.
-- Password will be an empty string if the password for your new instance
-- is not ready yet. When you create an instance, it can take up to 15
-- minutes for the instance to be ready.
--
-- If you create an instance using any key pair other than the default
-- (@LightsailDefaultKeyPair@), @password@ will always be an empty string.
--
-- If you change the Administrator password on the instance, Lightsail will
-- continue to return the original password value. When accessing the
-- instance using RDP, you need to manually enter the Administrator
-- password after changing it from the default.
instanceAccessDetails_password :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe Prelude.Text)
instanceAccessDetails_password :: Lens' InstanceAccessDetails (Maybe Text)
instanceAccessDetails_password = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe Text
password :: Maybe Text
$sel:password:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
password} -> Maybe Text
password) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe Text
a -> InstanceAccessDetails
s {$sel:password:InstanceAccessDetails' :: Maybe Text
password = Maybe Text
a} :: InstanceAccessDetails)

-- | For a Windows Server-based instance, an object with the data you can use
-- to retrieve your password. This is only needed if @password@ is empty
-- and the instance is not new (and therefore the password is not ready
-- yet). When you create an instance, it can take up to 15 minutes for the
-- instance to be ready.
instanceAccessDetails_passwordData :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe PasswordData)
instanceAccessDetails_passwordData :: Lens' InstanceAccessDetails (Maybe PasswordData)
instanceAccessDetails_passwordData = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe PasswordData
passwordData :: Maybe PasswordData
$sel:passwordData:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe PasswordData
passwordData} -> Maybe PasswordData
passwordData) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe PasswordData
a -> InstanceAccessDetails
s {$sel:passwordData:InstanceAccessDetails' :: Maybe PasswordData
passwordData = Maybe PasswordData
a} :: InstanceAccessDetails)

-- | For SSH access, the temporary private key. For OpenSSH clients (e.g.,
-- command line SSH), you should save this value to @tempkey@).
instanceAccessDetails_privateKey :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe Prelude.Text)
instanceAccessDetails_privateKey :: Lens' InstanceAccessDetails (Maybe Text)
instanceAccessDetails_privateKey = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe Text
privateKey :: Maybe Text
$sel:privateKey:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
privateKey} -> Maybe Text
privateKey) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe Text
a -> InstanceAccessDetails
s {$sel:privateKey:InstanceAccessDetails' :: Maybe Text
privateKey = Maybe Text
a} :: InstanceAccessDetails)

-- | The protocol for these Amazon Lightsail instance access details.
instanceAccessDetails_protocol :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe InstanceAccessProtocol)
instanceAccessDetails_protocol :: Lens' InstanceAccessDetails (Maybe InstanceAccessProtocol)
instanceAccessDetails_protocol = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe InstanceAccessProtocol
protocol :: Maybe InstanceAccessProtocol
$sel:protocol:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe InstanceAccessProtocol
protocol} -> Maybe InstanceAccessProtocol
protocol) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe InstanceAccessProtocol
a -> InstanceAccessDetails
s {$sel:protocol:InstanceAccessDetails' :: Maybe InstanceAccessProtocol
protocol = Maybe InstanceAccessProtocol
a} :: InstanceAccessDetails)

-- | The user name to use when logging in to the Amazon Lightsail instance.
instanceAccessDetails_username :: Lens.Lens' InstanceAccessDetails (Prelude.Maybe Prelude.Text)
instanceAccessDetails_username :: Lens' InstanceAccessDetails (Maybe Text)
instanceAccessDetails_username = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\InstanceAccessDetails' {Maybe Text
username :: Maybe Text
$sel:username:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
username} -> Maybe Text
username) (\s :: InstanceAccessDetails
s@InstanceAccessDetails' {} Maybe Text
a -> InstanceAccessDetails
s {$sel:username:InstanceAccessDetails' :: Maybe Text
username = Maybe Text
a} :: InstanceAccessDetails)

instance Data.FromJSON InstanceAccessDetails where
  parseJSON :: Value -> Parser InstanceAccessDetails
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"InstanceAccessDetails"
      ( \Object
x ->
          Maybe Text
-> Maybe POSIX
-> Maybe [HostKeyAttributes]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe PasswordData
-> Maybe Text
-> Maybe InstanceAccessProtocol
-> Maybe Text
-> InstanceAccessDetails
InstanceAccessDetails'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"certKey")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"expiresAt")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"hostKeys" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"instanceName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ipAddress")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"password")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"passwordData")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"privateKey")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"protocol")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"username")
      )

instance Prelude.Hashable InstanceAccessDetails where
  hashWithSalt :: Int -> InstanceAccessDetails -> Int
hashWithSalt Int
_salt InstanceAccessDetails' {Maybe [HostKeyAttributes]
Maybe Text
Maybe POSIX
Maybe InstanceAccessProtocol
Maybe PasswordData
username :: Maybe Text
protocol :: Maybe InstanceAccessProtocol
privateKey :: Maybe Text
passwordData :: Maybe PasswordData
password :: Maybe Text
ipAddress :: Maybe Text
instanceName :: Maybe Text
hostKeys :: Maybe [HostKeyAttributes]
expiresAt :: Maybe POSIX
certKey :: Maybe Text
$sel:username:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:protocol:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe InstanceAccessProtocol
$sel:privateKey:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:passwordData:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe PasswordData
$sel:password:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:ipAddress:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:instanceName:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:hostKeys:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe [HostKeyAttributes]
$sel:expiresAt:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe POSIX
$sel:certKey:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
certKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
expiresAt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [HostKeyAttributes]
hostKeys
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
ipAddress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
password
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PasswordData
passwordData
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
privateKey
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceAccessProtocol
protocol
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
username

instance Prelude.NFData InstanceAccessDetails where
  rnf :: InstanceAccessDetails -> ()
rnf InstanceAccessDetails' {Maybe [HostKeyAttributes]
Maybe Text
Maybe POSIX
Maybe InstanceAccessProtocol
Maybe PasswordData
username :: Maybe Text
protocol :: Maybe InstanceAccessProtocol
privateKey :: Maybe Text
passwordData :: Maybe PasswordData
password :: Maybe Text
ipAddress :: Maybe Text
instanceName :: Maybe Text
hostKeys :: Maybe [HostKeyAttributes]
expiresAt :: Maybe POSIX
certKey :: Maybe Text
$sel:username:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:protocol:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe InstanceAccessProtocol
$sel:privateKey:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:passwordData:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe PasswordData
$sel:password:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:ipAddress:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:instanceName:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
$sel:hostKeys:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe [HostKeyAttributes]
$sel:expiresAt:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe POSIX
$sel:certKey:InstanceAccessDetails' :: InstanceAccessDetails -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
certKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
expiresAt
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [HostKeyAttributes]
hostKeys
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
ipAddress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
password
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PasswordData
passwordData
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
privateKey
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceAccessProtocol
protocol
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
username