amazonka-resiliencehub-2.0: gen/Amazonka/ResilienceHub/Types/DisruptionCompliance.hs
{-# 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.ResilienceHub.Types.DisruptionCompliance
-- 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.ResilienceHub.Types.DisruptionCompliance where
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.ResilienceHub.Types.ComplianceStatus
-- | Defines the compliance against the resiliency policy for a disruption.
--
-- /See:/ 'newDisruptionCompliance' smart constructor.
data DisruptionCompliance = DisruptionCompliance'
{ -- | The Recovery Point Objective (RPO) that is achievable, in seconds.
achievableRpoInSecs :: Prelude.Maybe Prelude.Natural,
-- | The Recovery Time Objective (RTO) that is achievable, in seconds
achievableRtoInSecs :: Prelude.Maybe Prelude.Natural,
-- | The current RPO, in seconds.
currentRpoInSecs :: Prelude.Maybe Prelude.Natural,
-- | The current RTO, in seconds.
currentRtoInSecs :: Prelude.Maybe Prelude.Natural,
-- | The disruption compliance message.
message :: Prelude.Maybe Prelude.Text,
-- | The RPO description.
rpoDescription :: Prelude.Maybe Prelude.Text,
-- | The RPO reference identifier.
rpoReferenceId :: Prelude.Maybe Prelude.Text,
-- | The RTO description.
rtoDescription :: Prelude.Maybe Prelude.Text,
-- | The RTO reference identifier.
rtoReferenceId :: Prelude.Maybe Prelude.Text,
-- | The current status of compliance for the resiliency policy.
complianceStatus :: ComplianceStatus
}
deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)
-- |
-- Create a value of 'DisruptionCompliance' 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:
--
-- 'achievableRpoInSecs', 'disruptionCompliance_achievableRpoInSecs' - The Recovery Point Objective (RPO) that is achievable, in seconds.
--
-- 'achievableRtoInSecs', 'disruptionCompliance_achievableRtoInSecs' - The Recovery Time Objective (RTO) that is achievable, in seconds
--
-- 'currentRpoInSecs', 'disruptionCompliance_currentRpoInSecs' - The current RPO, in seconds.
--
-- 'currentRtoInSecs', 'disruptionCompliance_currentRtoInSecs' - The current RTO, in seconds.
--
-- 'message', 'disruptionCompliance_message' - The disruption compliance message.
--
-- 'rpoDescription', 'disruptionCompliance_rpoDescription' - The RPO description.
--
-- 'rpoReferenceId', 'disruptionCompliance_rpoReferenceId' - The RPO reference identifier.
--
-- 'rtoDescription', 'disruptionCompliance_rtoDescription' - The RTO description.
--
-- 'rtoReferenceId', 'disruptionCompliance_rtoReferenceId' - The RTO reference identifier.
--
-- 'complianceStatus', 'disruptionCompliance_complianceStatus' - The current status of compliance for the resiliency policy.
newDisruptionCompliance ::
-- | 'complianceStatus'
ComplianceStatus ->
DisruptionCompliance
newDisruptionCompliance pComplianceStatus_ =
DisruptionCompliance'
{ achievableRpoInSecs =
Prelude.Nothing,
achievableRtoInSecs = Prelude.Nothing,
currentRpoInSecs = Prelude.Nothing,
currentRtoInSecs = Prelude.Nothing,
message = Prelude.Nothing,
rpoDescription = Prelude.Nothing,
rpoReferenceId = Prelude.Nothing,
rtoDescription = Prelude.Nothing,
rtoReferenceId = Prelude.Nothing,
complianceStatus = pComplianceStatus_
}
-- | The Recovery Point Objective (RPO) that is achievable, in seconds.
disruptionCompliance_achievableRpoInSecs :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Natural)
disruptionCompliance_achievableRpoInSecs = Lens.lens (\DisruptionCompliance' {achievableRpoInSecs} -> achievableRpoInSecs) (\s@DisruptionCompliance' {} a -> s {achievableRpoInSecs = a} :: DisruptionCompliance)
-- | The Recovery Time Objective (RTO) that is achievable, in seconds
disruptionCompliance_achievableRtoInSecs :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Natural)
disruptionCompliance_achievableRtoInSecs = Lens.lens (\DisruptionCompliance' {achievableRtoInSecs} -> achievableRtoInSecs) (\s@DisruptionCompliance' {} a -> s {achievableRtoInSecs = a} :: DisruptionCompliance)
-- | The current RPO, in seconds.
disruptionCompliance_currentRpoInSecs :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Natural)
disruptionCompliance_currentRpoInSecs = Lens.lens (\DisruptionCompliance' {currentRpoInSecs} -> currentRpoInSecs) (\s@DisruptionCompliance' {} a -> s {currentRpoInSecs = a} :: DisruptionCompliance)
-- | The current RTO, in seconds.
disruptionCompliance_currentRtoInSecs :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Natural)
disruptionCompliance_currentRtoInSecs = Lens.lens (\DisruptionCompliance' {currentRtoInSecs} -> currentRtoInSecs) (\s@DisruptionCompliance' {} a -> s {currentRtoInSecs = a} :: DisruptionCompliance)
-- | The disruption compliance message.
disruptionCompliance_message :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Text)
disruptionCompliance_message = Lens.lens (\DisruptionCompliance' {message} -> message) (\s@DisruptionCompliance' {} a -> s {message = a} :: DisruptionCompliance)
-- | The RPO description.
disruptionCompliance_rpoDescription :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Text)
disruptionCompliance_rpoDescription = Lens.lens (\DisruptionCompliance' {rpoDescription} -> rpoDescription) (\s@DisruptionCompliance' {} a -> s {rpoDescription = a} :: DisruptionCompliance)
-- | The RPO reference identifier.
disruptionCompliance_rpoReferenceId :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Text)
disruptionCompliance_rpoReferenceId = Lens.lens (\DisruptionCompliance' {rpoReferenceId} -> rpoReferenceId) (\s@DisruptionCompliance' {} a -> s {rpoReferenceId = a} :: DisruptionCompliance)
-- | The RTO description.
disruptionCompliance_rtoDescription :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Text)
disruptionCompliance_rtoDescription = Lens.lens (\DisruptionCompliance' {rtoDescription} -> rtoDescription) (\s@DisruptionCompliance' {} a -> s {rtoDescription = a} :: DisruptionCompliance)
-- | The RTO reference identifier.
disruptionCompliance_rtoReferenceId :: Lens.Lens' DisruptionCompliance (Prelude.Maybe Prelude.Text)
disruptionCompliance_rtoReferenceId = Lens.lens (\DisruptionCompliance' {rtoReferenceId} -> rtoReferenceId) (\s@DisruptionCompliance' {} a -> s {rtoReferenceId = a} :: DisruptionCompliance)
-- | The current status of compliance for the resiliency policy.
disruptionCompliance_complianceStatus :: Lens.Lens' DisruptionCompliance ComplianceStatus
disruptionCompliance_complianceStatus = Lens.lens (\DisruptionCompliance' {complianceStatus} -> complianceStatus) (\s@DisruptionCompliance' {} a -> s {complianceStatus = a} :: DisruptionCompliance)
instance Data.FromJSON DisruptionCompliance where
parseJSON =
Data.withObject
"DisruptionCompliance"
( \x ->
DisruptionCompliance'
Prelude.<$> (x Data..:? "achievableRpoInSecs")
Prelude.<*> (x Data..:? "achievableRtoInSecs")
Prelude.<*> (x Data..:? "currentRpoInSecs")
Prelude.<*> (x Data..:? "currentRtoInSecs")
Prelude.<*> (x Data..:? "message")
Prelude.<*> (x Data..:? "rpoDescription")
Prelude.<*> (x Data..:? "rpoReferenceId")
Prelude.<*> (x Data..:? "rtoDescription")
Prelude.<*> (x Data..:? "rtoReferenceId")
Prelude.<*> (x Data..: "complianceStatus")
)
instance Prelude.Hashable DisruptionCompliance where
hashWithSalt _salt DisruptionCompliance' {..} =
_salt
`Prelude.hashWithSalt` achievableRpoInSecs
`Prelude.hashWithSalt` achievableRtoInSecs
`Prelude.hashWithSalt` currentRpoInSecs
`Prelude.hashWithSalt` currentRtoInSecs
`Prelude.hashWithSalt` message
`Prelude.hashWithSalt` rpoDescription
`Prelude.hashWithSalt` rpoReferenceId
`Prelude.hashWithSalt` rtoDescription
`Prelude.hashWithSalt` rtoReferenceId
`Prelude.hashWithSalt` complianceStatus
instance Prelude.NFData DisruptionCompliance where
rnf DisruptionCompliance' {..} =
Prelude.rnf achievableRpoInSecs
`Prelude.seq` Prelude.rnf achievableRtoInSecs
`Prelude.seq` Prelude.rnf currentRpoInSecs
`Prelude.seq` Prelude.rnf currentRtoInSecs
`Prelude.seq` Prelude.rnf message
`Prelude.seq` Prelude.rnf rpoDescription
`Prelude.seq` Prelude.rnf rpoReferenceId
`Prelude.seq` Prelude.rnf rtoDescription
`Prelude.seq` Prelude.rnf rtoReferenceId
`Prelude.seq` Prelude.rnf complianceStatus