{-# 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.Kafka.Types.MutableClusterInfo
-- 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.Kafka.Types.MutableClusterInfo where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.Kafka.Types.BrokerEBSVolumeInfo
import Amazonka.Kafka.Types.ClientAuthentication
import Amazonka.Kafka.Types.ConfigurationInfo
import Amazonka.Kafka.Types.ConnectivityInfo
import Amazonka.Kafka.Types.EncryptionInfo
import Amazonka.Kafka.Types.EnhancedMonitoring
import Amazonka.Kafka.Types.LoggingInfo
import Amazonka.Kafka.Types.OpenMonitoring
import Amazonka.Kafka.Types.StorageMode
import qualified Amazonka.Prelude as Prelude

-- | Information about cluster attributes that can be updated via update
-- APIs.
--
-- /See:/ 'newMutableClusterInfo' smart constructor.
data MutableClusterInfo = MutableClusterInfo'
  { -- | Specifies the size of the EBS volume and the ID of the associated
    -- broker.
    MutableClusterInfo -> Maybe [BrokerEBSVolumeInfo]
brokerEBSVolumeInfo :: Prelude.Maybe [BrokerEBSVolumeInfo],
    -- | Includes all client authentication information.
    MutableClusterInfo -> Maybe ClientAuthentication
clientAuthentication :: Prelude.Maybe ClientAuthentication,
    -- | Information about the changes in the configuration of the brokers.
    MutableClusterInfo -> Maybe ConfigurationInfo
configurationInfo :: Prelude.Maybe ConfigurationInfo,
    -- | Information about the broker access configuration.
    MutableClusterInfo -> Maybe ConnectivityInfo
connectivityInfo :: Prelude.Maybe ConnectivityInfo,
    -- | Includes all encryption-related information.
    MutableClusterInfo -> Maybe EncryptionInfo
encryptionInfo :: Prelude.Maybe EncryptionInfo,
    -- | Specifies which Apache Kafka metrics Amazon MSK gathers and sends to
    -- Amazon CloudWatch for this cluster.
    MutableClusterInfo -> Maybe EnhancedMonitoring
enhancedMonitoring :: Prelude.Maybe EnhancedMonitoring,
    -- | Information about the Amazon MSK broker type.
    MutableClusterInfo -> Maybe Text
instanceType :: Prelude.Maybe Prelude.Text,
    -- | The Apache Kafka version.
    MutableClusterInfo -> Maybe Text
kafkaVersion :: Prelude.Maybe Prelude.Text,
    -- | You can configure your MSK cluster to send broker logs to different
    -- destination types. This is a container for the configuration details
    -- related to broker logs.
    MutableClusterInfo -> Maybe LoggingInfo
loggingInfo :: Prelude.Maybe LoggingInfo,
    -- | The number of broker nodes in the cluster.
    MutableClusterInfo -> Maybe Int
numberOfBrokerNodes :: Prelude.Maybe Prelude.Int,
    -- | The settings for open monitoring.
    MutableClusterInfo -> Maybe OpenMonitoring
openMonitoring :: Prelude.Maybe OpenMonitoring,
    -- | This controls storage mode for supported storage tiers.
    MutableClusterInfo -> Maybe StorageMode
storageMode :: Prelude.Maybe StorageMode
  }
  deriving (MutableClusterInfo -> MutableClusterInfo -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: MutableClusterInfo -> MutableClusterInfo -> Bool
$c/= :: MutableClusterInfo -> MutableClusterInfo -> Bool
== :: MutableClusterInfo -> MutableClusterInfo -> Bool
$c== :: MutableClusterInfo -> MutableClusterInfo -> Bool
Prelude.Eq, ReadPrec [MutableClusterInfo]
ReadPrec MutableClusterInfo
Int -> ReadS MutableClusterInfo
ReadS [MutableClusterInfo]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [MutableClusterInfo]
$creadListPrec :: ReadPrec [MutableClusterInfo]
readPrec :: ReadPrec MutableClusterInfo
$creadPrec :: ReadPrec MutableClusterInfo
readList :: ReadS [MutableClusterInfo]
$creadList :: ReadS [MutableClusterInfo]
readsPrec :: Int -> ReadS MutableClusterInfo
$creadsPrec :: Int -> ReadS MutableClusterInfo
Prelude.Read, Int -> MutableClusterInfo -> ShowS
[MutableClusterInfo] -> ShowS
MutableClusterInfo -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [MutableClusterInfo] -> ShowS
$cshowList :: [MutableClusterInfo] -> ShowS
show :: MutableClusterInfo -> String
$cshow :: MutableClusterInfo -> String
showsPrec :: Int -> MutableClusterInfo -> ShowS
$cshowsPrec :: Int -> MutableClusterInfo -> ShowS
Prelude.Show, forall x. Rep MutableClusterInfo x -> MutableClusterInfo
forall x. MutableClusterInfo -> Rep MutableClusterInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep MutableClusterInfo x -> MutableClusterInfo
$cfrom :: forall x. MutableClusterInfo -> Rep MutableClusterInfo x
Prelude.Generic)

-- |
-- Create a value of 'MutableClusterInfo' 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:
--
-- 'brokerEBSVolumeInfo', 'mutableClusterInfo_brokerEBSVolumeInfo' - Specifies the size of the EBS volume and the ID of the associated
-- broker.
--
-- 'clientAuthentication', 'mutableClusterInfo_clientAuthentication' - Includes all client authentication information.
--
-- 'configurationInfo', 'mutableClusterInfo_configurationInfo' - Information about the changes in the configuration of the brokers.
--
-- 'connectivityInfo', 'mutableClusterInfo_connectivityInfo' - Information about the broker access configuration.
--
-- 'encryptionInfo', 'mutableClusterInfo_encryptionInfo' - Includes all encryption-related information.
--
-- 'enhancedMonitoring', 'mutableClusterInfo_enhancedMonitoring' - Specifies which Apache Kafka metrics Amazon MSK gathers and sends to
-- Amazon CloudWatch for this cluster.
--
-- 'instanceType', 'mutableClusterInfo_instanceType' - Information about the Amazon MSK broker type.
--
-- 'kafkaVersion', 'mutableClusterInfo_kafkaVersion' - The Apache Kafka version.
--
-- 'loggingInfo', 'mutableClusterInfo_loggingInfo' - You can configure your MSK cluster to send broker logs to different
-- destination types. This is a container for the configuration details
-- related to broker logs.
--
-- 'numberOfBrokerNodes', 'mutableClusterInfo_numberOfBrokerNodes' - The number of broker nodes in the cluster.
--
-- 'openMonitoring', 'mutableClusterInfo_openMonitoring' - The settings for open monitoring.
--
-- 'storageMode', 'mutableClusterInfo_storageMode' - This controls storage mode for supported storage tiers.
newMutableClusterInfo ::
  MutableClusterInfo
newMutableClusterInfo :: MutableClusterInfo
newMutableClusterInfo =
  MutableClusterInfo'
    { $sel:brokerEBSVolumeInfo:MutableClusterInfo' :: Maybe [BrokerEBSVolumeInfo]
brokerEBSVolumeInfo =
        forall a. Maybe a
Prelude.Nothing,
      $sel:clientAuthentication:MutableClusterInfo' :: Maybe ClientAuthentication
clientAuthentication = forall a. Maybe a
Prelude.Nothing,
      $sel:configurationInfo:MutableClusterInfo' :: Maybe ConfigurationInfo
configurationInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:connectivityInfo:MutableClusterInfo' :: Maybe ConnectivityInfo
connectivityInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionInfo:MutableClusterInfo' :: Maybe EncryptionInfo
encryptionInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:enhancedMonitoring:MutableClusterInfo' :: Maybe EnhancedMonitoring
enhancedMonitoring = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:MutableClusterInfo' :: Maybe Text
instanceType = forall a. Maybe a
Prelude.Nothing,
      $sel:kafkaVersion:MutableClusterInfo' :: Maybe Text
kafkaVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:loggingInfo:MutableClusterInfo' :: Maybe LoggingInfo
loggingInfo = forall a. Maybe a
Prelude.Nothing,
      $sel:numberOfBrokerNodes:MutableClusterInfo' :: Maybe Int
numberOfBrokerNodes = forall a. Maybe a
Prelude.Nothing,
      $sel:openMonitoring:MutableClusterInfo' :: Maybe OpenMonitoring
openMonitoring = forall a. Maybe a
Prelude.Nothing,
      $sel:storageMode:MutableClusterInfo' :: Maybe StorageMode
storageMode = forall a. Maybe a
Prelude.Nothing
    }

-- | Specifies the size of the EBS volume and the ID of the associated
-- broker.
mutableClusterInfo_brokerEBSVolumeInfo :: Lens.Lens' MutableClusterInfo (Prelude.Maybe [BrokerEBSVolumeInfo])
mutableClusterInfo_brokerEBSVolumeInfo :: Lens' MutableClusterInfo (Maybe [BrokerEBSVolumeInfo])
mutableClusterInfo_brokerEBSVolumeInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe [BrokerEBSVolumeInfo]
brokerEBSVolumeInfo :: Maybe [BrokerEBSVolumeInfo]
$sel:brokerEBSVolumeInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe [BrokerEBSVolumeInfo]
brokerEBSVolumeInfo} -> Maybe [BrokerEBSVolumeInfo]
brokerEBSVolumeInfo) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe [BrokerEBSVolumeInfo]
a -> MutableClusterInfo
s {$sel:brokerEBSVolumeInfo:MutableClusterInfo' :: Maybe [BrokerEBSVolumeInfo]
brokerEBSVolumeInfo = Maybe [BrokerEBSVolumeInfo]
a} :: MutableClusterInfo) 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

