{-# 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.MigrationHubStrategy.Types.ApplicationComponentDetail
-- 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.MigrationHubStrategy.Types.ApplicationComponentDetail where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.MigrationHubStrategy.Types.AntipatternReportStatus
import Amazonka.MigrationHubStrategy.Types.AntipatternSeveritySummary
import Amazonka.MigrationHubStrategy.Types.AppType
import Amazonka.MigrationHubStrategy.Types.AppUnitError
import Amazonka.MigrationHubStrategy.Types.DatabaseConfigDetail
import Amazonka.MigrationHubStrategy.Types.InclusionStatus
import Amazonka.MigrationHubStrategy.Types.RecommendationSet
import Amazonka.MigrationHubStrategy.Types.ResourceSubType
import Amazonka.MigrationHubStrategy.Types.RuntimeAnalysisStatus
import Amazonka.MigrationHubStrategy.Types.S3Object
import Amazonka.MigrationHubStrategy.Types.SourceCodeRepository
import Amazonka.MigrationHubStrategy.Types.SrcCodeOrDbAnalysisStatus
import qualified Amazonka.Prelude as Prelude

-- | Contains detailed information about an application component.
--
-- /See:/ 'newApplicationComponentDetail' smart constructor.
data ApplicationComponentDetail = ApplicationComponentDetail'
  { -- | The status of analysis, if the application component has source code or
    -- an associated database.
    ApplicationComponentDetail -> Maybe SrcCodeOrDbAnalysisStatus
analysisStatus :: Prelude.Maybe SrcCodeOrDbAnalysisStatus,
    -- | The S3 bucket name and the Amazon S3 key name for the anti-pattern
    -- report.
    ApplicationComponentDetail -> Maybe S3Object
antipatternReportS3Object :: Prelude.Maybe S3Object,
    -- | The status of the anti-pattern report generation.
    ApplicationComponentDetail -> Maybe AntipatternReportStatus
antipatternReportStatus :: Prelude.Maybe AntipatternReportStatus,
    -- | The status message for the anti-pattern.
    ApplicationComponentDetail -> Maybe Text
antipatternReportStatusMessage :: Prelude.Maybe Prelude.Text,
    -- | The type of application component.
    ApplicationComponentDetail -> Maybe AppType
appType :: Prelude.Maybe AppType,
    -- | The error in the analysis of the source code or database.
    ApplicationComponentDetail -> Maybe AppUnitError
appUnitError :: Prelude.Maybe AppUnitError,
    -- | The ID of the server that the application component is running on.
    ApplicationComponentDetail -> Maybe Text
associatedServerId :: Prelude.Maybe Prelude.Text,
    -- | Configuration details for the database associated with the application
    -- component.
    ApplicationComponentDetail -> Maybe DatabaseConfigDetail
databaseConfigDetail :: Prelude.Maybe DatabaseConfigDetail,
    -- | The ID of the application component.
    ApplicationComponentDetail -> Maybe Text
id :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether the application component has been included for server
    -- recommendation or not.
    ApplicationComponentDetail -> Maybe InclusionStatus
inclusionStatus :: Prelude.Maybe InclusionStatus,
    -- | The timestamp of when the application component was assessed.
    ApplicationComponentDetail -> Maybe POSIX
lastAnalyzedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | A list of anti-pattern severity summaries.
    ApplicationComponentDetail -> Maybe [AntipatternSeveritySummary]
listAntipatternSeveritySummary :: Prelude.Maybe [AntipatternSeveritySummary],
    -- | Set to true if the application component is running on multiple servers.
    ApplicationComponentDetail -> Maybe Bool
moreServerAssociationExists :: Prelude.Maybe Prelude.Bool,
    -- | The name of application component.
    ApplicationComponentDetail -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | OS driver.
    ApplicationComponentDetail -> Maybe Text
osDriver :: Prelude.Maybe Prelude.Text,
    -- | OS version.
    ApplicationComponentDetail -> Maybe Text
osVersion :: Prelude.Maybe Prelude.Text,
    -- | The top recommendation set for the application component.
    ApplicationComponentDetail -> Maybe RecommendationSet
recommendationSet :: Prelude.Maybe RecommendationSet,
    -- | The application component subtype.
    ApplicationComponentDetail -> Maybe ResourceSubType
resourceSubType :: Prelude.Maybe ResourceSubType,
    -- | The status of the application unit.
    ApplicationComponentDetail -> Maybe RuntimeAnalysisStatus
runtimeStatus :: Prelude.Maybe RuntimeAnalysisStatus,
    -- | The status message for the application unit.
    ApplicationComponentDetail -> Maybe Text
runtimeStatusMessage :: Prelude.Maybe Prelude.Text,
    -- | Details about the source code repository associated with the application
    -- component.
    ApplicationComponentDetail -> Maybe [SourceCodeRepository]
sourceCodeRepositories :: Prelude.Maybe [SourceCodeRepository],
    -- | A detailed description of the analysis status and any failure message.
    ApplicationComponentDetail -> Maybe Text
statusMessage :: Prelude.Maybe Prelude.Text
  }
  deriving (ApplicationComponentDetail -> ApplicationComponentDetail -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ApplicationComponentDetail -> ApplicationComponentDetail -> Bool
$c/= :: ApplicationComponentDetail -> ApplicationComponentDetail -> Bool
== :: ApplicationComponentDetail -> ApplicationComponentDetail -> Bool
$c== :: ApplicationComponentDetail -> ApplicationComponentDetail -> Bool
Prelude.Eq, ReadPrec [ApplicationComponentDetail]
ReadPrec ApplicationComponentDetail
Int -> ReadS ApplicationComponentDetail
ReadS [ApplicationComponentDetail]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ApplicationComponentDetail]
$creadListPrec :: ReadPrec [ApplicationComponentDetail]
readPrec :: ReadPrec ApplicationComponentDetail
$creadPrec :: ReadPrec ApplicationComponentDetail
readList :: ReadS [ApplicationComponentDetail]
$creadList :: ReadS [ApplicationComponentDetail]
readsPrec :: Int -> ReadS ApplicationComponentDetail
$creadsPrec :: Int -> ReadS ApplicationComponentDetail
Prelude.Read, Int -> ApplicationComponentDetail -> ShowS
[ApplicationComponentDetail] -> ShowS
ApplicationComponentDetail -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ApplicationComponentDetail] -> ShowS
$cshowList :: [ApplicationComponentDetail] -> ShowS
show :: ApplicationComponentDetail -> String
$cshow :: ApplicationComponentDetail -> String
showsPrec :: Int -> ApplicationComponentDetail -> ShowS
$cshowsPrec :: Int -> ApplicationComponentDetail -> ShowS
Prelude.Show, forall x.
Rep ApplicationComponentDetail x -> ApplicationComponentDetail
forall x.
ApplicationComponentDetail -> Rep ApplicationComponentDetail x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ApplicationComponentDetail x -> ApplicationComponentDetail
$cfrom :: forall x.
ApplicationComponentDetail -> Rep ApplicationComponentDetail x
Prelude.Generic)

