{-# 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.ConfigurationSummary
-- 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.ConfigurationSummary 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.IPAddressBasedRemoteInfo
import Amazonka.MigrationHubStrategy.Types.PipelineInfo
import Amazonka.MigrationHubStrategy.Types.RemoteSourceCodeAnalysisServerInfo
import Amazonka.MigrationHubStrategy.Types.VcenterBasedRemoteInfo
import Amazonka.MigrationHubStrategy.Types.VersionControlInfo
import qualified Amazonka.Prelude as Prelude

-- | Summary of the collector configuration.
--
-- /See:/ 'newConfigurationSummary' smart constructor.
data ConfigurationSummary = ConfigurationSummary'
  { -- | IP address based configurations.
    ConfigurationSummary -> Maybe [IPAddressBasedRemoteInfo]
ipAddressBasedRemoteInfoList :: Prelude.Maybe [IPAddressBasedRemoteInfo],
    -- | The list of pipeline info configurations.
    ConfigurationSummary -> Maybe [PipelineInfo]
pipelineInfoList :: Prelude.Maybe [PipelineInfo],
    -- | Info about the remote server source code configuration.
    ConfigurationSummary -> Maybe RemoteSourceCodeAnalysisServerInfo
remoteSourceCodeAnalysisServerInfo :: Prelude.Maybe RemoteSourceCodeAnalysisServerInfo,
    -- | The list of vCenter configurations.
    ConfigurationSummary -> Maybe [VcenterBasedRemoteInfo]
vcenterBasedRemoteInfoList :: Prelude.Maybe [VcenterBasedRemoteInfo],
    -- | The list of the version control configurations.
    ConfigurationSummary -> Maybe [VersionControlInfo]
versionControlInfoList :: Prelude.Maybe [VersionControlInfo]
  }
  deriving (ConfigurationSummary -> ConfigurationSummary -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ConfigurationSummary -> ConfigurationSummary -> Bool
$c/= :: ConfigurationSummary -> ConfigurationSummary -> Bool
== :: ConfigurationSummary -> ConfigurationSummary -> Bool
$c== :: ConfigurationSummary -> ConfigurationSummary -> Bool
Prelude.Eq, ReadPrec [ConfigurationSummary]
ReadPrec ConfigurationSummary
Int -> ReadS ConfigurationSummary
ReadS [ConfigurationSummary]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ConfigurationSummary]
$creadListPrec :: ReadPrec [ConfigurationSummary]
readPrec :: ReadPrec ConfigurationSummary
$creadPrec :: ReadPrec ConfigurationSummary
readList :: ReadS [ConfigurationSummary]
$creadList :: ReadS [ConfigurationSummary]
readsPrec :: Int -> ReadS ConfigurationSummary
$creadsPrec :: Int -> ReadS ConfigurationSummary
Prelude.Read, Int -> ConfigurationSummary -> ShowS
[ConfigurationSummary] -> ShowS
ConfigurationSummary -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ConfigurationSummary] -> ShowS
$cshowList :: [ConfigurationSummary] -> ShowS
show :: ConfigurationSummary -> String
$cshow :: ConfigurationSummary -> String
showsPrec :: Int -> ConfigurationSummary -> ShowS
$cshowsPrec :: Int -> ConfigurationSummary -> ShowS
Prelude.Show, forall x. Rep ConfigurationSummary x -> ConfigurationSummary
forall x. ConfigurationSummary -> Rep ConfigurationSummary x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ConfigurationSummary x -> ConfigurationSummary
$cfrom :: forall x. ConfigurationSummary -> Rep ConfigurationSummary x
Prelude.Generic)

