{-# 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.LicenseManager.Types.ReportGenerator
-- 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.LicenseManager.Types.ReportGenerator where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.LicenseManager.Types.ReportContext
import Amazonka.LicenseManager.Types.ReportFrequency
import Amazonka.LicenseManager.Types.ReportType
import Amazonka.LicenseManager.Types.S3Location
import Amazonka.LicenseManager.Types.Tag
import qualified Amazonka.Prelude as Prelude

-- | Describe the details of a report generator.
--
-- /See:/ 'newReportGenerator' smart constructor.
data ReportGenerator = ReportGenerator'
  { -- | Time the report was created.
    ReportGenerator -> Maybe Text
createTime :: Prelude.Maybe Prelude.Text,
    -- | Description of the report generator.
    ReportGenerator -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | Time the last report was generated at.
    ReportGenerator -> Maybe Text
lastReportGenerationTime :: Prelude.Maybe Prelude.Text,
    -- | Failure message for the last report generation attempt.
    ReportGenerator -> Maybe Text
lastRunFailureReason :: Prelude.Maybe Prelude.Text,
    -- | Status of the last report generation attempt.
    ReportGenerator -> Maybe Text
lastRunStatus :: Prelude.Maybe Prelude.Text,
    -- | Amazon Resource Name (ARN) of the report generator.
    ReportGenerator -> Maybe Text
licenseManagerReportGeneratorArn :: Prelude.Maybe Prelude.Text,
    -- | License configuration type for this generator.
    ReportGenerator -> Maybe ReportContext
reportContext :: Prelude.Maybe ReportContext,
    -- | The Amazon Web Services account ID used to create the report generator.
    ReportGenerator -> Maybe Text
reportCreatorAccount :: Prelude.Maybe Prelude.Text,
    -- | Details about how frequently reports are generated.
    ReportGenerator -> Maybe ReportFrequency
reportFrequency :: Prelude.Maybe ReportFrequency,
    -- | Name of the report generator.
    ReportGenerator -> Maybe Text
reportGeneratorName :: Prelude.Maybe Prelude.Text,
    -- | Type of reports that are generated.
    ReportGenerator -> Maybe [ReportType]
reportType :: Prelude.Maybe [ReportType],
    -- | Details of the S3 bucket that report generator reports are published to.
    ReportGenerator -> Maybe S3Location
s3Location :: Prelude.Maybe S3Location,
    -- | Tags associated with the report generator.
    ReportGenerator -> Maybe [Tag]
tags :: Prelude.Maybe [Tag]
  }
  deriving (ReportGenerator -> ReportGenerator -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ReportGenerator -> ReportGenerator -> Bool
$c/= :: ReportGenerator -> ReportGenerator -> Bool
== :: ReportGenerator -> ReportGenerator -> Bool
$c== :: ReportGenerator -> ReportGenerator -> Bool
Prelude.Eq, ReadPrec [ReportGenerator]
ReadPrec ReportGenerator
Int -> ReadS ReportGenerator
ReadS [ReportGenerator]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ReportGenerator]
$creadListPrec :: ReadPrec [ReportGenerator]
readPrec :: ReadPrec ReportGenerator
$creadPrec :: ReadPrec ReportGenerator
readList :: ReadS [ReportGenerator]
$creadList :: ReadS [ReportGenerator]
readsPrec :: Int -> ReadS ReportGenerator
$creadsPrec :: Int -> ReadS ReportGenerator
Prelude.Read, Int -> ReportGenerator -> ShowS
[ReportGenerator] -> ShowS
ReportGenerator -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ReportGenerator] -> ShowS
$cshowList :: [ReportGenerator] -> ShowS
show :: ReportGenerator -> String
$cshow :: ReportGenerator -> String
showsPrec :: Int -> ReportGenerator -> ShowS
$cshowsPrec :: Int -> ReportGenerator -> ShowS
Prelude.Show, forall x. Rep ReportGenerator x -> ReportGenerator
forall x. ReportGenerator -> Rep ReportGenerator x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ReportGenerator x -> ReportGenerator
$cfrom :: forall x. ReportGenerator -> Rep ReportGenerator x
Prelude.Generic)

