{-# 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.DrS.Types.SourceServer
-- 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.DrS.Types.SourceServer where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.DrS.Types.DataReplicationInfo
import Amazonka.DrS.Types.LastLaunchResult
import Amazonka.DrS.Types.LifeCycle
import Amazonka.DrS.Types.ReplicationDirection
import Amazonka.DrS.Types.SourceCloudProperties
import Amazonka.DrS.Types.SourceProperties
import Amazonka.DrS.Types.StagingArea
import qualified Amazonka.Prelude as Prelude

-- | /See:/ 'newSourceServer' smart constructor.
data SourceServer = SourceServer'
  { -- | The ARN of the Source Server.
    SourceServer -> Maybe Text
arn :: Prelude.Maybe Prelude.Text,
    -- | The Data Replication Info of the Source Server.
    SourceServer -> Maybe DataReplicationInfo
dataReplicationInfo :: Prelude.Maybe DataReplicationInfo,
    -- | The status of the last recovery launch of this Source Server.
    SourceServer -> Maybe LastLaunchResult
lastLaunchResult :: Prelude.Maybe LastLaunchResult,
    -- | The lifecycle information of this Source Server.
    SourceServer -> Maybe LifeCycle
lifeCycle :: Prelude.Maybe LifeCycle,
    -- | The ID of the Recovery Instance associated with this Source Server.
    SourceServer -> Maybe Text
recoveryInstanceId :: Prelude.Maybe Prelude.Text,
    -- | Replication direction of the Source Server.
    SourceServer -> Maybe ReplicationDirection
replicationDirection :: Prelude.Maybe ReplicationDirection,
    -- | For EC2-originated Source Servers which have been failed over and then
    -- failed back, this value will mean the ARN of the Source Server on the
    -- opposite replication direction.
    SourceServer -> Maybe Text
reversedDirectionSourceServerArn :: Prelude.Maybe Prelude.Text,
    -- | Source cloud properties of the Source Server.
    SourceServer -> Maybe SourceCloudProperties
sourceCloudProperties :: Prelude.Maybe SourceCloudProperties,
    -- | The source properties of the Source Server.
    SourceServer -> Maybe SourceProperties
sourceProperties :: Prelude.Maybe SourceProperties,
    -- | The ID of the Source Server.
    SourceServer -> Maybe Text
sourceServerID :: Prelude.Maybe Prelude.Text,
    -- | The staging area of the source server.
    SourceServer -> Maybe StagingArea
stagingArea :: Prelude.Maybe StagingArea,
    -- | The tags associated with the Source Server.
    SourceServer -> Maybe (Sensitive (HashMap Text Text))
tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text))
  }
  deriving (SourceServer -> SourceServer -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: SourceServer -> SourceServer -> Bool
$c/= :: SourceServer -> SourceServer -> Bool
== :: SourceServer -> SourceServer -> Bool
$c== :: SourceServer -> SourceServer -> Bool
Prelude.Eq, Int -> SourceServer -> ShowS
[SourceServer] -> ShowS
SourceServer -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [SourceServer] -> ShowS
$cshowList :: [SourceServer] -> ShowS
show :: SourceServer -> String
$cshow :: SourceServer -> String
showsPrec :: Int -> SourceServer -> ShowS
$cshowsPrec :: Int -> SourceServer -> ShowS
Prelude.Show, forall x. Rep SourceServer x -> SourceServer
forall x. SourceServer -> Rep SourceServer x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep SourceServer x -> SourceServer
$cfrom :: forall x. SourceServer -> Rep SourceServer x
Prelude.Generic)

-- |
-- Create a value of 'SourceServer' 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:
--
-- 'arn', 'sourceServer_arn' - The ARN of the Source Server.
--
-- 'dataReplicationInfo', 'sourceServer_dataReplicationInfo' - The Data Replication Info of the Source Server.
--
-- 'lastLaunchResult', 'sourceServer_lastLaunchResult' - The status of the last recovery launch of this Source Server.
--
-- 'lifeCycle', 'sourceServer_lifeCycle' - The lifecycle information of this Source Server.
--
-- 'recoveryInstanceId', 'sourceServer_recoveryInstanceId' - The ID of the Recovery Instance associated with this Source Server.
--
-- 'replicationDirection', 'sourceServer_replicationDirection' - Replication direction of the Source Server.
--
-- 'reversedDirectionSourceServerArn', 'sourceServer_reversedDirectionSourceServerArn' - For EC2-originated Source Servers which have been failed over and then
-- failed back, this value will mean the ARN of the Source Server on the
-- opposite replication direction.
--
-- 'sourceCloudProperties', 'sourceServer_sourceCloudProperties' - Source cloud properties of the Source Server.
--
-- 'sourceProperties', 'sourceServer_sourceProperties' - The source properties of the Source Server.
--
-- 'sourceServerID', 'sourceServer_sourceServerID' - The ID of the Source Server.
--
-- 'stagingArea', 'sourceServer_stagingArea' - The staging area of the source server.
--
-- 'tags', 'sourceServer_tags' - The tags associated with the Source Server.
newSourceServer ::
  SourceServer