-- |
-- Create a value of 'ConfigurationSummary' 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:
--
-- 'ipAddressBasedRemoteInfoList', 'configurationSummary_ipAddressBasedRemoteInfoList' - IP address based configurations.
--
-- 'pipelineInfoList', 'configurationSummary_pipelineInfoList' - The list of pipeline info configurations.
--
-- 'remoteSourceCodeAnalysisServerInfo', 'configurationSummary_remoteSourceCodeAnalysisServerInfo' - Info about the remote server source code configuration.
--
-- 'vcenterBasedRemoteInfoList', 'configurationSummary_vcenterBasedRemoteInfoList' - The list of vCenter configurations.
--
-- 'versionControlInfoList', 'configurationSummary_versionControlInfoList' - The list of the version control configurations.
newConfigurationSummary ::
  ConfigurationSummary
newConfigurationSummary :: ConfigurationSummary
newConfigurationSummary =
  ConfigurationSummary'
    { $sel:ipAddressBasedRemoteInfoList:ConfigurationSummary' :: Maybe [IPAddressBasedRemoteInfo]
ipAddressBasedRemoteInfoList =
        forall a. Maybe a
Prelude.Nothing,
      $sel:pipelineInfoList:ConfigurationSummary' :: Maybe [PipelineInfo]
pipelineInfoList = forall a. Maybe a
Prelude.Nothing,
      $sel:remoteSourceCodeAnalysisServerInfo:ConfigurationSummary' :: Maybe RemoteSourceCodeAnalysisServerInfo
remoteSourceCodeAnalysisServerInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:vcenterBasedRemoteInfoList:ConfigurationSummary' :: Maybe [VcenterBasedRemoteInfo]
vcenterBasedRemoteInfoList = forall a. Maybe a
Prelude.Nothing,
      $sel:versionControlInfoList:ConfigurationSummary' :: Maybe [VersionControlInfo]
versionControlInfoList = forall a. Maybe a
Prelude.Nothing
    }

-- | IP address based configurations.
configurationSummary_ipAddressBasedRemoteInfoList :: Lens.Lens' ConfigurationSummary (Prelude.Maybe [IPAddressBasedRemoteInfo])
configurationSummary_ipAddressBasedRemoteInfoList :: Lens' ConfigurationSummary (Maybe [IPAddressBasedRemoteInfo])
configurationSummary_ipAddressBasedRemoteInfoList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationSummary' {Maybe [IPAddressBasedRemoteInfo]
ipAddressBasedRemoteInfoList :: Maybe [IPAddressBasedRemoteInfo]
$sel:ipAddressBasedRemoteInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [IPAddressBasedRemoteInfo]
ipAddressBasedRemoteInfoList} -> Maybe [IPAddressBasedRemoteInfo]
ipAddressBasedRemoteInfoList) (\s :: ConfigurationSummary
s@ConfigurationSummary' {} Maybe [IPAddressBasedRemoteInfo]
a -> ConfigurationSummary
s {$sel:ipAddressBasedRemoteInfoList:ConfigurationSummary' :: Maybe [IPAddressBasedRemoteInfo]
ipAddressBasedRemoteInfoList = Maybe [IPAddressBasedRemoteInfo]
a} :: ConfigurationSummary) 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

-- | The list of pipeline info configurations.
configurationSummary_pipelineInfoList :: Lens.Lens' ConfigurationSummary (Prelude.Maybe [PipelineInfo])
configurationSummary_pipelineInfoList :: Lens' ConfigurationSummary (Maybe [PipelineInfo])
configurationSummary_pipelineInfoList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationSummary' {Maybe [PipelineInfo]
pipelineInfoList :: Maybe [PipelineInfo]
$sel:pipelineInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [PipelineInfo]
pipelineInfoList} -> Maybe [PipelineInfo]
pipelineInfoList) (\s :: ConfigurationSummary
s@ConfigurationSummary' {} Maybe [PipelineInfo]
a -> ConfigurationSummary
s {$sel:pipelineInfoList:ConfigurationSummary' :: Maybe [PipelineInfo]
pipelineInfoList = Maybe [PipelineInfo]
a} :: ConfigurationSummary) 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

