packages feed

amazonka-migrationhubstrategy-2.0: gen/Amazonka/MigrationHubStrategy/Types/ServerDetail.hs

{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.MigrationHubStrategy.Types.ServerDetail
-- 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.ServerDetail 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.RecommendationSet
import Amazonka.MigrationHubStrategy.Types.RunTimeAssessmentStatus
import Amazonka.MigrationHubStrategy.Types.S3Object
import Amazonka.MigrationHubStrategy.Types.ServerError
import Amazonka.MigrationHubStrategy.Types.StrategySummary
import Amazonka.MigrationHubStrategy.Types.SystemInfo
import qualified Amazonka.Prelude as Prelude

-- | Detailed information about a server.
--
-- /See:/ 'newServerDetail' smart constructor.
data ServerDetail = ServerDetail'
  { -- | The S3 bucket name and Amazon S3 key name for anti-pattern report.
    antipatternReportS3Object :: Prelude.Maybe S3Object,
    -- | The status of the anti-pattern report generation.
    antipatternReportStatus :: Prelude.Maybe AntipatternReportStatus,
    -- | A message about the status of the anti-pattern report generation.
    antipatternReportStatusMessage :: Prelude.Maybe Prelude.Text,
    -- | A list of strategy summaries.
    applicationComponentStrategySummary :: Prelude.Maybe [StrategySummary],
    -- | The status of assessment for the server.
    dataCollectionStatus :: Prelude.Maybe RunTimeAssessmentStatus,
    -- | The server ID.
    id :: Prelude.Maybe Prelude.Text,
    -- | The timestamp of when the server was assessed.
    lastAnalyzedTimestamp :: Prelude.Maybe Data.POSIX,
    -- | A list of anti-pattern severity summaries.
    listAntipatternSeveritySummary :: Prelude.Maybe [AntipatternSeveritySummary],
    -- | The name of the server.
    name :: Prelude.Maybe Prelude.Text,
    -- | A set of recommendations.
    recommendationSet :: Prelude.Maybe RecommendationSet,
    -- | The error in server analysis.
    serverError :: Prelude.Maybe ServerError,
    -- | The type of server.
    serverType :: Prelude.Maybe Prelude.Text,
    -- | A message about the status of data collection, which contains detailed
    -- descriptions of any error messages.
    statusMessage :: Prelude.Maybe Prelude.Text,
    -- | System information about the server.
    systemInfo :: Prelude.Maybe SystemInfo
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ServerDetail' 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:
--
-- 'antipatternReportS3Object', 'serverDetail_antipatternReportS3Object' - The S3 bucket name and Amazon S3 key name for anti-pattern report.
--
-- 'antipatternReportStatus', 'serverDetail_antipatternReportStatus' - The status of the anti-pattern report generation.
--
-- 'antipatternReportStatusMessage', 'serverDetail_antipatternReportStatusMessage' - A message about the status of the anti-pattern report generation.
--
-- 'applicationComponentStrategySummary', 'serverDetail_applicationComponentStrategySummary' - A list of strategy summaries.
--
-- 'dataCollectionStatus', 'serverDetail_dataCollectionStatus' - The status of assessment for the server.
--
-- 'id', 'serverDetail_id' - The server ID.
--
-- 'lastAnalyzedTimestamp', 'serverDetail_lastAnalyzedTimestamp' - The timestamp of when the server was assessed.
--
-- 'listAntipatternSeveritySummary', 'serverDetail_listAntipatternSeveritySummary' - A list of anti-pattern severity summaries.
--
-- 'name', 'serverDetail_name' - The name of the server.
--
-- 'recommendationSet', 'serverDetail_recommendationSet' - A set of recommendations.
--
-- 'serverError', 'serverDetail_serverError' - The error in server analysis.
--
-- 'serverType', 'serverDetail_serverType' - The type of server.
--
-- 'statusMessage', 'serverDetail_statusMessage' - A message about the status of data collection, which contains detailed
-- descriptions of any error messages.
--
-- 'systemInfo', 'serverDetail_systemInfo' - System information about the server.
newServerDetail ::
  ServerDetail
newServerDetail =
  ServerDetail'
    { antipatternReportS3Object =
        Prelude.Nothing,
      antipatternReportStatus = Prelude.Nothing,
      antipatternReportStatusMessage = Prelude.Nothing,
      applicationComponentStrategySummary =
        Prelude.Nothing,
      dataCollectionStatus = Prelude.Nothing,
      id = Prelude.Nothing,
      lastAnalyzedTimestamp = Prelude.Nothing,
      listAntipatternSeveritySummary = Prelude.Nothing,
      name = Prelude.Nothing,
      recommendationSet = Prelude.Nothing,
      serverError = Prelude.Nothing,
      serverType = Prelude.Nothing,
      statusMessage = Prelude.Nothing,
      systemInfo = Prelude.Nothing
    }

-- | The S3 bucket name and Amazon S3 key name for anti-pattern report.
serverDetail_antipatternReportS3Object :: Lens.Lens' ServerDetail (Prelude.Maybe S3Object)
serverDetail_antipatternReportS3Object = Lens.lens (\ServerDetail' {antipatternReportS3Object} -> antipatternReportS3Object) (\s@ServerDetail' {} a -> s {antipatternReportS3Object = a} :: ServerDetail)

-- | The status of the anti-pattern report generation.
serverDetail_antipatternReportStatus :: Lens.Lens' ServerDetail (Prelude.Maybe AntipatternReportStatus)
serverDetail_antipatternReportStatus = Lens.lens (\ServerDetail' {antipatternReportStatus} -> antipatternReportStatus) (\s@ServerDetail' {} a -> s {antipatternReportStatus = a} :: ServerDetail)

-- | A message about the status of the anti-pattern report generation.
serverDetail_antipatternReportStatusMessage :: Lens.Lens' ServerDetail (Prelude.Maybe Prelude.Text)
serverDetail_antipatternReportStatusMessage = Lens.lens (\ServerDetail' {antipatternReportStatusMessage} -> antipatternReportStatusMessage) (\s@ServerDetail' {} a -> s {antipatternReportStatusMessage = a} :: ServerDetail)

-- | A list of strategy summaries.
serverDetail_applicationComponentStrategySummary :: Lens.Lens' ServerDetail (Prelude.Maybe [StrategySummary])
serverDetail_applicationComponentStrategySummary = Lens.lens (\ServerDetail' {applicationComponentStrategySummary} -> applicationComponentStrategySummary) (\s@ServerDetail' {} a -> s {applicationComponentStrategySummary = a} :: ServerDetail) Prelude.. Lens.mapping Lens.coerced

-- | The status of assessment for the server.
serverDetail_dataCollectionStatus :: Lens.Lens' ServerDetail (Prelude.Maybe RunTimeAssessmentStatus)
serverDetail_dataCollectionStatus = Lens.lens (\ServerDetail' {dataCollectionStatus} -> dataCollectionStatus) (\s@ServerDetail' {} a -> s {dataCollectionStatus = a} :: ServerDetail)

-- | The server ID.
serverDetail_id :: Lens.Lens' ServerDetail (Prelude.Maybe Prelude.Text)
serverDetail_id = Lens.lens (\ServerDetail' {id} -> id) (\s@ServerDetail' {} a -> s {id = a} :: ServerDetail)

-- | The timestamp of when the server was assessed.
serverDetail_lastAnalyzedTimestamp :: Lens.Lens' ServerDetail (Prelude.Maybe Prelude.UTCTime)
serverDetail_lastAnalyzedTimestamp = Lens.lens (\ServerDetail' {lastAnalyzedTimestamp} -> lastAnalyzedTimestamp) (\s@ServerDetail' {} a -> s {lastAnalyzedTimestamp = a} :: ServerDetail) Prelude.. Lens.mapping Data._Time

-- | A list of anti-pattern severity summaries.
serverDetail_listAntipatternSeveritySummary :: Lens.Lens' ServerDetail (Prelude.Maybe [AntipatternSeveritySummary])
serverDetail_listAntipatternSeveritySummary = Lens.lens (\ServerDetail' {listAntipatternSeveritySummary} -> listAntipatternSeveritySummary) (\s@ServerDetail' {} a -> s {listAntipatternSeveritySummary = a} :: ServerDetail) Prelude.. Lens.mapping Lens.coerced

-- | The name of the server.
serverDetail_name :: Lens.Lens' ServerDetail (Prelude.Maybe Prelude.Text)
serverDetail_name = Lens.lens (\ServerDetail' {name} -> name) (\s@ServerDetail' {} a -> s {name = a} :: ServerDetail)

-- | A set of recommendations.
serverDetail_recommendationSet :: Lens.Lens' ServerDetail (Prelude.Maybe RecommendationSet)
serverDetail_recommendationSet = Lens.lens (\ServerDetail' {recommendationSet} -> recommendationSet) (\s@ServerDetail' {} a -> s {recommendationSet = a} :: ServerDetail)

-- | The error in server analysis.
serverDetail_serverError :: Lens.Lens' ServerDetail (Prelude.Maybe ServerError)
serverDetail_serverError = Lens.lens (\ServerDetail' {serverError} -> serverError) (\s@ServerDetail' {} a -> s {serverError = a} :: ServerDetail)

-- | The type of server.
serverDetail_serverType :: Lens.Lens' ServerDetail (Prelude.Maybe Prelude.Text)
serverDetail_serverType = Lens.lens (\ServerDetail' {serverType} -> serverType) (\s@ServerDetail' {} a -> s {serverType = a} :: ServerDetail)

-- | A message about the status of data collection, which contains detailed
-- descriptions of any error messages.
serverDetail_statusMessage :: Lens.Lens' ServerDetail (Prelude.Maybe Prelude.Text)
serverDetail_statusMessage = Lens.lens (\ServerDetail' {statusMessage} -> statusMessage) (\s@ServerDetail' {} a -> s {statusMessage = a} :: ServerDetail)

-- | System information about the server.
serverDetail_systemInfo :: Lens.Lens' ServerDetail (Prelude.Maybe SystemInfo)
serverDetail_systemInfo = Lens.lens (\ServerDetail' {systemInfo} -> systemInfo) (\s@ServerDetail' {} a -> s {systemInfo = a} :: ServerDetail)

instance Data.FromJSON ServerDetail where
  parseJSON =
    Data.withObject
      "ServerDetail"
      ( \x ->
          ServerDetail'
            Prelude.<$> (x Data..:? "antipatternReportS3Object")
            Prelude.<*> (x Data..:? "antipatternReportStatus")
            Prelude.<*> (x Data..:? "antipatternReportStatusMessage")
            Prelude.<*> ( x
                            Data..:? "applicationComponentStrategySummary"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "dataCollectionStatus")
            Prelude.<*> (x Data..:? "id")
            Prelude.<*> (x Data..:? "lastAnalyzedTimestamp")
            Prelude.<*> ( x
                            Data..:? "listAntipatternSeveritySummary"
                            Data..!= Prelude.mempty
                        )
            Prelude.<*> (x Data..:? "name")
            Prelude.<*> (x Data..:? "recommendationSet")
            Prelude.<*> (x Data..:? "serverError")
            Prelude.<*> (x Data..:? "serverType")
            Prelude.<*> (x Data..:? "statusMessage")
            Prelude.<*> (x Data..:? "systemInfo")
      )

instance Prelude.Hashable ServerDetail where
  hashWithSalt _salt ServerDetail' {..} =
    _salt
      `Prelude.hashWithSalt` antipatternReportS3Object
      `Prelude.hashWithSalt` antipatternReportStatus
      `Prelude.hashWithSalt` antipatternReportStatusMessage
      `Prelude.hashWithSalt` applicationComponentStrategySummary
      `Prelude.hashWithSalt` dataCollectionStatus
      `Prelude.hashWithSalt` id
      `Prelude.hashWithSalt` lastAnalyzedTimestamp
      `Prelude.hashWithSalt` listAntipatternSeveritySummary
      `Prelude.hashWithSalt` name
      `Prelude.hashWithSalt` recommendationSet
      `Prelude.hashWithSalt` serverError
      `Prelude.hashWithSalt` serverType
      `Prelude.hashWithSalt` statusMessage
      `Prelude.hashWithSalt` systemInfo

instance Prelude.NFData ServerDetail where
  rnf ServerDetail' {..} =
    Prelude.rnf antipatternReportS3Object
      `Prelude.seq` Prelude.rnf antipatternReportStatus
      `Prelude.seq` Prelude.rnf antipatternReportStatusMessage
      `Prelude.seq` Prelude.rnf applicationComponentStrategySummary
      `Prelude.seq` Prelude.rnf dataCollectionStatus
      `Prelude.seq` Prelude.rnf id
      `Prelude.seq` Prelude.rnf lastAnalyzedTimestamp
      `Prelude.seq` Prelude.rnf listAntipatternSeveritySummary
      `Prelude.seq` Prelude.rnf name
      `Prelude.seq` Prelude.rnf recommendationSet
      `Prelude.seq` Prelude.rnf serverError
      `Prelude.seq` Prelude.rnf serverType
      `Prelude.seq` Prelude.rnf statusMessage
      `Prelude.seq` Prelude.rnf systemInfo