newSourceServer :: SourceServer
newSourceServer =
  SourceServer'
    { $sel:arn:SourceServer' :: Maybe Text
arn = forall a. Maybe a
Prelude.Nothing,
      $sel:dataReplicationInfo:SourceServer' :: Maybe DataReplicationInfo
dataReplicationInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:lastLaunchResult:SourceServer' :: Maybe LastLaunchResult
lastLaunchResult = forall a. Maybe a
Prelude.Nothing,
      $sel:lifeCycle:SourceServer' :: Maybe LifeCycle
lifeCycle = forall a. Maybe a
Prelude.Nothing,
      $sel:recoveryInstanceId:SourceServer' :: Maybe Text
recoveryInstanceId = forall a. Maybe a
Prelude.Nothing,
      $sel:replicationDirection:SourceServer' :: Maybe ReplicationDirection
replicationDirection = forall a. Maybe a
Prelude.Nothing,
      $sel:reversedDirectionSourceServerArn:SourceServer' :: Maybe Text
reversedDirectionSourceServerArn = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceCloudProperties:SourceServer' :: Maybe SourceCloudProperties
sourceCloudProperties = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceProperties:SourceServer' :: Maybe SourceProperties
sourceProperties = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceServerID:SourceServer' :: Maybe Text
sourceServerID = forall a. Maybe a
Prelude.Nothing,
      $sel:stagingArea:SourceServer' :: Maybe StagingArea
stagingArea = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:SourceServer' :: Maybe (Sensitive (HashMap Text Text))
tags = forall a. Maybe a
Prelude.Nothing
    }

-- | The ARN of the Source Server.
sourceServer_arn :: Lens.Lens' SourceServer (Prelude.Maybe Prelude.Text)
sourceServer_arn :: Lens' SourceServer (Maybe Text)
sourceServer_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe Text
arn :: Maybe Text
$sel:arn:SourceServer' :: SourceServer -> Maybe Text
arn} -> Maybe Text
arn) (\s :: SourceServer
s@SourceServer' {} Maybe Text
a -> SourceServer
s {$sel:arn:SourceServer' :: Maybe Text
arn = Maybe Text
a} :: SourceServer)

-- | The Data Replication Info of the Source Server.
sourceServer_dataReplicationInfo :: Lens.Lens' SourceServer (Prelude.Maybe DataReplicationInfo)
sourceServer_dataReplicationInfo :: Lens' SourceServer (Maybe DataReplicationInfo)
sourceServer_dataReplicationInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe DataReplicationInfo
dataReplicationInfo :: Maybe DataReplicationInfo
$sel:dataReplicationInfo:SourceServer' :: SourceServer -> Maybe DataReplicationInfo
dataReplicationInfo} -> Maybe DataReplicationInfo
dataReplicationInfo) (\s :: SourceServer
s@SourceServer' {} Maybe DataReplicationInfo
a -> SourceServer
s {$sel:dataReplicationInfo:SourceServer' :: Maybe DataReplicationInfo
dataReplicationInfo = Maybe DataReplicationInfo
a} :: SourceServer)

-- | The status of the last recovery launch of this Source Server.
sourceServer_lastLaunchResult :: Lens.Lens' SourceServer (Prelude.Maybe LastLaunchResult)
sourceServer_lastLaunchResult :: Lens' SourceServer (Maybe LastLaunchResult)
sourceServer_lastLaunchResult = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe LastLaunchResult
lastLaunchResult :: Maybe LastLaunchResult
$sel:lastLaunchResult:SourceServer' :: SourceServer -> Maybe LastLaunchResult
lastLaunchResult} -> Maybe LastLaunchResult
lastLaunchResult) (\s :: SourceServer
s@SourceServer' {} Maybe LastLaunchResult
a -> SourceServer
s {$sel:lastLaunchResult:SourceServer' :: Maybe LastLaunchResult
lastLaunchResult = Maybe LastLaunchResult
a} :: SourceServer)