-- | Includes all client authentication information.
mutableClusterInfo_clientAuthentication :: Lens.Lens' MutableClusterInfo (Prelude.Maybe ClientAuthentication)
mutableClusterInfo_clientAuthentication :: Lens' MutableClusterInfo (Maybe ClientAuthentication)
mutableClusterInfo_clientAuthentication = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe ClientAuthentication
clientAuthentication :: Maybe ClientAuthentication
$sel:clientAuthentication:MutableClusterInfo' :: MutableClusterInfo -> Maybe ClientAuthentication
clientAuthentication} -> Maybe ClientAuthentication
clientAuthentication) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe ClientAuthentication
a -> MutableClusterInfo
s {$sel:clientAuthentication:MutableClusterInfo' :: Maybe ClientAuthentication
clientAuthentication = Maybe ClientAuthentication
a} :: MutableClusterInfo)

-- | Information about the changes in the configuration of the brokers.
mutableClusterInfo_configurationInfo :: Lens.Lens' MutableClusterInfo (Prelude.Maybe ConfigurationInfo)
mutableClusterInfo_configurationInfo :: Lens' MutableClusterInfo (Maybe ConfigurationInfo)
mutableClusterInfo_configurationInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe ConfigurationInfo
configurationInfo :: Maybe ConfigurationInfo
$sel:configurationInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe ConfigurationInfo
configurationInfo} -> Maybe ConfigurationInfo
configurationInfo) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe ConfigurationInfo
a -> MutableClusterInfo
s {$sel:configurationInfo:MutableClusterInfo' :: Maybe ConfigurationInfo
configurationInfo = Maybe ConfigurationInfo
a} :: MutableClusterInfo)