-- |
-- Create a value of 'ReportGenerator' 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:
--
-- 'createTime', 'reportGenerator_createTime' - Time the report was created.
--
-- 'description', 'reportGenerator_description' - Description of the report generator.
--
-- 'lastReportGenerationTime', 'reportGenerator_lastReportGenerationTime' - Time the last report was generated at.
--
-- 'lastRunFailureReason', 'reportGenerator_lastRunFailureReason' - Failure message for the last report generation attempt.
--
-- 'lastRunStatus', 'reportGenerator_lastRunStatus' - Status of the last report generation attempt.
--
-- 'licenseManagerReportGeneratorArn', 'reportGenerator_licenseManagerReportGeneratorArn' - Amazon Resource Name (ARN) of the report generator.
--
-- 'reportContext', 'reportGenerator_reportContext' - License configuration type for this generator.
--
-- 'reportCreatorAccount', 'reportGenerator_reportCreatorAccount' - The Amazon Web Services account ID used to create the report generator.
--
-- 'reportFrequency', 'reportGenerator_reportFrequency' - Details about how frequently reports are generated.
--
-- 'reportGeneratorName', 'reportGenerator_reportGeneratorName' - Name of the report generator.
--
-- 'reportType', 'reportGenerator_reportType' - Type of reports that are generated.
--
-- 's3Location', 'reportGenerator_s3Location' - Details of the S3 bucket that report generator reports are published to.
--
-- 'tags', 'reportGenerator_tags' - Tags associated with the report generator.
newReportGenerator ::
  ReportGenerator
newReportGenerator :: ReportGenerator
newReportGenerator =
  ReportGenerator'
    { $sel:createTime:ReportGenerator' :: Maybe Text
createTime = forall a. Maybe a
Prelude.Nothing,
      $sel:description:ReportGenerator' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:lastReportGenerationTime:ReportGenerator' :: Maybe Text
lastReportGenerationTime = forall a. Maybe a
Prelude.Nothing,
      $sel:lastRunFailureReason:ReportGenerator' :: Maybe Text
lastRunFailureReason = forall a. Maybe a
Prelude.Nothing,
      $sel:lastRunStatus:ReportGenerator' :: Maybe Text
lastRunStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:licenseManagerReportGeneratorArn:ReportGenerator' :: Maybe Text
licenseManagerReportGeneratorArn = forall a. Maybe a
Prelude.Nothing,
      $sel:reportContext:ReportGenerator' :: Maybe ReportContext
reportContext = forall a. Maybe a
Prelude.Nothing,
      $sel:reportCreatorAccount:ReportGenerator' :: Maybe Text
reportCreatorAccount = forall a. Maybe a
Prelude.Nothing,
      $sel:reportFrequency:ReportGenerator' :: Maybe ReportFrequency
reportFrequency = forall a. Maybe a
Prelude.Nothing,
      $sel:reportGeneratorName:ReportGenerator' :: Maybe Text
reportGeneratorName = forall a. Maybe a
Prelude.Nothing,
      $sel:reportType:ReportGenerator' :: Maybe [ReportType]
reportType = forall a. Maybe a
Prelude.Nothing,
      $sel:s3Location:ReportGenerator' :: Maybe S3Location
s3Location = forall a. Maybe a
Prelude.Nothing,
      $sel:tags:ReportGenerator' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing
    }

-- | Time the report was created.
reportGenerator_createTime :: Lens.Lens' ReportGenerator (Prelude.Maybe Prelude.Text)
reportGenerator_createTime :: Lens' ReportGenerator (Maybe Text)
reportGenerator_createTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe Text
createTime :: Maybe Text
$sel:createTime:ReportGenerator' :: ReportGenerator -> Maybe Text
createTime} -> Maybe Text
createTime) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe Text
a -> ReportGenerator
s {$sel:createTime:ReportGenerator' :: Maybe Text
createTime = Maybe Text
a} :: ReportGenerator)

-- | Description of the report generator.
reportGenerator_description :: Lens.Lens' ReportGenerator (Prelude.Maybe Prelude.Text)
reportGenerator_description :: Lens' ReportGenerator (Maybe Text)
reportGenerator_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe Text
description :: Maybe Text
$sel:description:ReportGenerator' :: ReportGenerator -> Maybe Text
description} -> Maybe Text
description) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe Text
a -> ReportGenerator
s {$sel:description:ReportGenerator' :: Maybe Text
description = Maybe Text
a} :: ReportGenerator)