-- |
-- Create a value of 'ApplicationComponentDetail' 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:
--
-- 'analysisStatus', 'applicationComponentDetail_analysisStatus' - The status of analysis, if the application component has source code or
-- an associated database.
--
-- 'antipatternReportS3Object', 'applicationComponentDetail_antipatternReportS3Object' - The S3 bucket name and the Amazon S3 key name for the anti-pattern
-- report.
--
-- 'antipatternReportStatus', 'applicationComponentDetail_antipatternReportStatus' - The status of the anti-pattern report generation.
--
-- 'antipatternReportStatusMessage', 'applicationComponentDetail_antipatternReportStatusMessage' - The status message for the anti-pattern.
--
-- 'appType', 'applicationComponentDetail_appType' - The type of application component.
--
-- 'appUnitError', 'applicationComponentDetail_appUnitError' - The error in the analysis of the source code or database.
--
-- 'associatedServerId', 'applicationComponentDetail_associatedServerId' - The ID of the server that the application component is running on.
--
-- 'databaseConfigDetail', 'applicationComponentDetail_databaseConfigDetail' - Configuration details for the database associated with the application
-- component.
--
-- 'id', 'applicationComponentDetail_id' - The ID of the application component.
--
-- 'inclusionStatus', 'applicationComponentDetail_inclusionStatus' - Indicates whether the application component has been included for server
-- recommendation or not.
--
-- 'lastAnalyzedTimestamp', 'applicationComponentDetail_lastAnalyzedTimestamp' - The timestamp of when the application component was assessed.
--
-- 'listAntipatternSeveritySummary', 'applicationComponentDetail_listAntipatternSeveritySummary' - A list of anti-pattern severity summaries.
--
-- 'moreServerAssociationExists', 'applicationComponentDetail_moreServerAssociationExists' - Set to true if the application component is running on multiple servers.
--
-- 'name', 'applicationComponentDetail_name' - The name of application component.
--
-- 'osDriver', 'applicationComponentDetail_osDriver' - OS driver.
--
-- 'osVersion', 'applicationComponentDetail_osVersion' - OS version.
--
-- 'recommendationSet', 'applicationComponentDetail_recommendationSet' - The top recommendation set for the application component.
--
-- 'resourceSubType', 'applicationComponentDetail_resourceSubType' - The application component subtype.
--
-- 'runtimeStatus', 'applicationComponentDetail_runtimeStatus' - The status of the application unit.
--
-- 'runtimeStatusMessage', 'applicationComponentDetail_runtimeStatusMessage' - The status message for the application unit.
--
-- 'sourceCodeRepositories', 'applicationComponentDetail_sourceCodeRepositories' - Details about the source code repository associated with the application
-- component.
--
-- 'statusMessage', 'applicationComponentDetail_statusMessage' - A detailed description of the analysis status and any failure message.
newApplicationComponentDetail ::
  ApplicationComponentDetail