-- | Information about the broker access configuration.
mutableClusterInfo_connectivityInfo :: Lens.Lens' MutableClusterInfo (Prelude.Maybe ConnectivityInfo)
mutableClusterInfo_connectivityInfo :: Lens' MutableClusterInfo (Maybe ConnectivityInfo)
mutableClusterInfo_connectivityInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe ConnectivityInfo
connectivityInfo :: Maybe ConnectivityInfo
$sel:connectivityInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe ConnectivityInfo
connectivityInfo} -> Maybe ConnectivityInfo
connectivityInfo) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe ConnectivityInfo
a -> MutableClusterInfo
s {$sel:connectivityInfo:MutableClusterInfo' :: Maybe ConnectivityInfo
connectivityInfo = Maybe ConnectivityInfo
a} :: MutableClusterInfo)

-- | Includes all encryption-related information.
mutableClusterInfo_encryptionInfo :: Lens.Lens' MutableClusterInfo (Prelude.Maybe EncryptionInfo)
mutableClusterInfo_encryptionInfo :: Lens' MutableClusterInfo (Maybe EncryptionInfo)
mutableClusterInfo_encryptionInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe EncryptionInfo
encryptionInfo :: Maybe EncryptionInfo
$sel:encryptionInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe EncryptionInfo
encryptionInfo} -> Maybe EncryptionInfo
encryptionInfo) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe EncryptionInfo
a -> MutableClusterInfo
s {$sel:encryptionInfo:MutableClusterInfo' :: Maybe EncryptionInfo
encryptionInfo = Maybe EncryptionInfo
a} :: MutableClusterInfo)