-- | Info about the remote server source code configuration.
configurationSummary_remoteSourceCodeAnalysisServerInfo :: Lens.Lens' ConfigurationSummary (Prelude.Maybe RemoteSourceCodeAnalysisServerInfo)
configurationSummary_remoteSourceCodeAnalysisServerInfo :: Lens'
  ConfigurationSummary (Maybe RemoteSourceCodeAnalysisServerInfo)
configurationSummary_remoteSourceCodeAnalysisServerInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationSummary' {Maybe RemoteSourceCodeAnalysisServerInfo
remoteSourceCodeAnalysisServerInfo :: Maybe RemoteSourceCodeAnalysisServerInfo
$sel:remoteSourceCodeAnalysisServerInfo:ConfigurationSummary' :: ConfigurationSummary -> Maybe RemoteSourceCodeAnalysisServerInfo
remoteSourceCodeAnalysisServerInfo} -> Maybe RemoteSourceCodeAnalysisServerInfo
remoteSourceCodeAnalysisServerInfo) (\s :: ConfigurationSummary
s@ConfigurationSummary' {} Maybe RemoteSourceCodeAnalysisServerInfo
a -> ConfigurationSummary
s {$sel:remoteSourceCodeAnalysisServerInfo:ConfigurationSummary' :: Maybe RemoteSourceCodeAnalysisServerInfo
remoteSourceCodeAnalysisServerInfo = Maybe RemoteSourceCodeAnalysisServerInfo
a} :: ConfigurationSummary)

-- | The list of vCenter configurations.
configurationSummary_vcenterBasedRemoteInfoList :: Lens.Lens' ConfigurationSummary (Prelude.Maybe [VcenterBasedRemoteInfo])
configurationSummary_vcenterBasedRemoteInfoList :: Lens' ConfigurationSummary (Maybe [VcenterBasedRemoteInfo])
configurationSummary_vcenterBasedRemoteInfoList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationSummary' {Maybe [VcenterBasedRemoteInfo]
vcenterBasedRemoteInfoList :: Maybe [VcenterBasedRemoteInfo]
$sel:vcenterBasedRemoteInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [VcenterBasedRemoteInfo]
vcenterBasedRemoteInfoList} -> Maybe [VcenterBasedRemoteInfo]
vcenterBasedRemoteInfoList) (\s :: ConfigurationSummary
s@ConfigurationSummary' {} Maybe [VcenterBasedRemoteInfo]
a -> ConfigurationSummary
s {$sel:vcenterBasedRemoteInfoList:ConfigurationSummary' :: Maybe [VcenterBasedRemoteInfo]
vcenterBasedRemoteInfoList = Maybe [VcenterBasedRemoteInfo]
a} :: ConfigurationSummary) 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

-- | The list of the version control configurations.
configurationSummary_versionControlInfoList :: Lens.Lens' ConfigurationSummary (Prelude.Maybe [VersionControlInfo])
configurationSummary_versionControlInfoList :: Lens' ConfigurationSummary (Maybe [VersionControlInfo])
configurationSummary_versionControlInfoList = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ConfigurationSummary' {Maybe [VersionControlInfo]
versionControlInfoList :: Maybe [VersionControlInfo]
$sel:versionControlInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [VersionControlInfo]
versionControlInfoList} -> Maybe [VersionControlInfo]
versionControlInfoList) (\s :: ConfigurationSummary
s@ConfigurationSummary' {} Maybe [VersionControlInfo]
a -> ConfigurationSummary
s {$sel:versionControlInfoList:ConfigurationSummary' :: Maybe [VersionControlInfo]
versionControlInfoList = Maybe [VersionControlInfo]
a} :: ConfigurationSummary) 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 ConfigurationSummary where
  parseJSON :: Value -> Parser ConfigurationSummary
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ConfigurationSummary"
      ( \Object
x ->
          Maybe [IPAddressBasedRemoteInfo]
-> Maybe [PipelineInfo]
-> Maybe RemoteSourceCodeAnalysisServerInfo
-> Maybe [VcenterBasedRemoteInfo]
-> Maybe [VersionControlInfo]
-> ConfigurationSummary
ConfigurationSummary'
            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
"ipAddressBasedRemoteInfoList"
                            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
"pipelineInfoList"
                            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
"remoteSourceCodeAnalysisServerInfo")
            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
