{-# 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.IoT.Types.AuditCheckDetails
-- 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.IoT.Types.AuditCheckDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.IoT.Types.AuditCheckRunStatus
import qualified Amazonka.Prelude as Prelude

-- | Information about the audit check.
--
-- /See:/ 'newAuditCheckDetails' smart constructor.
data AuditCheckDetails = AuditCheckDetails'
  { -- | True if the check is complete and found all resources compliant.
    AuditCheckDetails -> Maybe Bool
checkCompliant :: Prelude.Maybe Prelude.Bool,
    -- | The completion status of this check. One of \"IN_PROGRESS\",
    -- \"WAITING_FOR_DATA_COLLECTION\", \"CANCELED\", \"COMPLETED_COMPLIANT\",
    -- \"COMPLETED_NON_COMPLIANT\", or \"FAILED\".
    AuditCheckDetails -> Maybe AuditCheckRunStatus
checkRunStatus :: Prelude.Maybe AuditCheckRunStatus,
    -- | The code of any error encountered when this check is performed during
    -- this audit. One of \"INSUFFICIENT_PERMISSIONS\" or
    -- \"AUDIT_CHECK_DISABLED\".
    AuditCheckDetails -> Maybe Text
errorCode :: Prelude.Maybe Prelude.Text,
    -- | The message associated with any error encountered when this check is
    -- performed during this audit.
    AuditCheckDetails -> Maybe Text
message :: Prelude.Maybe Prelude.Text,
    -- | The number of resources that were found noncompliant during the check.
    AuditCheckDetails -> Maybe Integer
nonCompliantResourcesCount :: Prelude.Maybe Prelude.Integer,
    -- | Describes how many of the non-compliant resources created during the
    -- evaluation of an audit check were marked as suppressed.
    AuditCheckDetails -> Maybe Integer
suppressedNonCompliantResourcesCount :: Prelude.Maybe Prelude.Integer,
    -- | The number of resources on which the check was performed.
    AuditCheckDetails -> Maybe Integer
totalResourcesCount :: Prelude.Maybe Prelude.Integer
  }
  deriving (AuditCheckDetails -> AuditCheckDetails -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AuditCheckDetails -> AuditCheckDetails -> Bool
$c/= :: AuditCheckDetails -> AuditCheckDetails -> Bool
== :: AuditCheckDetails -> AuditCheckDetails -> Bool
$c== :: AuditCheckDetails -> AuditCheckDetails -> Bool
Prelude.Eq, ReadPrec [AuditCheckDetails]
ReadPrec AuditCheckDetails
Int -> ReadS AuditCheckDetails
ReadS [AuditCheckDetails]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AuditCheckDetails]
$creadListPrec :: ReadPrec [AuditCheckDetails]
readPrec :: ReadPrec AuditCheckDetails
$creadPrec :: ReadPrec AuditCheckDetails
readList :: ReadS [AuditCheckDetails]
$creadList :: ReadS [AuditCheckDetails]
readsPrec :: Int -> ReadS AuditCheckDetails
$creadsPrec :: Int -> ReadS AuditCheckDetails
Prelude.Read, Int -> AuditCheckDetails -> ShowS
[AuditCheckDetails] -> ShowS
AuditCheckDetails -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AuditCheckDetails] -> ShowS
$cshowList :: [AuditCheckDetails] -> ShowS
show :: AuditCheckDetails -> String
$cshow :: AuditCheckDetails -> String
showsPrec :: Int -> AuditCheckDetails -> ShowS
$cshowsPrec :: Int -> AuditCheckDetails -> ShowS
Prelude.Show, forall x. Rep AuditCheckDetails x -> AuditCheckDetails
forall x. AuditCheckDetails -> Rep AuditCheckDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AuditCheckDetails x -> AuditCheckDetails
$cfrom :: forall x. AuditCheckDetails -> Rep AuditCheckDetails x
Prelude.Generic)