newApplicationComponentDetail :: ApplicationComponentDetail
newApplicationComponentDetail =
  ApplicationComponentDetail'
    { $sel:analysisStatus:ApplicationComponentDetail' :: Maybe SrcCodeOrDbAnalysisStatus
analysisStatus =
        forall a. Maybe a
Prelude.Nothing,
      $sel:antipatternReportS3Object:ApplicationComponentDetail' :: Maybe S3Object
antipatternReportS3Object = forall a. Maybe a
Prelude.Nothing,
      $sel:antipatternReportStatus:ApplicationComponentDetail' :: Maybe AntipatternReportStatus
antipatternReportStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:antipatternReportStatusMessage:ApplicationComponentDetail' :: Maybe Text
antipatternReportStatusMessage =
        forall a. Maybe a
Prelude.Nothing,
      $sel:appType:ApplicationComponentDetail' :: Maybe AppType
appType = forall a. Maybe a
Prelude.Nothing,
      $sel:appUnitError:ApplicationComponentDetail' :: Maybe AppUnitError
appUnitError = forall a. Maybe a
Prelude.Nothing,
      $sel:associatedServerId:ApplicationComponentDetail' :: Maybe Text
associatedServerId = forall a. Maybe a
Prelude.Nothing,
      $sel:databaseConfigDetail:ApplicationComponentDetail' :: Maybe DatabaseConfigDetail
databaseConfigDetail = forall a. Maybe a
Prelude.Nothing,
      $sel:id:ApplicationComponentDetail' :: Maybe Text
id = forall a. Maybe a
Prelude.Nothing,
      $sel:inclusionStatus:ApplicationComponentDetail' :: Maybe InclusionStatus
inclusionStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:lastAnalyzedTimestamp:ApplicationComponentDetail' :: Maybe POSIX
lastAnalyzedTimestamp = forall a. Maybe a
Prelude.Nothing,
      $sel:listAntipatternSeveritySummary:ApplicationComponentDetail' :: Maybe [AntipatternSeveritySummary]
listAntipatternSeveritySummary =
        forall a. Maybe a
Prelude.Nothing,
      $sel:moreServerAssociationExists:ApplicationComponentDetail' :: Maybe Bool
moreServerAssociationExists = forall a. Maybe a
Prelude.Nothing,
      $sel:name:ApplicationComponentDetail' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:osDriver:ApplicationComponentDetail' :: Maybe Text
osDriver = forall a. Maybe a
Prelude.Nothing,
      $sel:osVersion:ApplicationComponentDetail' :: Maybe Text
osVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:recommendationSet:ApplicationComponentDetail' :: Maybe RecommendationSet
recommendationSet = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceSubType:ApplicationComponentDetail' :: Maybe ResourceSubType
resourceSubType = forall a. Maybe a
Prelude.Nothing,
      $sel:runtimeStatus:ApplicationComponentDetail' :: Maybe RuntimeAnalysisStatus
runtimeStatus = forall a. Maybe a
Prelude.Nothing,
      $sel:runtimeStatusMessage:ApplicationComponentDetail' :: Maybe Text
runtimeStatusMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:sourceCodeRepositories:ApplicationComponentDetail' :: Maybe [SourceCodeRepository]
sourceCodeRepositories = forall a. Maybe a
Prelude.Nothing,
      $sel:statusMessage:ApplicationComponentDetail' :: Maybe Text
statusMessage = forall a. Maybe a
Prelude.Nothing
    }

-- | The status of analysis, if the application component has source code or
-- an associated database.
applicationComponentDetail_analysisStatus :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe SrcCodeOrDbAnalysisStatus)
applicationComponentDetail_analysisStatus :: Lens' ApplicationComponentDetail (Maybe SrcCodeOrDbAnalysisStatus)
applicationComponentDetail_analysisStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe SrcCodeOrDbAnalysisStatus
analysisStatus :: Maybe SrcCodeOrDbAnalysisStatus
$sel:analysisStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe SrcCodeOrDbAnalysisStatus
analysisStatus} -> Maybe SrcCodeOrDbAnalysisStatus
analysisStatus) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe SrcCodeOrDbAnalysisStatus
a -> ApplicationComponentDetail
s {$sel:analysisStatus:ApplicationComponentDetail' :: Maybe SrcCodeOrDbAnalysisStatus
analysisStatus = Maybe SrcCodeOrDbAnalysisStatus
a} :: ApplicationComponentDetail)