-- | Time the last report was generated at.
reportGenerator_lastReportGenerationTime :: Lens.Lens' ReportGenerator (Prelude.Maybe Prelude.Text)
reportGenerator_lastReportGenerationTime :: Lens' ReportGenerator (Maybe Text)
reportGenerator_lastReportGenerationTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe Text
lastReportGenerationTime :: Maybe Text
$sel:lastReportGenerationTime:ReportGenerator' :: ReportGenerator -> Maybe Text
lastReportGenerationTime} -> Maybe Text
lastReportGenerationTime) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe Text
a -> ReportGenerator
s {$sel:lastReportGenerationTime:ReportGenerator' :: Maybe Text
lastReportGenerationTime = Maybe Text
a} :: ReportGenerator)

-- | Failure message for the last report generation attempt.
reportGenerator_lastRunFailureReason :: Lens.Lens' ReportGenerator (Prelude.Maybe Prelude.Text)
reportGenerator_lastRunFailureReason :: Lens' ReportGenerator (Maybe Text)
reportGenerator_lastRunFailureReason = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe Text
lastRunFailureReason :: Maybe Text
$sel:lastRunFailureReason:ReportGenerator' :: ReportGenerator -> Maybe Text
lastRunFailureReason} -> Maybe Text
lastRunFailureReason) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe Text
a -> ReportGenerator
s {$sel:lastRunFailureReason:ReportGenerator' :: Maybe Text
lastRunFailureReason = Maybe Text
a} :: ReportGenerator)

-- | Status of the last report generation attempt.
reportGenerator_lastRunStatus :: Lens.Lens' ReportGenerator (Prelude.Maybe Prelude.Text)
reportGenerator_lastRunStatus :: Lens' ReportGenerator (Maybe Text)
reportGenerator_lastRunStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe Text
lastRunStatus :: Maybe Text
$sel:lastRunStatus:ReportGenerator' :: ReportGenerator -> Maybe Text
lastRunStatus} -> Maybe Text
lastRunStatus) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe Text
a -> ReportGenerator
s {$sel:lastRunStatus:ReportGenerator' :: Maybe Text
lastRunStatus = Maybe Text
a} :: ReportGenerator)

-- | Amazon Resource Name (ARN) of the report generator.
reportGenerator_licenseManagerReportGeneratorArn :: Lens.Lens' ReportGenerator (Prelude.Maybe Prelude.Text)
reportGenerator_licenseManagerReportGeneratorArn :: Lens' ReportGenerator (Maybe Text)
reportGenerator_licenseManagerReportGeneratorArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe Text
licenseManagerReportGeneratorArn :: Maybe Text
$sel:licenseManagerReportGeneratorArn:ReportGenerator' :: ReportGenerator -> Maybe Text
licenseManagerReportGeneratorArn} -> Maybe Text
licenseManagerReportGeneratorArn) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe Text
a -> ReportGenerator
s {$sel:licenseManagerReportGeneratorArn:ReportGenerator' :: Maybe Text
licenseManagerReportGeneratorArn = Maybe Text
a} :: ReportGenerator)

-- | License configuration type for this generator.
reportGenerator_reportContext :: Lens.Lens' ReportGenerator (Prelude.Maybe ReportContext)
reportGenerator_reportContext :: Lens' ReportGenerator (Maybe ReportContext)
reportGenerator_reportContext = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe ReportContext
reportContext :: Maybe ReportContext
$sel:reportContext:ReportGenerator' :: ReportGenerator -> Maybe ReportContext
reportContext} -> Maybe ReportContext
reportContext) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe ReportContext
a -> ReportGenerator
s {$sel:reportContext:ReportGenerator' :: Maybe ReportContext
reportContext = Maybe ReportContext
a} :: ReportGenerator)