-- | Specifies which Apache Kafka metrics Amazon MSK gathers and sends to
-- Amazon CloudWatch for this cluster.
mutableClusterInfo_enhancedMonitoring :: Lens.Lens' MutableClusterInfo (Prelude.Maybe EnhancedMonitoring)
mutableClusterInfo_enhancedMonitoring :: Lens' MutableClusterInfo (Maybe EnhancedMonitoring)
mutableClusterInfo_enhancedMonitoring = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe EnhancedMonitoring
enhancedMonitoring :: Maybe EnhancedMonitoring
$sel:enhancedMonitoring:MutableClusterInfo' :: MutableClusterInfo -> Maybe EnhancedMonitoring
enhancedMonitoring} -> Maybe EnhancedMonitoring
enhancedMonitoring) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe EnhancedMonitoring
a -> MutableClusterInfo
s {$sel:enhancedMonitoring:MutableClusterInfo' :: Maybe EnhancedMonitoring
enhancedMonitoring = Maybe EnhancedMonitoring
a} :: MutableClusterInfo)

-- | Information about the Amazon MSK broker type.
mutableClusterInfo_instanceType :: Lens.Lens' MutableClusterInfo (Prelude.Maybe Prelude.Text)
mutableClusterInfo_instanceType :: Lens' MutableClusterInfo (Maybe Text)
mutableClusterInfo_instanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe Text
instanceType :: Maybe Text
$sel:instanceType:MutableClusterInfo' :: MutableClusterInfo -> Maybe Text
instanceType} -> Maybe Text
instanceType) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe Text
a -> MutableClusterInfo
s {$sel:instanceType:MutableClusterInfo' :: Maybe Text
instanceType = Maybe Text
a} :: MutableClusterInfo)

-- | The Apache Kafka version.
mutableClusterInfo_kafkaVersion :: Lens.Lens' MutableClusterInfo (Prelude.Maybe Prelude.Text)
mutableClusterInfo_kafkaVersion :: Lens' MutableClusterInfo (Maybe Text)
mutableClusterInfo_kafkaVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe Text
kafkaVersion :: Maybe Text
$sel:kafkaVersion:MutableClusterInfo' :: MutableClusterInfo -> Maybe Text
kafkaVersion} -> Maybe Text
kafkaVersion) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe Text
a -> MutableClusterInfo
s {$sel:kafkaVersion:MutableClusterInfo' :: Maybe Text
kafkaVersion = Maybe Text
a} :: MutableClusterInfo)

-- | You can configure your MSK cluster to send broker logs to different
-- destination types. This is a container for the configuration details
-- related to broker logs.
mutableClusterInfo_loggingInfo :: Lens.Lens' MutableClusterInfo (Prelude.Maybe LoggingInfo)
mutableClusterInfo_loggingInfo :: Lens' MutableClusterInfo (Maybe LoggingInfo)
mutableClusterInfo_loggingInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe LoggingInfo
loggingInfo :: Maybe LoggingInfo
$sel:loggingInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe LoggingInfo
loggingInfo} -> Maybe LoggingInfo
loggingInfo) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe LoggingInfo
a -> MutableClusterInfo
s {$sel:loggingInfo:MutableClusterInfo' :: Maybe LoggingInfo
loggingInfo = Maybe LoggingInfo
a} :: MutableClusterInfo)

-- | The number of broker nodes in the cluster.
mutableClusterInfo_numberOfBrokerNodes :: Lens.Lens' MutableClusterInfo (Prelude.Maybe Prelude.Int)
mutableClusterInfo_numberOfBrokerNodes :: Lens' MutableClusterInfo (Maybe Int)
mutableClusterInfo_numberOfBrokerNodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe Int
numberOfBrokerNodes :: Maybe Int
$sel:numberOfBrokerNodes:MutableClusterInfo' :: MutableClusterInfo -> Maybe Int
numberOfBrokerNodes} -> Maybe Int
numberOfBrokerNodes) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe Int
a -> MutableClusterInfo
s {$sel:numberOfBrokerNodes:MutableClusterInfo' :: Maybe Int
numberOfBrokerNodes = Maybe Int
a} :: MutableClusterInfo)