-- | The lifecycle information of this Source Server.
sourceServer_lifeCycle :: Lens.Lens' SourceServer (Prelude.Maybe LifeCycle)
sourceServer_lifeCycle :: Lens' SourceServer (Maybe LifeCycle)
sourceServer_lifeCycle = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe LifeCycle
lifeCycle :: Maybe LifeCycle
$sel:lifeCycle:SourceServer' :: SourceServer -> Maybe LifeCycle
lifeCycle} -> Maybe LifeCycle
lifeCycle) (\s :: SourceServer
s@SourceServer' {} Maybe LifeCycle
a -> SourceServer
s {$sel:lifeCycle:SourceServer' :: Maybe LifeCycle
lifeCycle = Maybe LifeCycle
a} :: SourceServer)

-- | The ID of the Recovery Instance associated with this Source Server.
sourceServer_recoveryInstanceId :: Lens.Lens' SourceServer (Prelude.Maybe Prelude.Text)
sourceServer_recoveryInstanceId :: Lens' SourceServer (Maybe Text)
sourceServer_recoveryInstanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe Text
recoveryInstanceId :: Maybe Text
$sel:recoveryInstanceId:SourceServer' :: SourceServer -> Maybe Text
recoveryInstanceId} -> Maybe Text
recoveryInstanceId) (\s :: SourceServer
s@SourceServer' {} Maybe Text
a -> SourceServer
s {$sel:recoveryInstanceId:SourceServer' :: Maybe Text
recoveryInstanceId = Maybe Text
a} :: SourceServer)

-- | Replication direction of the Source Server.
sourceServer_replicationDirection :: Lens.Lens' SourceServer (Prelude.Maybe ReplicationDirection)
sourceServer_replicationDirection :: Lens' SourceServer (Maybe ReplicationDirection)
sourceServer_replicationDirection = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe ReplicationDirection
replicationDirection :: Maybe ReplicationDirection
$sel:replicationDirection:SourceServer' :: SourceServer -> Maybe ReplicationDirection
replicationDirection} -> Maybe ReplicationDirection
replicationDirection) (\s :: SourceServer
s@SourceServer' {} Maybe ReplicationDirection
a -> SourceServer
s {$sel:replicationDirection:SourceServer' :: Maybe ReplicationDirection
replicationDirection = Maybe ReplicationDirection
a} :: SourceServer)

-- | For EC2-originated Source Servers which have been failed over and then
-- failed back, this value will mean the ARN of the Source Server on the
-- opposite replication direction.
sourceServer_reversedDirectionSourceServerArn :: Lens.Lens' SourceServer (Prelude.Maybe Prelude.Text)
sourceServer_reversedDirectionSourceServerArn :: Lens' SourceServer (Maybe Text)
sourceServer_reversedDirectionSourceServerArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe Text
reversedDirectionSourceServerArn :: Maybe Text
$sel:reversedDirectionSourceServerArn:SourceServer' :: SourceServer -> Maybe Text
reversedDirectionSourceServerArn} -> Maybe Text
reversedDirectionSourceServerArn) (\s :: SourceServer
s@SourceServer' {} Maybe Text
a -> SourceServer
s {$sel:reversedDirectionSourceServerArn:SourceServer' :: Maybe Text
reversedDirectionSourceServerArn = Maybe Text
a} :: SourceServer)

-- | Source cloud properties of the Source Server.
sourceServer_sourceCloudProperties :: Lens.Lens' SourceServer (Prelude.Maybe SourceCloudProperties)
sourceServer_sourceCloudProperties :: Lens' SourceServer (Maybe SourceCloudProperties)
sourceServer_sourceCloudProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe SourceCloudProperties
sourceCloudProperties :: Maybe SourceCloudProperties
$sel:sourceCloudProperties:SourceServer' :: SourceServer -> Maybe SourceCloudProperties
sourceCloudProperties} -> Maybe SourceCloudProperties
sourceCloudProperties) (\s :: SourceServer
s@SourceServer' {} Maybe SourceCloudProperties
a -> SourceServer
s {$sel:sourceCloudProperties:SourceServer' :: Maybe SourceCloudProperties
sourceCloudProperties = Maybe SourceCloudProperties
a} :: SourceServer)