-- |
-- Create a value of 'AuditCheckDetails' 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:
--
-- 'checkCompliant', 'auditCheckDetails_checkCompliant' - True if the check is complete and found all resources compliant.
--
-- 'checkRunStatus', 'auditCheckDetails_checkRunStatus' - The completion status of this check. One of \"IN_PROGRESS\",
-- \"WAITING_FOR_DATA_COLLECTION\", \"CANCELED\", \"COMPLETED_COMPLIANT\",
-- \"COMPLETED_NON_COMPLIANT\", or \"FAILED\".
--
-- 'errorCode', 'auditCheckDetails_errorCode' - The code of any error encountered when this check is performed during
-- this audit. One of \"INSUFFICIENT_PERMISSIONS\" or
-- \"AUDIT_CHECK_DISABLED\".
--
-- 'message', 'auditCheckDetails_message' - The message associated with any error encountered when this check is
-- performed during this audit.
--
-- 'nonCompliantResourcesCount', 'auditCheckDetails_nonCompliantResourcesCount' - The number of resources that were found noncompliant during the check.
--
-- 'suppressedNonCompliantResourcesCount', 'auditCheckDetails_suppressedNonCompliantResourcesCount' - Describes how many of the non-compliant resources created during the
-- evaluation of an audit check were marked as suppressed.
--
-- 'totalResourcesCount', 'auditCheckDetails_totalResourcesCount' - The number of resources on which the check was performed.
newAuditCheckDetails ::
  AuditCheckDetails
newAuditCheckDetails :: AuditCheckDetails
newAuditCheckDetails =
  AuditCheckDetails'
    { $sel:checkCompliant:AuditCheckDetails' :: Maybe Bool
checkCompliant =
        forall a. Maybe a
Prelude.Nothing,
      $sel:checkRunStatus:AuditCheckDetails' :: Maybe AuditCheckRunStatus
checkRunStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:errorCode:AuditCheckDetails' :: Maybe Text
errorCode = forall a. Maybe a
Prelude.Nothing,
      $sel:message:AuditCheckDetails' :: Maybe Text
message = forall a. Maybe a
Prelude.Nothing,
      $sel:nonCompliantResourcesCount:AuditCheckDetails' :: Maybe Integer
nonCompliantResourcesCount = forall a. Maybe a
Prelude.Nothing,
      $sel:suppressedNonCompliantResourcesCount:AuditCheckDetails' :: Maybe Integer
suppressedNonCompliantResourcesCount =
        forall a. Maybe a
Prelude.Nothing,
      $sel:totalResourcesCount:AuditCheckDetails' :: Maybe Integer
totalResourcesCount = forall a. Maybe a
Prelude.Nothing
    }

-- | True if the check is complete and found all resources compliant.
auditCheckDetails_checkCompliant :: Lens.Lens' AuditCheckDetails (Prelude.Maybe Prelude.Bool)
auditCheckDetails_checkCompliant :: Lens' AuditCheckDetails (Maybe Bool)
auditCheckDetails_checkCompliant = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AuditCheckDetails' {Maybe Bool
checkCompliant :: Maybe Bool
$sel:checkCompliant:AuditCheckDetails' :: AuditCheckDetails -> Maybe Bool
checkCompliant} -> Maybe Bool
checkCompliant) (\s :: AuditCheckDetails
s@AuditCheckDetails' {} Maybe Bool
a -> AuditCheckDetails
s {$sel:checkCompliant:AuditCheckDetails' :: Maybe Bool
checkCompliant = Maybe Bool
a} :: AuditCheckDetails)

-- | The completion status of this check. One of \"IN_PROGRESS\",
-- \"WAITING_FOR_DATA_COLLECTION\", \"CANCELED\", \"COMPLETED_COMPLIANT\",
-- \"COMPLETED_NON_COMPLIANT\", or \"FAILED\".
auditCheckDetails_checkRunStatus :: Lens.Lens' AuditCheckDetails (Prelude.Maybe AuditCheckRunStatus)
auditCheckDetails_checkRunStatus :: Lens' AuditCheckDetails (Maybe AuditCheckRunStatus)
auditCheckDetails_checkRunStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AuditCheckDetails' {Maybe AuditCheckRunStatus
checkRunStatus :: Maybe AuditCheckRunStatus
$sel:checkRunStatus:AuditCheckDetails' :: AuditCheckDetails -> Maybe AuditCheckRunStatus
checkRunStatus} -> Maybe AuditCheckRunStatus
checkRunStatus) (\s :: AuditCheckDetails
s@AuditCheckDetails' {} Maybe AuditCheckRunStatus
a -> AuditCheckDetails
s {$sel:checkRunStatus:AuditCheckDetails' :: Maybe AuditCheckRunStatus
checkRunStatus = Maybe AuditCheckRunStatus
a} :: AuditCheckDetails)