-- | The settings for open monitoring.
mutableClusterInfo_openMonitoring :: Lens.Lens' MutableClusterInfo (Prelude.Maybe OpenMonitoring)
mutableClusterInfo_openMonitoring :: Lens' MutableClusterInfo (Maybe OpenMonitoring)
mutableClusterInfo_openMonitoring = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe OpenMonitoring
openMonitoring :: Maybe OpenMonitoring
$sel:openMonitoring:MutableClusterInfo' :: MutableClusterInfo -> Maybe OpenMonitoring
openMonitoring} -> Maybe OpenMonitoring
openMonitoring) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe OpenMonitoring
a -> MutableClusterInfo
s {$sel:openMonitoring:MutableClusterInfo' :: Maybe OpenMonitoring
openMonitoring = Maybe OpenMonitoring
a} :: MutableClusterInfo)

-- | This controls storage mode for supported storage tiers.
mutableClusterInfo_storageMode :: Lens.Lens' MutableClusterInfo (Prelude.Maybe StorageMode)
mutableClusterInfo_storageMode :: Lens' MutableClusterInfo (Maybe StorageMode)
mutableClusterInfo_storageMode = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\MutableClusterInfo' {Maybe StorageMode
storageMode :: Maybe StorageMode
$sel:storageMode:MutableClusterInfo' :: MutableClusterInfo -> Maybe StorageMode
storageMode} -> Maybe StorageMode
storageMode) (\s :: MutableClusterInfo
s@MutableClusterInfo' {} Maybe StorageMode
a -> MutableClusterInfo
s {$sel:storageMode:MutableClusterInfo' :: Maybe StorageMode
storageMode = Maybe StorageMode
a} :: MutableClusterInfo)

instance Data.FromJSON MutableClusterInfo where
  parseJSON :: Value -> Parser MutableClusterInfo
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"MutableClusterInfo"
      ( \Object
x ->
          Maybe [BrokerEBSVolumeInfo]
-> Maybe ClientAuthentication
-> Maybe ConfigurationInfo
-> Maybe ConnectivityInfo
-> Maybe EncryptionInfo
-> Maybe EnhancedMonitoring
-> Maybe Text
-> Maybe Text
-> Maybe LoggingInfo
-> Maybe Int
-> Maybe OpenMonitoring
-> Maybe StorageMode
-> MutableClusterInfo
MutableClusterInfo'
            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
"brokerEBSVolumeInfo"
                            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
"clientAuthentication")
            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
"configurationInfo")
            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
"connectivityInfo")
            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
"encryptionInfo")
            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
"enhancedMonitoring")
            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
"instanceType")
            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
"kafkaVersion")
            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
"loggingInfo")
            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
"numberOfBrokerNodes")
            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
"openMonitoring")
            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
"storageMode")
      )

instance Prelude.Hashable MutableClusterInfo where
  hashWithSalt :: Int -> MutableClusterInfo -> Int