-- | The S3 bucket name and the Amazon S3 key name for the anti-pattern
-- report.
applicationComponentDetail_antipatternReportS3Object :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe S3Object)
applicationComponentDetail_antipatternReportS3Object :: Lens' ApplicationComponentDetail (Maybe S3Object)
applicationComponentDetail_antipatternReportS3Object = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe S3Object
antipatternReportS3Object :: Maybe S3Object
$sel:antipatternReportS3Object:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe S3Object
antipatternReportS3Object} -> Maybe S3Object
antipatternReportS3Object) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe S3Object
a -> ApplicationComponentDetail
s {$sel:antipatternReportS3Object:ApplicationComponentDetail' :: Maybe S3Object
antipatternReportS3Object = Maybe S3Object
a} :: ApplicationComponentDetail)

-- | The status of the anti-pattern report generation.
applicationComponentDetail_antipatternReportStatus :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe AntipatternReportStatus)
applicationComponentDetail_antipatternReportStatus :: Lens' ApplicationComponentDetail (Maybe AntipatternReportStatus)
applicationComponentDetail_antipatternReportStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe AntipatternReportStatus
antipatternReportStatus :: Maybe AntipatternReportStatus
$sel:antipatternReportStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AntipatternReportStatus
antipatternReportStatus} -> Maybe AntipatternReportStatus
antipatternReportStatus) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe AntipatternReportStatus
a -> ApplicationComponentDetail
s {$sel:antipatternReportStatus:ApplicationComponentDetail' :: Maybe AntipatternReportStatus
antipatternReportStatus = Maybe AntipatternReportStatus
a} :: ApplicationComponentDetail)

-- | The status message for the anti-pattern.
applicationComponentDetail_antipatternReportStatusMessage :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Text)
applicationComponentDetail_antipatternReportStatusMessage :: Lens' ApplicationComponentDetail (Maybe Text)
applicationComponentDetail_antipatternReportStatusMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Text
antipatternReportStatusMessage :: Maybe Text
$sel:antipatternReportStatusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
antipatternReportStatusMessage} -> Maybe Text
antipatternReportStatusMessage) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Text
a -> ApplicationComponentDetail
s {$sel:antipatternReportStatusMessage:ApplicationComponentDetail' :: Maybe Text
antipatternReportStatusMessage = Maybe Text
a} :: ApplicationComponentDetail)

-- | The type of application component.
applicationComponentDetail_appType :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe AppType)
applicationComponentDetail_appType :: Lens' ApplicationComponentDetail (Maybe AppType)
applicationComponentDetail_appType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe AppType
appType :: Maybe AppType
$sel:appType:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AppType
appType} -> Maybe AppType
appType) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe AppType
a -> ApplicationComponentDetail
s {$sel:appType:ApplicationComponentDetail' :: Maybe AppType
appType = Maybe AppType
a} :: ApplicationComponentDetail)

-- | The error in the analysis of the source code or database.
applicationComponentDetail_appUnitError :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe AppUnitError)
applicationComponentDetail_appUnitError :: Lens' ApplicationComponentDetail (Maybe AppUnitError)
applicationComponentDetail_appUnitError = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe AppUnitError
appUnitError :: Maybe AppUnitError
$sel:appUnitError:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AppUnitError
appUnitError} -> Maybe AppUnitError
appUnitError) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe AppUnitError
a -> ApplicationComponentDetail
s {$sel:appUnitError:ApplicationComponentDetail' :: Maybe AppUnitError
appUnitError = Maybe AppUnitError
a} :: ApplicationComponentDetail)

-- | The ID of the server that the application component is running on.
applicationComponentDetail_associatedServerId :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Text)
applicationComponentDetail_associatedServerId :: Lens' ApplicationComponentDetail (Maybe Text)
applicationComponentDetail_associatedServerId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Text
associatedServerId :: Maybe Text
$sel:associatedServerId:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
associatedServerId} -> Maybe Text
associatedServerId) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Text
a -> ApplicationComponentDetail
s {$sel:associatedServerId:ApplicationComponentDetail' :: Maybe Text
associatedServerId = Maybe Text
a} :: ApplicationComponentDetail)

-- | Configuration details for the database associated with the application
-- component.
applicationComponentDetail_databaseConfigDetail :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe DatabaseConfigDetail)
applicationComponentDetail_databaseConfigDetail :: Lens' ApplicationComponentDetail (Maybe DatabaseConfigDetail)
applicationComponentDetail_databaseConfigDetail = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe DatabaseConfigDetail
databaseConfigDetail :: Maybe DatabaseConfigDetail
$sel:databaseConfigDetail:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe DatabaseConfigDetail
databaseConfigDetail} -> Maybe DatabaseConfigDetail
databaseConfigDetail) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe DatabaseConfigDetail
a -> ApplicationComponentDetail
s {$sel:databaseConfigDetail:ApplicationComponentDetail' :: Maybe DatabaseConfigDetail
databaseConfigDetail = Maybe DatabaseConfigDetail
a} :: ApplicationComponentDetail)