-- | The code of any error encountered when this check is performed during
-- this audit. One of \"INSUFFICIENT_PERMISSIONS\" or
-- \"AUDIT_CHECK_DISABLED\".
auditCheckDetails_errorCode :: Lens.Lens' AuditCheckDetails (Prelude.Maybe Prelude.Text)
auditCheckDetails_errorCode :: Lens' AuditCheckDetails (Maybe Text)
auditCheckDetails_errorCode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AuditCheckDetails' {Maybe Text
errorCode :: Maybe Text
$sel:errorCode:AuditCheckDetails' :: AuditCheckDetails -> Maybe Text
errorCode} -> Maybe Text
errorCode) (\s :: AuditCheckDetails
s@AuditCheckDetails' {} Maybe Text
a -> AuditCheckDetails
s {$sel:errorCode:AuditCheckDetails' :: Maybe Text
errorCode = Maybe Text
a} :: AuditCheckDetails)

-- | The message associated with any error encountered when this check is
-- performed during this audit.
auditCheckDetails_message :: Lens.Lens' AuditCheckDetails (Prelude.Maybe Prelude.Text)
auditCheckDetails_message :: Lens' AuditCheckDetails (Maybe Text)
auditCheckDetails_message = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AuditCheckDetails' {Maybe Text
message :: Maybe Text
$sel:message:AuditCheckDetails' :: AuditCheckDetails -> Maybe Text
message} -> Maybe Text
message) (\s :: AuditCheckDetails
s@AuditCheckDetails' {} Maybe Text
a -> AuditCheckDetails
s {$sel:message:AuditCheckDetails' :: Maybe Text
message = Maybe Text
a} :: AuditCheckDetails)

-- | The number of resources that were found noncompliant during the check.
auditCheckDetails_nonCompliantResourcesCount :: Lens.Lens' AuditCheckDetails (Prelude.Maybe Prelude.Integer)
auditCheckDetails_nonCompliantResourcesCount :: Lens' AuditCheckDetails (Maybe Integer)
auditCheckDetails_nonCompliantResourcesCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AuditCheckDetails' {Maybe Integer
nonCompliantResourcesCount :: Maybe Integer
$sel:nonCompliantResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
nonCompliantResourcesCount} -> Maybe Integer
nonCompliantResourcesCount) (\s :: AuditCheckDetails
s@AuditCheckDetails' {} Maybe Integer
a -> AuditCheckDetails
s {$sel:nonCompliantResourcesCount:AuditCheckDetails' :: Maybe Integer
nonCompliantResourcesCount = Maybe Integer
a} :: AuditCheckDetails)

-- | Describes how many of the non-compliant resources created during the
-- evaluation of an audit check were marked as suppressed.
auditCheckDetails_suppressedNonCompliantResourcesCount :: Lens.Lens' AuditCheckDetails (Prelude.Maybe Prelude.Integer)
auditCheckDetails_suppressedNonCompliantResourcesCount :: Lens' AuditCheckDetails (Maybe Integer)
auditCheckDetails_suppressedNonCompliantResourcesCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AuditCheckDetails' {Maybe Integer
suppressedNonCompliantResourcesCount :: Maybe Integer
$sel:suppressedNonCompliantResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
suppressedNonCompliantResourcesCount} -> Maybe Integer
suppressedNonCompliantResourcesCount) (\s :: AuditCheckDetails
s@AuditCheckDetails' {} Maybe Integer
a -> AuditCheckDetails
s {$sel:suppressedNonCompliantResourcesCount:AuditCheckDetails' :: Maybe Integer
suppressedNonCompliantResourcesCount = Maybe Integer
a} :: AuditCheckDetails)