hashWithSalt Int
_salt MutableClusterInfo' {Maybe Int
Maybe [BrokerEBSVolumeInfo]
Maybe Text
Maybe ConfigurationInfo
Maybe EncryptionInfo
Maybe EnhancedMonitoring
Maybe OpenMonitoring
Maybe ConnectivityInfo
Maybe LoggingInfo
Maybe StorageMode
Maybe ClientAuthentication
storageMode :: Maybe StorageMode
openMonitoring :: Maybe OpenMonitoring
numberOfBrokerNodes :: Maybe Int
loggingInfo :: Maybe LoggingInfo
kafkaVersion :: Maybe Text
instanceType :: Maybe Text
enhancedMonitoring :: Maybe EnhancedMonitoring
encryptionInfo :: Maybe EncryptionInfo
connectivityInfo :: Maybe ConnectivityInfo
configurationInfo :: Maybe ConfigurationInfo
clientAuthentication :: Maybe ClientAuthentication
brokerEBSVolumeInfo :: Maybe [BrokerEBSVolumeInfo]
$sel:storageMode:MutableClusterInfo' :: MutableClusterInfo -> Maybe StorageMode
$sel:openMonitoring:MutableClusterInfo' :: MutableClusterInfo -> Maybe OpenMonitoring
$sel:numberOfBrokerNodes:MutableClusterInfo' :: MutableClusterInfo -> Maybe Int
$sel:loggingInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe LoggingInfo
$sel:kafkaVersion:MutableClusterInfo' :: MutableClusterInfo -> Maybe Text
$sel:instanceType:MutableClusterInfo' :: MutableClusterInfo -> Maybe Text
$sel:enhancedMonitoring:MutableClusterInfo' :: MutableClusterInfo -> Maybe EnhancedMonitoring
$sel:encryptionInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe EncryptionInfo
$sel:connectivityInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe ConnectivityInfo
$sel:configurationInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe ConfigurationInfo
$sel:clientAuthentication:MutableClusterInfo' :: MutableClusterInfo -> Maybe ClientAuthentication
$sel:brokerEBSVolumeInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe [BrokerEBSVolumeInfo]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [BrokerEBSVolumeInfo]
brokerEBSVolumeInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ClientAuthentication
clientAuthentication
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ConfigurationInfo
configurationInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ConnectivityInfo
connectivityInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EncryptionInfo
encryptionInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EnhancedMonitoring
enhancedMonitoring
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
instanceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
kafkaVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LoggingInfo
loggingInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
numberOfBrokerNodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OpenMonitoring
openMonitoring
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StorageMode
storageMode

instance Prelude.NFData MutableClusterInfo where
  rnf :: MutableClusterInfo -> ()
rnf MutableClusterInfo' {Maybe Int
Maybe [BrokerEBSVolumeInfo]
Maybe Text
Maybe ConfigurationInfo
Maybe EncryptionInfo
Maybe EnhancedMonitoring
Maybe OpenMonitoring
Maybe ConnectivityInfo
Maybe LoggingInfo
Maybe StorageMode
Maybe ClientAuthentication
storageMode :: Maybe StorageMode
openMonitoring :: Maybe OpenMonitoring
numberOfBrokerNodes :: Maybe Int
loggingInfo :: Maybe LoggingInfo
kafkaVersion :: Maybe Text
instanceType :: Maybe Text
enhancedMonitoring :: Maybe EnhancedMonitoring
encryptionInfo :: Maybe EncryptionInfo
connectivityInfo :: Maybe ConnectivityInfo
configurationInfo :: Maybe ConfigurationInfo
clientAuthentication :: Maybe ClientAuthentication
brokerEBSVolumeInfo :: Maybe [BrokerEBSVolumeInfo]
$sel:storageMode:MutableClusterInfo' :: MutableClusterInfo -> Maybe StorageMode
$sel:openMonitoring:MutableClusterInfo' :: MutableClusterInfo -> Maybe OpenMonitoring
$sel:numberOfBrokerNodes:MutableClusterInfo' :: MutableClusterInfo -> Maybe Int
$sel:loggingInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe LoggingInfo
$sel:kafkaVersion:MutableClusterInfo' :: MutableClusterInfo -> Maybe Text
$sel:instanceType:MutableClusterInfo' :: MutableClusterInfo -> Maybe Text
$sel:enhancedMonitoring:MutableClusterInfo' :: MutableClusterInfo -> Maybe EnhancedMonitoring
$sel:encryptionInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe EncryptionInfo
$sel:connectivityInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe ConnectivityInfo
$sel:configurationInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe ConfigurationInfo
$sel:clientAuthentication:MutableClusterInfo' :: MutableClusterInfo -> Maybe ClientAuthentication
$sel:brokerEBSVolumeInfo:MutableClusterInfo' :: MutableClusterInfo -> Maybe [BrokerEBSVolumeInfo]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [BrokerEBSVolumeInfo]
brokerEBSVolumeInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ClientAuthentication
clientAuthentication
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ConfigurationInfo
configurationInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ConnectivityInfo
connectivityInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EncryptionInfo
encryptionInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EnhancedMonitoring
enhancedMonitoring
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
instanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
kafkaVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe LoggingInfo
loggingInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
numberOfBrokerNodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OpenMonitoring
openMonitoring
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StorageMode
storageMode