-- | The ID of the application component.
applicationComponentDetail_id :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Text)
applicationComponentDetail_id :: Lens' ApplicationComponentDetail (Maybe Text)
applicationComponentDetail_id = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Text
id :: Maybe Text
$sel:id:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
id} -> Maybe Text
id) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Text
a -> ApplicationComponentDetail
s {$sel:id:ApplicationComponentDetail' :: Maybe Text
id = Maybe Text
a} :: ApplicationComponentDetail)

-- | Indicates whether the application component has been included for server
-- recommendation or not.
applicationComponentDetail_inclusionStatus :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe InclusionStatus)
applicationComponentDetail_inclusionStatus :: Lens' ApplicationComponentDetail (Maybe InclusionStatus)
applicationComponentDetail_inclusionStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe InclusionStatus
inclusionStatus :: Maybe InclusionStatus
$sel:inclusionStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe InclusionStatus
inclusionStatus} -> Maybe InclusionStatus
inclusionStatus) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe InclusionStatus
a -> ApplicationComponentDetail
s {$sel:inclusionStatus:ApplicationComponentDetail' :: Maybe InclusionStatus
inclusionStatus = Maybe InclusionStatus
a} :: ApplicationComponentDetail)

-- | The timestamp of when the application component was assessed.
applicationComponentDetail_lastAnalyzedTimestamp :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.UTCTime)
applicationComponentDetail_lastAnalyzedTimestamp :: Lens' ApplicationComponentDetail (Maybe UTCTime)
applicationComponentDetail_lastAnalyzedTimestamp = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe POSIX
lastAnalyzedTimestamp :: Maybe POSIX
$sel:lastAnalyzedTimestamp:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe POSIX
lastAnalyzedTimestamp} -> Maybe POSIX
lastAnalyzedTimestamp) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe POSIX
a -> ApplicationComponentDetail
s {$sel:lastAnalyzedTimestamp:ApplicationComponentDetail' :: Maybe POSIX
lastAnalyzedTimestamp = Maybe POSIX
a} :: ApplicationComponentDetail) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A list of anti-pattern severity summaries.
applicationComponentDetail_listAntipatternSeveritySummary :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe [AntipatternSeveritySummary])
applicationComponentDetail_listAntipatternSeveritySummary :: Lens'
  ApplicationComponentDetail (Maybe [AntipatternSeveritySummary])
applicationComponentDetail_listAntipatternSeveritySummary = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe [AntipatternSeveritySummary]
listAntipatternSeveritySummary :: Maybe [AntipatternSeveritySummary]
$sel:listAntipatternSeveritySummary:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe [AntipatternSeveritySummary]
listAntipatternSeveritySummary} -> Maybe [AntipatternSeveritySummary]
listAntipatternSeveritySummary) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe [AntipatternSeveritySummary]
a -> ApplicationComponentDetail
s {$sel:listAntipatternSeveritySummary:ApplicationComponentDetail' :: Maybe [AntipatternSeveritySummary]
listAntipatternSeveritySummary = Maybe [AntipatternSeveritySummary]
a} :: ApplicationComponentDetail) 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

-- | Set to true if the application component is running on multiple servers.
applicationComponentDetail_moreServerAssociationExists :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Bool)
applicationComponentDetail_moreServerAssociationExists :: Lens' ApplicationComponentDetail (Maybe Bool)
applicationComponentDetail_moreServerAssociationExists = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Bool
moreServerAssociationExists :: Maybe Bool
$sel:moreServerAssociationExists:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Bool
moreServerAssociationExists} -> Maybe Bool
moreServerAssociationExists) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Bool
a -> ApplicationComponentDetail
s {$sel:moreServerAssociationExists:ApplicationComponentDetail' :: Maybe Bool
moreServerAssociationExists = Maybe Bool
a} :: ApplicationComponentDetail)

-- | The name of application component.
applicationComponentDetail_name :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Text)
applicationComponentDetail_name :: Lens' ApplicationComponentDetail (Maybe Text)
applicationComponentDetail_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Text
name :: Maybe Text
$sel:name:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
name} -> Maybe Text
name) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Text
a -> ApplicationComponentDetail
s {$sel:name:ApplicationComponentDetail' :: Maybe Text
name = Maybe Text
a} :: ApplicationComponentDetail)