"vcenterBasedRemoteInfoList"
                            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
"versionControlInfoList"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance Prelude.Hashable ConfigurationSummary where
  hashWithSalt :: Int -> ConfigurationSummary -> Int
hashWithSalt Int
_salt ConfigurationSummary' {Maybe [IPAddressBasedRemoteInfo]
Maybe [PipelineInfo]
Maybe [VcenterBasedRemoteInfo]
Maybe [VersionControlInfo]
Maybe RemoteSourceCodeAnalysisServerInfo
versionControlInfoList :: Maybe [VersionControlInfo]
vcenterBasedRemoteInfoList :: Maybe [VcenterBasedRemoteInfo]
remoteSourceCodeAnalysisServerInfo :: Maybe RemoteSourceCodeAnalysisServerInfo
pipelineInfoList :: Maybe [PipelineInfo]
ipAddressBasedRemoteInfoList :: Maybe [IPAddressBasedRemoteInfo]
$sel:versionControlInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [VersionControlInfo]
$sel:vcenterBasedRemoteInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [VcenterBasedRemoteInfo]
$sel:remoteSourceCodeAnalysisServerInfo:ConfigurationSummary' :: ConfigurationSummary -> Maybe RemoteSourceCodeAnalysisServerInfo
$sel:pipelineInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [PipelineInfo]
$sel:ipAddressBasedRemoteInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [IPAddressBasedRemoteInfo]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [IPAddressBasedRemoteInfo]
ipAddressBasedRemoteInfoList
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [PipelineInfo]
pipelineInfoList
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe RemoteSourceCodeAnalysisServerInfo
remoteSourceCodeAnalysisServerInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [VcenterBasedRemoteInfo]
vcenterBasedRemoteInfoList
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [VersionControlInfo]
versionControlInfoList

instance Prelude.NFData ConfigurationSummary where
  rnf :: ConfigurationSummary -> ()
rnf ConfigurationSummary' {Maybe [IPAddressBasedRemoteInfo]
Maybe [PipelineInfo]
Maybe [VcenterBasedRemoteInfo]
Maybe [VersionControlInfo]
Maybe RemoteSourceCodeAnalysisServerInfo
versionControlInfoList :: Maybe [VersionControlInfo]
vcenterBasedRemoteInfoList :: Maybe [VcenterBasedRemoteInfo]
remoteSourceCodeAnalysisServerInfo :: Maybe RemoteSourceCodeAnalysisServerInfo
pipelineInfoList :: Maybe [PipelineInfo]
ipAddressBasedRemoteInfoList :: Maybe [IPAddressBasedRemoteInfo]
$sel:versionControlInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [VersionControlInfo]
$sel:vcenterBasedRemoteInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [VcenterBasedRemoteInfo]
$sel:remoteSourceCodeAnalysisServerInfo:ConfigurationSummary' :: ConfigurationSummary -> Maybe RemoteSourceCodeAnalysisServerInfo
$sel:pipelineInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [PipelineInfo]
$sel:ipAddressBasedRemoteInfoList:ConfigurationSummary' :: ConfigurationSummary -> Maybe [IPAddressBasedRemoteInfo]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [IPAddressBasedRemoteInfo]
ipAddressBasedRemoteInfoList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [PipelineInfo]
pipelineInfoList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe RemoteSourceCodeAnalysisServerInfo
remoteSourceCodeAnalysisServerInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [VcenterBasedRemoteInfo]
vcenterBasedRemoteInfoList
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [VersionControlInfo]
versionControlInfoList