-- | The source properties of the Source Server.
sourceServer_sourceProperties :: Lens.Lens' SourceServer (Prelude.Maybe SourceProperties)
sourceServer_sourceProperties :: Lens' SourceServer (Maybe SourceProperties)
sourceServer_sourceProperties = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe SourceProperties
sourceProperties :: Maybe SourceProperties
$sel:sourceProperties:SourceServer' :: SourceServer -> Maybe SourceProperties
sourceProperties} -> Maybe SourceProperties
sourceProperties) (\s :: SourceServer
s@SourceServer' {} Maybe SourceProperties
a -> SourceServer
s {$sel:sourceProperties:SourceServer' :: Maybe SourceProperties
sourceProperties = Maybe SourceProperties
a} :: SourceServer)

-- | The ID of the Source Server.
sourceServer_sourceServerID :: Lens.Lens' SourceServer (Prelude.Maybe Prelude.Text)
sourceServer_sourceServerID :: Lens' SourceServer (Maybe Text)
sourceServer_sourceServerID = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe Text
sourceServerID :: Maybe Text
$sel:sourceServerID:SourceServer' :: SourceServer -> Maybe Text
sourceServerID} -> Maybe Text
sourceServerID) (\s :: SourceServer
s@SourceServer' {} Maybe Text
a -> SourceServer
s {$sel:sourceServerID:SourceServer' :: Maybe Text
sourceServerID = Maybe Text
a} :: SourceServer)

-- | The staging area of the source server.
sourceServer_stagingArea :: Lens.Lens' SourceServer (Prelude.Maybe StagingArea)
sourceServer_stagingArea :: Lens' SourceServer (Maybe StagingArea)
sourceServer_stagingArea = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe StagingArea
stagingArea :: Maybe StagingArea
$sel:stagingArea:SourceServer' :: SourceServer -> Maybe StagingArea
stagingArea} -> Maybe StagingArea
stagingArea) (\s :: SourceServer
s@SourceServer' {} Maybe StagingArea
a -> SourceServer
s {$sel:stagingArea:SourceServer' :: Maybe StagingArea
stagingArea = Maybe StagingArea
a} :: SourceServer)

-- | The tags associated with the Source Server.
sourceServer_tags :: Lens.Lens' SourceServer (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
sourceServer_tags :: Lens' SourceServer (Maybe (HashMap Text Text))
sourceServer_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\SourceServer' {Maybe (Sensitive (HashMap Text Text))
tags :: Maybe (Sensitive (HashMap Text Text))
$sel:tags:SourceServer' :: SourceServer -> Maybe (Sensitive (HashMap Text Text))
tags} -> Maybe (Sensitive (HashMap Text Text))
tags) (\s :: SourceServer
s@SourceServer' {} Maybe (Sensitive (HashMap Text Text))
a -> SourceServer
s {$sel:tags:SourceServer' :: Maybe (Sensitive (HashMap Text Text))
tags = Maybe (Sensitive (HashMap Text Text))
a} :: SourceServer) 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. Iso' (Sensitive a) a
Data._Sensitive forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced)

instance Data.FromJSON SourceServer where
  parseJSON :: Value -> Parser SourceServer
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"SourceServer"
      ( \Object
x ->
          Maybe Text
-> Maybe DataReplicationInfo
-> Maybe LastLaunchResult
-> Maybe LifeCycle
-> Maybe Text
-> Maybe ReplicationDirection
-> Maybe Text
-> Maybe SourceCloudProperties
-> Maybe SourceProperties
-> Maybe Text
-> Maybe StagingArea
-> Maybe (Sensitive (HashMap Text Text))
-> SourceServer
SourceServer'
            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
"arn")
            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
"dataReplicationInfo")
            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
"lastLaunchResult")
            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
"lifeCycle")
            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
"recoveryInstanceId")
            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
"replicationDirection")
            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
"reversedDirectionSourceServerArn")
            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
"sourceCloudProperties")
            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
"sourceProperties")
            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
"sourceServerID")
            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
"stagingArea")
            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
"tags" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
      )

instance Prelude.Hashable SourceServer where
  hashWithSalt :: Int -> SourceServer -> Int
