{-# 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.RecoveryInstance -- 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.RecoveryInstance 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.EC2InstanceState import Amazonka.DrS.Types.OriginEnvironment import Amazonka.DrS.Types.RecoveryInstanceDataReplicationInfo import Amazonka.DrS.Types.RecoveryInstanceFailback import Amazonka.DrS.Types.RecoveryInstanceProperties import qualified Amazonka.Prelude as Prelude -- | A Recovery Instance is a replica of a Source Server running on EC2. -- -- /See:/ 'newRecoveryInstance' smart constructor. data RecoveryInstance = RecoveryInstance' { -- | The ARN of the Recovery Instance. arn :: Prelude.Maybe Prelude.Text, -- | The Data Replication Info of the Recovery Instance. dataReplicationInfo :: Prelude.Maybe RecoveryInstanceDataReplicationInfo, -- | The EC2 instance ID of the Recovery Instance. ec2InstanceID :: Prelude.Maybe Prelude.Text, -- | The state of the EC2 instance for this Recovery Instance. ec2InstanceState :: Prelude.Maybe EC2InstanceState, -- | An object representing failback related information of the Recovery -- Instance. failback :: Prelude.Maybe RecoveryInstanceFailback, -- | Whether this Recovery Instance was created for a drill or for an actual -- Recovery event. isDrill :: Prelude.Maybe Prelude.Bool, -- | The ID of the Job that created the Recovery Instance. jobID :: Prelude.Maybe Prelude.Text, -- | Environment (On Premises \/ AWS) of the instance that the recovery -- instance originated from. originEnvironment :: Prelude.Maybe OriginEnvironment, -- | The date and time of the Point in Time (PIT) snapshot that this Recovery -- Instance was launched from. pointInTimeSnapshotDateTime :: Prelude.Maybe Prelude.Text, -- | The ID of the Recovery Instance. recoveryInstanceID :: Prelude.Maybe Prelude.Text, -- | Properties of the Recovery Instance machine. recoveryInstanceProperties :: Prelude.Maybe RecoveryInstanceProperties, -- | The Source Server ID that this Recovery Instance is associated with. sourceServerID :: Prelude.Maybe Prelude.Text, -- | An array of tags that are associated with the Recovery Instance. tags :: Prelude.Maybe (Data.Sensitive (Prelude.HashMap Prelude.Text Prelude.Text)) } deriving (Prelude.Eq, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'RecoveryInstance' 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: -- -- 'arn', 'recoveryInstance_arn' - The ARN of the Recovery Instance. -- -- 'dataReplicationInfo', 'recoveryInstance_dataReplicationInfo' - The Data Replication Info of the Recovery Instance. -- -- 'ec2InstanceID', 'recoveryInstance_ec2InstanceID' - The EC2 instance ID of the Recovery Instance. -- -- 'ec2InstanceState', 'recoveryInstance_ec2InstanceState' - The state of the EC2 instance for this Recovery Instance. -- -- 'failback', 'recoveryInstance_failback' - An object representing failback related information of the Recovery -- Instance. -- -- 'isDrill', 'recoveryInstance_isDrill' - Whether this Recovery Instance was created for a drill or for an actual -- Recovery event. -- -- 'jobID', 'recoveryInstance_jobID' - The ID of the Job that created the Recovery Instance. -- -- 'originEnvironment', 'recoveryInstance_originEnvironment' - Environment (On Premises \/ AWS) of the instance that the recovery -- instance originated from. -- -- 'pointInTimeSnapshotDateTime', 'recoveryInstance_pointInTimeSnapshotDateTime' - The date and time of the Point in Time (PIT) snapshot that this Recovery -- Instance was launched from. -- -- 'recoveryInstanceID', 'recoveryInstance_recoveryInstanceID' - The ID of the Recovery Instance. -- -- 'recoveryInstanceProperties', 'recoveryInstance_recoveryInstanceProperties' - Properties of the Recovery Instance machine. -- -- 'sourceServerID', 'recoveryInstance_sourceServerID' - The Source Server ID that this Recovery Instance is associated with. -- -- 'tags', 'recoveryInstance_tags' - An array of tags that are associated with the Recovery Instance. newRecoveryInstance :: RecoveryInstance newRecoveryInstance = RecoveryInstance' { arn = Prelude.Nothing, dataReplicationInfo = Prelude.Nothing, ec2InstanceID = Prelude.Nothing, ec2InstanceState = Prelude.Nothing, failback = Prelude.Nothing, isDrill = Prelude.Nothing, jobID = Prelude.Nothing, originEnvironment = Prelude.Nothing, pointInTimeSnapshotDateTime = Prelude.Nothing, recoveryInstanceID = Prelude.Nothing, recoveryInstanceProperties = Prelude.Nothing, sourceServerID = Prelude.Nothing, tags = Prelude.Nothing } -- | The ARN of the Recovery Instance. recoveryInstance_arn :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text) recoveryInstance_arn = Lens.lens (\RecoveryInstance' {arn} -> arn) (\s@RecoveryInstance' {} a -> s {arn = a} :: RecoveryInstance) -- | The Data Replication Info of the Recovery Instance. recoveryInstance_dataReplicationInfo :: Lens.Lens' RecoveryInstance (Prelude.Maybe RecoveryInstanceDataReplicationInfo) recoveryInstance_dataReplicationInfo = Lens.lens (\RecoveryInstance' {dataReplicationInfo} -> dataReplicationInfo) (\s@RecoveryInstance' {} a -> s {dataReplicationInfo = a} :: RecoveryInstance) -- | The EC2 instance ID of the Recovery Instance. recoveryInstance_ec2InstanceID :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text) recoveryInstance_ec2InstanceID = Lens.lens (\RecoveryInstance' {ec2InstanceID} -> ec2InstanceID) (\s@RecoveryInstance' {} a -> s {ec2InstanceID = a} :: RecoveryInstance) -- | The state of the EC2 instance for this Recovery Instance. recoveryInstance_ec2InstanceState :: Lens.Lens' RecoveryInstance (Prelude.Maybe EC2InstanceState) recoveryInstance_ec2InstanceState = Lens.lens (\RecoveryInstance' {ec2InstanceState} -> ec2InstanceState) (\s@RecoveryInstance' {} a -> s {ec2InstanceState = a} :: RecoveryInstance) -- | An object representing failback related information of the Recovery -- Instance. recoveryInstance_failback :: Lens.Lens' RecoveryInstance (Prelude.Maybe RecoveryInstanceFailback) recoveryInstance_failback = Lens.lens (\RecoveryInstance' {failback} -> failback) (\s@RecoveryInstance' {} a -> s {failback = a} :: RecoveryInstance) -- | Whether this Recovery Instance was created for a drill or for an actual -- Recovery event. recoveryInstance_isDrill :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Bool) recoveryInstance_isDrill = Lens.lens (\RecoveryInstance' {isDrill} -> isDrill) (\s@RecoveryInstance' {} a -> s {isDrill = a} :: RecoveryInstance) -- | The ID of the Job that created the Recovery Instance. recoveryInstance_jobID :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text) recoveryInstance_jobID = Lens.lens (\RecoveryInstance' {jobID} -> jobID) (\s@RecoveryInstance' {} a -> s {jobID = a} :: RecoveryInstance) -- | Environment (On Premises \/ AWS) of the instance that the recovery -- instance originated from. recoveryInstance_originEnvironment :: Lens.Lens' RecoveryInstance (Prelude.Maybe OriginEnvironment) recoveryInstance_originEnvironment = Lens.lens (\RecoveryInstance' {originEnvironment} -> originEnvironment) (\s@RecoveryInstance' {} a -> s {originEnvironment = a} :: RecoveryInstance) -- | The date and time of the Point in Time (PIT) snapshot that this Recovery -- Instance was launched from. recoveryInstance_pointInTimeSnapshotDateTime :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text) recoveryInstance_pointInTimeSnapshotDateTime = Lens.lens (\RecoveryInstance' {pointInTimeSnapshotDateTime} -> pointInTimeSnapshotDateTime) (\s@RecoveryInstance' {} a -> s {pointInTimeSnapshotDateTime = a} :: RecoveryInstance) -- | The ID of the Recovery Instance. recoveryInstance_recoveryInstanceID :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text) recoveryInstance_recoveryInstanceID = Lens.lens (\RecoveryInstance' {recoveryInstanceID} -> recoveryInstanceID) (\s@RecoveryInstance' {} a -> s {recoveryInstanceID = a} :: RecoveryInstance) -- | Properties of the Recovery Instance machine. recoveryInstance_recoveryInstanceProperties :: Lens.Lens' RecoveryInstance (Prelude.Maybe RecoveryInstanceProperties) recoveryInstance_recoveryInstanceProperties = Lens.lens (\RecoveryInstance' {recoveryInstanceProperties} -> recoveryInstanceProperties) (\s@RecoveryInstance' {} a -> s {recoveryInstanceProperties = a} :: RecoveryInstance) -- | The Source Server ID that this Recovery Instance is associated with. recoveryInstance_sourceServerID :: Lens.Lens' RecoveryInstance (Prelude.Maybe Prelude.Text) recoveryInstance_sourceServerID = Lens.lens (\RecoveryInstance' {sourceServerID} -> sourceServerID) (\s@RecoveryInstance' {} a -> s {sourceServerID = a} :: RecoveryInstance) -- | An array of tags that are associated with the Recovery Instance. recoveryInstance_tags :: Lens.Lens' RecoveryInstance (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text)) recoveryInstance_tags = Lens.lens (\RecoveryInstance' {tags} -> tags) (\s@RecoveryInstance' {} a -> s {tags = a} :: RecoveryInstance) Prelude.. Lens.mapping (Data._Sensitive Prelude.. Lens.coerced) instance Data.FromJSON RecoveryInstance where parseJSON = Data.withObject "RecoveryInstance" ( \x -> RecoveryInstance' Prelude.<$> (x Data..:? "arn") Prelude.<*> (x Data..:? "dataReplicationInfo") Prelude.<*> (x Data..:? "ec2InstanceID") Prelude.<*> (x Data..:? "ec2InstanceState") Prelude.<*> (x Data..:? "failback") Prelude.<*> (x Data..:? "isDrill") Prelude.<*> (x Data..:? "jobID") Prelude.<*> (x Data..:? "originEnvironment") Prelude.<*> (x Data..:? "pointInTimeSnapshotDateTime") Prelude.<*> (x Data..:? "recoveryInstanceID") Prelude.<*> (x Data..:? "recoveryInstanceProperties") Prelude.<*> (x Data..:? "sourceServerID") Prelude.<*> (x Data..:? "tags" Data..!= Prelude.mempty) ) instance Prelude.Hashable RecoveryInstance where hashWithSalt _salt RecoveryInstance' {..} = _salt `Prelude.hashWithSalt` arn `Prelude.hashWithSalt` dataReplicationInfo `Prelude.hashWithSalt` ec2InstanceID `Prelude.hashWithSalt` ec2InstanceState `Prelude.hashWithSalt` failback `Prelude.hashWithSalt` isDrill `Prelude.hashWithSalt` jobID `Prelude.hashWithSalt` originEnvironment `Prelude.hashWithSalt` pointInTimeSnapshotDateTime `Prelude.hashWithSalt` recoveryInstanceID `Prelude.hashWithSalt` recoveryInstanceProperties `Prelude.hashWithSalt` sourceServerID `Prelude.hashWithSalt` tags instance Prelude.NFData RecoveryInstance where rnf RecoveryInstance' {..} = Prelude.rnf arn `Prelude.seq` Prelude.rnf dataReplicationInfo `Prelude.seq` Prelude.rnf ec2InstanceID `Prelude.seq` Prelude.rnf ec2InstanceState `Prelude.seq` Prelude.rnf failback `Prelude.seq` Prelude.rnf isDrill `Prelude.seq` Prelude.rnf jobID `Prelude.seq` Prelude.rnf originEnvironment `Prelude.seq` Prelude.rnf pointInTimeSnapshotDateTime `Prelude.seq` Prelude.rnf recoveryInstanceID `Prelude.seq` Prelude.rnf recoveryInstanceProperties `Prelude.seq` Prelude.rnf sourceServerID `Prelude.seq` Prelude.rnf tags