-- | OS driver.
applicationComponentDetail_osDriver :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Text)
applicationComponentDetail_osDriver :: Lens' ApplicationComponentDetail (Maybe Text)
applicationComponentDetail_osDriver = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Text
osDriver :: Maybe Text
$sel:osDriver:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
osDriver} -> Maybe Text
osDriver) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Text
a -> ApplicationComponentDetail
s {$sel:osDriver:ApplicationComponentDetail' :: Maybe Text
osDriver = Maybe Text
a} :: ApplicationComponentDetail)

-- | OS version.
applicationComponentDetail_osVersion :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Text)
applicationComponentDetail_osVersion :: Lens' ApplicationComponentDetail (Maybe Text)
applicationComponentDetail_osVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Text
osVersion :: Maybe Text
$sel:osVersion:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
osVersion} -> Maybe Text
osVersion) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Text
a -> ApplicationComponentDetail
s {$sel:osVersion:ApplicationComponentDetail' :: Maybe Text
osVersion = Maybe Text
a} :: ApplicationComponentDetail)

-- | The top recommendation set for the application component.
applicationComponentDetail_recommendationSet :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe RecommendationSet)
applicationComponentDetail_recommendationSet :: Lens' ApplicationComponentDetail (Maybe RecommendationSet)
applicationComponentDetail_recommendationSet = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe RecommendationSet
recommendationSet :: Maybe RecommendationSet
$sel:recommendationSet:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe RecommendationSet
recommendationSet} -> Maybe RecommendationSet
recommendationSet) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe RecommendationSet
a -> ApplicationComponentDetail
s {$sel:recommendationSet:ApplicationComponentDetail' :: Maybe RecommendationSet
recommendationSet = Maybe RecommendationSet
a} :: ApplicationComponentDetail)

-- | The application component subtype.
applicationComponentDetail_resourceSubType :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe ResourceSubType)
applicationComponentDetail_resourceSubType :: Lens' ApplicationComponentDetail (Maybe ResourceSubType)
applicationComponentDetail_resourceSubType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe ResourceSubType
resourceSubType :: Maybe ResourceSubType
$sel:resourceSubType:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe ResourceSubType
resourceSubType} -> Maybe ResourceSubType
resourceSubType) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe ResourceSubType
a -> ApplicationComponentDetail
s {$sel:resourceSubType:ApplicationComponentDetail' :: Maybe ResourceSubType
resourceSubType = Maybe ResourceSubType
a} :: ApplicationComponentDetail)

-- | The status of the application unit.
applicationComponentDetail_runtimeStatus :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe RuntimeAnalysisStatus)
applicationComponentDetail_runtimeStatus :: Lens' ApplicationComponentDetail (Maybe RuntimeAnalysisStatus)
applicationComponentDetail_runtimeStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe RuntimeAnalysisStatus
runtimeStatus :: Maybe RuntimeAnalysisStatus
$sel:runtimeStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe RuntimeAnalysisStatus
runtimeStatus} -> Maybe RuntimeAnalysisStatus
runtimeStatus) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe RuntimeAnalysisStatus
a -> ApplicationComponentDetail
s {$sel:runtimeStatus:ApplicationComponentDetail' :: Maybe RuntimeAnalysisStatus
runtimeStatus = Maybe RuntimeAnalysisStatus
a} :: ApplicationComponentDetail)

-- | The status message for the application unit.
applicationComponentDetail_runtimeStatusMessage :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Text)
applicationComponentDetail_runtimeStatusMessage :: Lens' ApplicationComponentDetail (Maybe Text)
applicationComponentDetail_runtimeStatusMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Text
runtimeStatusMessage :: Maybe Text
$sel:runtimeStatusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
runtimeStatusMessage} -> Maybe Text
runtimeStatusMessage) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Text
a -> ApplicationComponentDetail
s {$sel:runtimeStatusMessage:ApplicationComponentDetail' :: Maybe Text
runtimeStatusMessage = Maybe Text
a} :: ApplicationComponentDetail)

-- | Details about the source code repository associated with the application
-- component.
applicationComponentDetail_sourceCodeRepositories :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe [SourceCodeRepository])
applicationComponentDetail_sourceCodeRepositories :: Lens' ApplicationComponentDetail (Maybe [SourceCodeRepository])
applicationComponentDetail_sourceCodeRepositories = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe [SourceCodeRepository]
sourceCodeRepositories :: Maybe [SourceCodeRepository]
$sel:sourceCodeRepositories:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe [SourceCodeRepository]
sourceCodeRepositories} -> Maybe [SourceCodeRepository]
sourceCodeRepositories) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe [SourceCodeRepository]
a -> ApplicationComponentDetail
s {$sel:sourceCodeRepositories:ApplicationComponentDetail' :: Maybe [SourceCodeRepository]
sourceCodeRepositories = Maybe [SourceCodeRepository]
a} :: ApplicationComponentDetail) 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