hashWithSalt Int
_salt SourceServer' {Maybe Text
Maybe (Sensitive (HashMap Text Text))
Maybe DataReplicationInfo
Maybe LastLaunchResult
Maybe LifeCycle
Maybe ReplicationDirection
Maybe SourceCloudProperties
Maybe SourceProperties
Maybe StagingArea
tags :: Maybe (Sensitive (HashMap Text Text))
stagingArea :: Maybe StagingArea
sourceServerID :: Maybe Text
sourceProperties :: Maybe SourceProperties
sourceCloudProperties :: Maybe SourceCloudProperties
reversedDirectionSourceServerArn :: Maybe Text
replicationDirection :: Maybe ReplicationDirection
recoveryInstanceId :: Maybe Text
lifeCycle :: Maybe LifeCycle
lastLaunchResult :: Maybe LastLaunchResult
dataReplicationInfo :: Maybe DataReplicationInfo
arn :: Maybe Text
$sel:tags:SourceServer' :: SourceServer -> Maybe (Sensitive (HashMap Text Text))
$sel:stagingArea:SourceServer' :: SourceServer -> Maybe StagingArea
$sel:sourceServerID:SourceServer' :: SourceServer -> Maybe Text
$sel:sourceProperties:SourceServer' :: SourceServer -> Maybe SourceProperties
$sel:sourceCloudProperties:SourceServer' :: SourceServer -> Maybe SourceCloudProperties
$sel:reversedDirectionSourceServerArn:SourceServer' :: SourceServer -> Maybe Text
$sel:replicationDirection:SourceServer' :: SourceServer -> Maybe ReplicationDirection
$sel:recoveryInstanceId:SourceServer' :: SourceServer -> Maybe Text
$sel:lifeCycle:SourceServer' :: SourceServer -> Maybe LifeCycle
$sel:lastLaunchResult:SourceServer' :: SourceServer -> Maybe LastLaunchResult
$sel:dataReplicationInfo:SourceServer' :: SourceServer -> Maybe DataReplicationInfo
$sel:arn:SourceServer' :: SourceServer -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataReplicationInfo
dataReplicationInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LastLaunchResult
lastLaunchResult
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LifeCycle
lifeCycle
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
recoveryInstanceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReplicationDirection
replicationDirection
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reversedDirectionSourceServerArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SourceCloudProperties
sourceCloudProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SourceProperties
sourceProperties
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
sourceServerID
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StagingArea
stagingArea
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (Sensitive (HashMap Text Text))
tags

instance Prelude.NFData SourceServer where
  rnf :: SourceServer -> ()
rnf SourceServer' {Maybe Text
Maybe (Sensitive (HashMap Text Text))
Maybe DataReplicationInfo
Maybe LastLaunchResult
Maybe LifeCycle
Maybe ReplicationDirection
Maybe SourceCloudProperties
Maybe SourceProperties
Maybe StagingArea
tags :: Maybe (Sensitive (HashMap Text Text))
stagingArea :: Maybe StagingArea
sourceServerID :: Maybe Text
sourceProperties :: Maybe SourceProperties
sourceCloudProperties :: Maybe SourceCloudProperties
reversedDirectionSourceServerArn :: Maybe Text
replicationDirection :: Maybe ReplicationDirection
recoveryInstanceId :: Maybe Text
lifeCycle :: Maybe LifeCycle
lastLaunchResult :: Maybe LastLaunchResult
dataReplicationInfo :: Maybe DataReplicationInfo
arn :: Maybe Text
$sel:tags:SourceServer' :: SourceServer -> Maybe (Sensitive (HashMap Text Text))
$sel:stagingArea:SourceServer' :: SourceServer -> Maybe StagingArea
$sel:sourceServerID:SourceServer' :: SourceServer -> Maybe Text
$sel:sourceProperties:SourceServer' :: SourceServer -> Maybe SourceProperties
$sel:sourceCloudProperties:SourceServer' :: SourceServer -> Maybe SourceCloudProperties
$sel:reversedDirectionSourceServerArn:SourceServer' :: SourceServer -> Maybe Text
$sel:replicationDirection:SourceServer' :: SourceServer -> Maybe ReplicationDirection
$sel:recoveryInstanceId:SourceServer' :: SourceServer -> Maybe Text
$sel:lifeCycle:SourceServer' :: SourceServer -> Maybe LifeCycle
$sel:lastLaunchResult:SourceServer' :: SourceServer -> Maybe LastLaunchResult
$sel:dataReplicationInfo:SourceServer' :: SourceServer -> Maybe DataReplicationInfo
$sel:arn:SourceServer' :: SourceServer -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataReplicationInfo
dataReplicationInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LastLaunchResult
lastLaunchResult
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LifeCycle
lifeCycle
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
recoveryInstanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReplicationDirection
replicationDirection
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reversedDirectionSourceServerArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SourceCloudProperties
sourceCloudProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe SourceProperties
sourceProperties
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
sourceServerID
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StagingArea
stagingArea
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (Sensitive (HashMap Text Text))
tags