-- | The number of resources on which the check was performed.
auditCheckDetails_totalResourcesCount :: Lens.Lens' AuditCheckDetails (Prelude.Maybe Prelude.Integer)
auditCheckDetails_totalResourcesCount :: Lens' AuditCheckDetails (Maybe Integer)
auditCheckDetails_totalResourcesCount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AuditCheckDetails' {Maybe Integer
totalResourcesCount :: Maybe Integer
$sel:totalResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
totalResourcesCount} -> Maybe Integer
totalResourcesCount) (\s :: AuditCheckDetails
s@AuditCheckDetails' {} Maybe Integer
a -> AuditCheckDetails
s {$sel:totalResourcesCount:AuditCheckDetails' :: Maybe Integer
totalResourcesCount = Maybe Integer
a} :: AuditCheckDetails)

instance Data.FromJSON AuditCheckDetails where
  parseJSON :: Value -> Parser AuditCheckDetails
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"AuditCheckDetails"
      ( \Object
x ->
          Maybe Bool
-> Maybe AuditCheckRunStatus
-> Maybe Text
-> Maybe Text
-> Maybe Integer
-> Maybe Integer
-> Maybe Integer
-> AuditCheckDetails
AuditCheckDetails'
            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
"checkCompliant")
            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
"checkRunStatus")
            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
"errorCode")
            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
"message")
            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
"nonCompliantResourcesCount")
            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
"suppressedNonCompliantResourcesCount")
            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
"totalResourcesCount")
      )

instance Prelude.Hashable AuditCheckDetails where
  hashWithSalt :: Int -> AuditCheckDetails -> Int
hashWithSalt Int
_salt AuditCheckDetails' {Maybe Bool
Maybe Integer
Maybe Text
Maybe AuditCheckRunStatus
totalResourcesCount :: Maybe Integer
suppressedNonCompliantResourcesCount :: Maybe Integer
nonCompliantResourcesCount :: Maybe Integer
message :: Maybe Text
errorCode :: Maybe Text
checkRunStatus :: Maybe AuditCheckRunStatus
checkCompliant :: Maybe Bool
$sel:totalResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
$sel:suppressedNonCompliantResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
$sel:nonCompliantResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
$sel:message:AuditCheckDetails' :: AuditCheckDetails -> Maybe Text
$sel:errorCode:AuditCheckDetails' :: AuditCheckDetails -> Maybe Text
$sel:checkRunStatus:AuditCheckDetails' :: AuditCheckDetails -> Maybe AuditCheckRunStatus
$sel:checkCompliant:AuditCheckDetails' :: AuditCheckDetails -> Maybe Bool
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
checkCompliant
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AuditCheckRunStatus
checkRunStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
errorCode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
message
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
nonCompliantResourcesCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
suppressedNonCompliantResourcesCount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
totalResourcesCount

instance Prelude.NFData AuditCheckDetails where
  rnf :: AuditCheckDetails -> ()
rnf AuditCheckDetails' {Maybe Bool
Maybe Integer
Maybe Text
Maybe AuditCheckRunStatus
totalResourcesCount :: Maybe Integer
suppressedNonCompliantResourcesCount :: Maybe Integer
nonCompliantResourcesCount :: Maybe Integer
message :: Maybe Text
errorCode :: Maybe Text
checkRunStatus :: Maybe AuditCheckRunStatus
checkCompliant :: Maybe Bool
$sel:totalResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
$sel:suppressedNonCompliantResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
$sel:nonCompliantResourcesCount:AuditCheckDetails' :: AuditCheckDetails -> Maybe Integer
$sel:message:AuditCheckDetails' :: AuditCheckDetails -> Maybe Text
$sel:errorCode:AuditCheckDetails' :: AuditCheckDetails -> Maybe Text
$sel:checkRunStatus:AuditCheckDetails' :: AuditCheckDetails -> Maybe AuditCheckRunStatus
$sel:checkCompliant:AuditCheckDetails' :: AuditCheckDetails -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
checkCompliant
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AuditCheckRunStatus
checkRunStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
errorCode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
message
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
nonCompliantResourcesCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
suppressedNonCompliantResourcesCount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
totalResourcesCount