packages feed

amazonka-resiliencehub-2.0: gen/Amazonka/ResilienceHub/Types/RecommendationDisruptionCompliance.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.RecommendationDisruptionCompliance
-- 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.RecommendationDisruptionCompliance 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 a disruption compliance recommendation.
--
-- /See:/ 'newRecommendationDisruptionCompliance' smart constructor.
data RecommendationDisruptionCompliance = RecommendationDisruptionCompliance'
  { -- | The expected Recovery Point Objective (RPO) description after applying
    -- the recommended configuration change.
    expectedRpoDescription :: Prelude.Maybe Prelude.Text,
    -- | The expected RPO after applying the recommended configuration change.
    expectedRpoInSecs :: Prelude.Maybe Prelude.Natural,
    -- | The expected Recovery Time Objective (RTO) description after applying
    -- the recommended configuration change.
    expectedRtoDescription :: Prelude.Maybe Prelude.Text,
    -- | The expected RTO after applying the recommended configuration change.
    expectedRtoInSecs :: Prelude.Maybe Prelude.Natural,
    -- | The expected compliance status after applying the recommended
    -- configuration change.
    expectedComplianceStatus :: ComplianceStatus
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'RecommendationDisruptionCompliance' 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:
--
-- 'expectedRpoDescription', 'recommendationDisruptionCompliance_expectedRpoDescription' - The expected Recovery Point Objective (RPO) description after applying
-- the recommended configuration change.
--
-- 'expectedRpoInSecs', 'recommendationDisruptionCompliance_expectedRpoInSecs' - The expected RPO after applying the recommended configuration change.
--
-- 'expectedRtoDescription', 'recommendationDisruptionCompliance_expectedRtoDescription' - The expected Recovery Time Objective (RTO) description after applying
-- the recommended configuration change.
--
-- 'expectedRtoInSecs', 'recommendationDisruptionCompliance_expectedRtoInSecs' - The expected RTO after applying the recommended configuration change.
--
-- 'expectedComplianceStatus', 'recommendationDisruptionCompliance_expectedComplianceStatus' - The expected compliance status after applying the recommended
-- configuration change.
newRecommendationDisruptionCompliance ::
  -- | 'expectedComplianceStatus'
  ComplianceStatus ->
  RecommendationDisruptionCompliance
newRecommendationDisruptionCompliance
  pExpectedComplianceStatus_ =
    RecommendationDisruptionCompliance'
      { expectedRpoDescription =
          Prelude.Nothing,
        expectedRpoInSecs = Prelude.Nothing,
        expectedRtoDescription =
          Prelude.Nothing,
        expectedRtoInSecs = Prelude.Nothing,
        expectedComplianceStatus =
          pExpectedComplianceStatus_
      }

-- | The expected Recovery Point Objective (RPO) description after applying
-- the recommended configuration change.
recommendationDisruptionCompliance_expectedRpoDescription :: Lens.Lens' RecommendationDisruptionCompliance (Prelude.Maybe Prelude.Text)
recommendationDisruptionCompliance_expectedRpoDescription = Lens.lens (\RecommendationDisruptionCompliance' {expectedRpoDescription} -> expectedRpoDescription) (\s@RecommendationDisruptionCompliance' {} a -> s {expectedRpoDescription = a} :: RecommendationDisruptionCompliance)

-- | The expected RPO after applying the recommended configuration change.
recommendationDisruptionCompliance_expectedRpoInSecs :: Lens.Lens' RecommendationDisruptionCompliance (Prelude.Maybe Prelude.Natural)
recommendationDisruptionCompliance_expectedRpoInSecs = Lens.lens (\RecommendationDisruptionCompliance' {expectedRpoInSecs} -> expectedRpoInSecs) (\s@RecommendationDisruptionCompliance' {} a -> s {expectedRpoInSecs = a} :: RecommendationDisruptionCompliance)

-- | The expected Recovery Time Objective (RTO) description after applying
-- the recommended configuration change.
recommendationDisruptionCompliance_expectedRtoDescription :: Lens.Lens' RecommendationDisruptionCompliance (Prelude.Maybe Prelude.Text)
recommendationDisruptionCompliance_expectedRtoDescription = Lens.lens (\RecommendationDisruptionCompliance' {expectedRtoDescription} -> expectedRtoDescription) (\s@RecommendationDisruptionCompliance' {} a -> s {expectedRtoDescription = a} :: RecommendationDisruptionCompliance)

-- | The expected RTO after applying the recommended configuration change.
recommendationDisruptionCompliance_expectedRtoInSecs :: Lens.Lens' RecommendationDisruptionCompliance (Prelude.Maybe Prelude.Natural)
recommendationDisruptionCompliance_expectedRtoInSecs = Lens.lens (\RecommendationDisruptionCompliance' {expectedRtoInSecs} -> expectedRtoInSecs) (\s@RecommendationDisruptionCompliance' {} a -> s {expectedRtoInSecs = a} :: RecommendationDisruptionCompliance)

-- | The expected compliance status after applying the recommended
-- configuration change.
recommendationDisruptionCompliance_expectedComplianceStatus :: Lens.Lens' RecommendationDisruptionCompliance ComplianceStatus
recommendationDisruptionCompliance_expectedComplianceStatus = Lens.lens (\RecommendationDisruptionCompliance' {expectedComplianceStatus} -> expectedComplianceStatus) (\s@RecommendationDisruptionCompliance' {} a -> s {expectedComplianceStatus = a} :: RecommendationDisruptionCompliance)

instance
  Data.FromJSON
    RecommendationDisruptionCompliance
  where
  parseJSON =
    Data.withObject
      "RecommendationDisruptionCompliance"
      ( \x ->
          RecommendationDisruptionCompliance'
            Prelude.<$> (x Data..:? "expectedRpoDescription")
            Prelude.<*> (x Data..:? "expectedRpoInSecs")
            Prelude.<*> (x Data..:? "expectedRtoDescription")
            Prelude.<*> (x Data..:? "expectedRtoInSecs")
            Prelude.<*> (x Data..: "expectedComplianceStatus")
      )

instance
  Prelude.Hashable
    RecommendationDisruptionCompliance
  where
  hashWithSalt
    _salt
    RecommendationDisruptionCompliance' {..} =
      _salt
        `Prelude.hashWithSalt` expectedRpoDescription
        `Prelude.hashWithSalt` expectedRpoInSecs
        `Prelude.hashWithSalt` expectedRtoDescription
        `Prelude.hashWithSalt` expectedRtoInSecs
        `Prelude.hashWithSalt` expectedComplianceStatus

instance
  Prelude.NFData
    RecommendationDisruptionCompliance
  where
  rnf RecommendationDisruptionCompliance' {..} =
    Prelude.rnf expectedRpoDescription
      `Prelude.seq` Prelude.rnf expectedRpoInSecs
      `Prelude.seq` Prelude.rnf expectedRtoDescription
      `Prelude.seq` Prelude.rnf expectedRtoInSecs
      `Prelude.seq` Prelude.rnf expectedComplianceStatus