-- | The Amazon Web Services account ID used to create the report generator.
reportGenerator_reportCreatorAccount :: Lens.Lens' ReportGenerator (Prelude.Maybe Prelude.Text)
reportGenerator_reportCreatorAccount :: Lens' ReportGenerator (Maybe Text)
reportGenerator_reportCreatorAccount = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe Text
reportCreatorAccount :: Maybe Text
$sel:reportCreatorAccount:ReportGenerator' :: ReportGenerator -> Maybe Text
reportCreatorAccount} -> Maybe Text
reportCreatorAccount) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe Text
a -> ReportGenerator
s {$sel:reportCreatorAccount:ReportGenerator' :: Maybe Text
reportCreatorAccount = Maybe Text
a} :: ReportGenerator)

-- | Details about how frequently reports are generated.
reportGenerator_reportFrequency :: Lens.Lens' ReportGenerator (Prelude.Maybe ReportFrequency)
reportGenerator_reportFrequency :: Lens' ReportGenerator (Maybe ReportFrequency)
reportGenerator_reportFrequency = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe ReportFrequency
reportFrequency :: Maybe ReportFrequency
$sel:reportFrequency:ReportGenerator' :: ReportGenerator -> Maybe ReportFrequency
reportFrequency} -> Maybe ReportFrequency
reportFrequency) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe ReportFrequency
a -> ReportGenerator
s {$sel:reportFrequency:ReportGenerator' :: Maybe ReportFrequency
reportFrequency = Maybe ReportFrequency
a} :: ReportGenerator)

-- | Name of the report generator.
reportGenerator_reportGeneratorName :: Lens.Lens' ReportGenerator (Prelude.Maybe Prelude.Text)
reportGenerator_reportGeneratorName :: Lens' ReportGenerator (Maybe Text)
reportGenerator_reportGeneratorName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe Text
reportGeneratorName :: Maybe Text
$sel:reportGeneratorName:ReportGenerator' :: ReportGenerator -> Maybe Text
reportGeneratorName} -> Maybe Text
reportGeneratorName) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe Text
a -> ReportGenerator
s {$sel:reportGeneratorName:ReportGenerator' :: Maybe Text
reportGeneratorName = Maybe Text
a} :: ReportGenerator)

-- | Type of reports that are generated.
reportGenerator_reportType :: Lens.Lens' ReportGenerator (Prelude.Maybe [ReportType])
reportGenerator_reportType :: Lens' ReportGenerator (Maybe [ReportType])
reportGenerator_reportType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe [ReportType]
reportType :: Maybe [ReportType]
$sel:reportType:ReportGenerator' :: ReportGenerator -> Maybe [ReportType]
reportType} -> Maybe [ReportType]
reportType) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe [ReportType]
a -> ReportGenerator
s {$sel:reportType:ReportGenerator' :: Maybe [ReportType]
reportType = Maybe [ReportType]
a} :: ReportGenerator) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Details of the S3 bucket that report generator reports are published to.
reportGenerator_s3Location :: Lens.Lens' ReportGenerator (Prelude.Maybe S3Location)
reportGenerator_s3Location :: Lens' ReportGenerator (Maybe S3Location)
reportGenerator_s3Location = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe S3Location
s3Location :: Maybe S3Location
$sel:s3Location:ReportGenerator' :: ReportGenerator -> Maybe S3Location
s3Location} -> Maybe S3Location
s3Location) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe S3Location
a -> ReportGenerator
s {$sel:s3Location:ReportGenerator' :: Maybe S3Location
s3Location = Maybe S3Location
a} :: ReportGenerator)

-- | Tags associated with the report generator.
reportGenerator_tags :: Lens.Lens' ReportGenerator (Prelude.Maybe [Tag])
reportGenerator_tags :: Lens' ReportGenerator (Maybe [Tag])
reportGenerator_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ReportGenerator' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:ReportGenerator' :: ReportGenerator -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: ReportGenerator
s@ReportGenerator' {} Maybe [Tag]
a -> ReportGenerator
s {$sel:tags:ReportGenerator' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: ReportGenerator) 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 s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON ReportGenerator where
  parseJSON :: Value -> Parser ReportGenerator
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ReportGenerator"
      ( \Object
x ->
          Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ReportContext
-> Maybe Text
-> Maybe ReportFrequency
-> Maybe Text
-> Maybe [ReportType]
-> Maybe S3Location
-> Maybe [Tag]
-> ReportGenerator
ReportGenerator'
            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
"CreateTime")
            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
"Description")
            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