-- | A detailed description of the analysis status and any failure message.
applicationComponentDetail_statusMessage :: Lens.Lens' ApplicationComponentDetail (Prelude.Maybe Prelude.Text)
applicationComponentDetail_statusMessage :: Lens' ApplicationComponentDetail (Maybe Text)
applicationComponentDetail_statusMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ApplicationComponentDetail' {Maybe Text
statusMessage :: Maybe Text
$sel:statusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
statusMessage} -> Maybe Text
statusMessage) (\s :: ApplicationComponentDetail
s@ApplicationComponentDetail' {} Maybe Text
a -> ApplicationComponentDetail
s {$sel:statusMessage:ApplicationComponentDetail' :: Maybe Text
statusMessage = Maybe Text
a} :: ApplicationComponentDetail)

instance Data.FromJSON ApplicationComponentDetail where
  parseJSON :: Value -> Parser ApplicationComponentDetail
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ApplicationComponentDetail"
      ( \Object
x ->
          Maybe SrcCodeOrDbAnalysisStatus
-> Maybe S3Object
-> Maybe AntipatternReportStatus
-> Maybe Text
-> Maybe AppType
-> Maybe AppUnitError
-> Maybe Text
-> Maybe DatabaseConfigDetail
-> Maybe Text
-> Maybe InclusionStatus
-> Maybe POSIX
-> Maybe [AntipatternSeveritySummary]
-> Maybe Bool
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe RecommendationSet
-> Maybe ResourceSubType
-> Maybe RuntimeAnalysisStatus
-> Maybe Text
-> Maybe [SourceCodeRepository]
-> Maybe Text
-> ApplicationComponentDetail
ApplicationComponentDetail'
            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
"analysisStatus")
            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
"antipatternReportS3Object")
            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
"antipatternReportStatus")
            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
"antipatternReportStatusMessage")
            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
"appType")
            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
"appUnitError")
            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
"associatedServerId")
            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
"databaseConfigDetail")
            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
"id")
            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
"inclusionStatus")
            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
"lastAnalyzedTimestamp")
            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
"listAntipatternSeveritySummary"
                            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
"moreServerAssociationExists")
            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
"name")
            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
"osDriver")
            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
"osVersion")
            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
"recommendationSet")
            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
"resourceSubType")
            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
"runtimeStatus")
            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
"runtimeStatusMessage")
            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
"sourceCodeRepositories"
                            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
"statusMessage")
      )

instance Prelude.Hashable ApplicationComponentDetail where
  hashWithSalt :: Int -> ApplicationComponentDetail -> Int
hashWithSalt Int
_salt ApplicationComponentDetail' {Maybe Bool
Maybe [AntipatternSeveritySummary]
Maybe [SourceCodeRepository]
Maybe Text
Maybe POSIX
Maybe AntipatternReportStatus
Maybe AppType
Maybe AppUnitError
Maybe DatabaseConfigDetail
Maybe InclusionStatus
Maybe ResourceSubType
Maybe RuntimeAnalysisStatus
Maybe S3Object
Maybe SrcCodeOrDbAnalysisStatus
Maybe RecommendationSet
statusMessage :: Maybe Text
sourceCodeRepositories :: Maybe [SourceCodeRepository]
runtimeStatusMessage :: Maybe Text
runtimeStatus :: Maybe RuntimeAnalysisStatus
resourceSubType :: Maybe ResourceSubType
recommendationSet :: Maybe RecommendationSet
osVersion :: Maybe Text
osDriver :: Maybe Text
name :: Maybe Text
moreServerAssociationExists :: Maybe Bool
listAntipatternSeveritySummary :: Maybe [AntipatternSeveritySummary]
lastAnalyzedTimestamp :: Maybe POSIX
inclusionStatus :: Maybe InclusionStatus
id :: Maybe Text
databaseConfigDetail :: Maybe DatabaseConfigDetail
associatedServerId :: Maybe Text
appUnitError :: Maybe AppUnitError
appType :: Maybe AppType
antipatternReportStatusMessage :: Maybe Text
antipatternReportStatus :: Maybe AntipatternReportStatus
antipatternReportS3Object :: Maybe S3Object
analysisStatus :: Maybe SrcCodeOrDbAnalysisStatus
$sel:statusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:sourceCodeRepositories:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe [SourceCodeRepository]
$sel:runtimeStatusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:runtimeStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe RuntimeAnalysisStatus
$sel:resourceSubType:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe ResourceSubType
$sel:recommendationSet:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe RecommendationSet
$sel:osVersion:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:osDriver:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:name:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:moreServerAssociationExists:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Bool
$sel:listAntipatternSeveritySummary:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe [AntipatternSeveritySummary]
$sel:lastAnalyzedTimestamp:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe POSIX
$sel:inclusionStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe InclusionStatus
$sel:id:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:databaseConfigDetail:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe DatabaseConfigDetail
$sel:associatedServerId:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:appUnitError:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AppUnitError
$sel:appType:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AppType
$sel:antipatternReportStatusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:antipatternReportStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AntipatternReportStatus
$sel:antipatternReportS3Object:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe S3Object
$sel:analysisStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe SrcCodeOrDbAnalysisStatus
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe SrcCodeOrDbAnalysisStatus
analysisStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe S3Object
antipatternReportS3Object
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AntipatternReportStatus
antipatternReportStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
antipatternReportStatusMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AppType
appType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AppUnitError
appUnitError
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
associatedServerId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DatabaseConfigDetail
databaseConfigDetail
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
id
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InclusionStatus
inclusionStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
lastAnalyzedTimestamp
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [AntipatternSeveritySummary]
listAntipatternSeveritySummary
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
moreServerAssociationExists
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
osDriver
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
osVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RecommendationSet
recommendationSet
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ResourceSubType
resourceSubType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RuntimeAnalysisStatus
runtimeStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
runtimeStatusMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [SourceCodeRepository]
sourceCodeRepositories
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
statusMessage

instance Prelude.NFData ApplicationComponentDetail where
  rnf :: ApplicationComponentDetail -> ()
rnf ApplicationComponentDetail' {Maybe Bool
Maybe [AntipatternSeveritySummary]
Maybe [SourceCodeRepository]
Maybe Text
Maybe POSIX
Maybe AntipatternReportStatus
Maybe AppType
Maybe AppUnitError
Maybe DatabaseConfigDetail
Maybe InclusionStatus
Maybe ResourceSubType
Maybe RuntimeAnalysisStatus
Maybe S3Object
Maybe SrcCodeOrDbAnalysisStatus
Maybe RecommendationSet
statusMessage :: Maybe Text
sourceCodeRepositories :: Maybe [SourceCodeRepository]
runtimeStatusMessage :: Maybe Text
runtimeStatus :: Maybe RuntimeAnalysisStatus
resourceSubType :: Maybe ResourceSubType
recommendationSet :: Maybe RecommendationSet
osVersion :: Maybe Text
osDriver :: Maybe Text
name :: Maybe Text
moreServerAssociationExists :: Maybe Bool
listAntipatternSeveritySummary :: Maybe [AntipatternSeveritySummary]
lastAnalyzedTimestamp :: Maybe POSIX
inclusionStatus :: Maybe InclusionStatus
id :: Maybe Text
databaseConfigDetail :: Maybe DatabaseConfigDetail
associatedServerId :: Maybe Text
appUnitError :: Maybe AppUnitError
appType :: Maybe AppType
antipatternReportStatusMessage :: Maybe Text
antipatternReportStatus :: Maybe AntipatternReportStatus
antipatternReportS3Object :: Maybe S3Object
analysisStatus :: Maybe SrcCodeOrDbAnalysisStatus
$sel:statusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:sourceCodeRepositories:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe [SourceCodeRepository]
$sel:runtimeStatusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:runtimeStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe RuntimeAnalysisStatus
$sel:resourceSubType:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe ResourceSubType
$sel:recommendationSet:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe RecommendationSet
$sel:osVersion:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:osDriver:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:name:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:moreServerAssociationExists:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Bool
$sel:listAntipatternSeveritySummary:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe [AntipatternSeveritySummary]
$sel:lastAnalyzedTimestamp:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe POSIX
$sel:inclusionStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe InclusionStatus
$sel:id:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:databaseConfigDetail:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe DatabaseConfigDetail
$sel:associatedServerId:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:appUnitError:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AppUnitError
$sel:appType:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AppType
$sel:antipatternReportStatusMessage:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe Text
$sel:antipatternReportStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe AntipatternReportStatus
$sel:antipatternReportS3Object:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe S3Object
$sel:analysisStatus:ApplicationComponentDetail' :: ApplicationComponentDetail -> Maybe SrcCodeOrDbAnalysisStatus
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe SrcCodeOrDbAnalysisStatus
analysisStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3Object
antipatternReportS3Object
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AntipatternReportStatus
antipatternReportStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
antipatternReportStatusMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AppType
appType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AppUnitError
appUnitError
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
associatedServerId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DatabaseConfigDetail
databaseConfigDetail
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
id
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InclusionStatus
inclusionStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
lastAnalyzedTimestamp
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [AntipatternSeveritySummary]
listAntipatternSeveritySummary
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
moreServerAssociationExists
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
osDriver
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
osVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RecommendationSet
recommendationSet
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ResourceSubType
resourceSubType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RuntimeAnalysisStatus
runtimeStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe Text
runtimeStatusMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        Maybe [SourceCodeRepository]
sourceCodeRepositories
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
statusMessage