"LastReportGenerationTime")
            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
"LastRunFailureReason")
            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
"LastRunStatus")
            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
"LicenseManagerReportGeneratorArn")
            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
"ReportContext")
            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
"ReportCreatorAccount")
            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
"ReportFrequency")
            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
"ReportGeneratorName")
            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
"ReportType" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"S3Location")
            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 ReportGenerator where
  hashWithSalt :: Int -> ReportGenerator -> Int
hashWithSalt Int
_salt ReportGenerator' {Maybe [ReportType]
Maybe [Tag]
Maybe Text
Maybe ReportContext
Maybe ReportFrequency
Maybe S3Location
tags :: Maybe [Tag]
s3Location :: Maybe S3Location
reportType :: Maybe [ReportType]
reportGeneratorName :: Maybe Text
reportFrequency :: Maybe ReportFrequency
reportCreatorAccount :: Maybe Text
reportContext :: Maybe ReportContext
licenseManagerReportGeneratorArn :: Maybe Text
lastRunStatus :: Maybe Text
lastRunFailureReason :: Maybe Text
lastReportGenerationTime :: Maybe Text
description :: Maybe Text
createTime :: Maybe Text
$sel:tags:ReportGenerator' :: ReportGenerator -> Maybe [Tag]
$sel:s3Location:ReportGenerator' :: ReportGenerator -> Maybe S3Location
$sel:reportType:ReportGenerator' :: ReportGenerator -> Maybe [ReportType]
$sel:reportGeneratorName:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:reportFrequency:ReportGenerator' :: ReportGenerator -> Maybe ReportFrequency
$sel:reportCreatorAccount:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:reportContext:ReportGenerator' :: ReportGenerator -> Maybe ReportContext
$sel:licenseManagerReportGeneratorArn:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:lastRunStatus:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:lastRunFailureReason:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:lastReportGenerationTime:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:description:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:createTime:ReportGenerator' :: ReportGenerator -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
createTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastReportGenerationTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastRunFailureReason
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
lastRunStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
licenseManagerReportGeneratorArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReportContext
reportContext
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reportCreatorAccount
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ReportFrequency
reportFrequency
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
reportGeneratorName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ReportType]
reportType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe S3Location
s3Location
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags

instance Prelude.NFData ReportGenerator where
  rnf :: ReportGenerator -> ()
rnf ReportGenerator' {Maybe [ReportType]
Maybe [Tag]
Maybe Text
Maybe ReportContext
Maybe ReportFrequency
Maybe S3Location
tags :: Maybe [Tag]
s3Location :: Maybe S3Location
reportType :: Maybe [ReportType]
reportGeneratorName :: Maybe Text
reportFrequency :: Maybe ReportFrequency
reportCreatorAccount :: Maybe Text
reportContext :: Maybe ReportContext
licenseManagerReportGeneratorArn :: Maybe Text
lastRunStatus :: Maybe Text
lastRunFailureReason :: Maybe Text
lastReportGenerationTime :: Maybe Text
description :: Maybe Text
createTime :: Maybe Text
$sel:tags:ReportGenerator' :: ReportGenerator -> Maybe [Tag]
$sel:s3Location:ReportGenerator' :: ReportGenerator -> Maybe S3Location
$sel:reportType:ReportGenerator' :: ReportGenerator -> Maybe [ReportType]
$sel:reportGeneratorName:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:reportFrequency:ReportGenerator' :: ReportGenerator -> Maybe ReportFrequency
$sel:reportCreatorAccount:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:reportContext:ReportGenerator' :: ReportGenerator -> Maybe ReportContext
$sel:licenseManagerReportGeneratorArn:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:lastRunStatus:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:lastRunFailureReason:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:lastReportGenerationTime:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:description:ReportGenerator' :: ReportGenerator -> Maybe Text
$sel:createTime:ReportGenerator' :: ReportGenerator -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
createTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastReportGenerationTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastRunFailureReason
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
lastRunStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
licenseManagerReportGeneratorArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReportContext
reportContext
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reportCreatorAccount
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ReportFrequency
reportFrequency
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
reportGeneratorName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ReportType]
reportType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3Location
s3Location
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags