{-# 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.ProvisionedRequest
-- 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.ProvisionedRequest 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.BrokerNodeGroupInfo
import Amazonka.Kafka.Types.ClientAuthentication
import Amazonka.Kafka.Types.ConfigurationInfo
import Amazonka.Kafka.Types.EncryptionInfo
import Amazonka.Kafka.Types.EnhancedMonitoring
import Amazonka.Kafka.Types.LoggingInfo
import Amazonka.Kafka.Types.OpenMonitoringInfo
import Amazonka.Kafka.Types.StorageMode
import qualified Amazonka.Prelude as Prelude

-- | Provisioned cluster request.
--
-- /See:/ 'newProvisionedRequest' smart constructor.
data ProvisionedRequest = ProvisionedRequest'
  { -- | Includes all client authentication information.
    ProvisionedRequest -> Maybe ClientAuthentication
clientAuthentication :: Prelude.Maybe ClientAuthentication,
    -- | Represents the configuration that you want Amazon MSK to use for the
    -- brokers in a cluster.
    ProvisionedRequest -> Maybe ConfigurationInfo
configurationInfo :: Prelude.Maybe ConfigurationInfo,
    -- | Includes all encryption-related information.
    ProvisionedRequest -> Maybe EncryptionInfo
encryptionInfo :: Prelude.Maybe EncryptionInfo,
    -- | Specifies the level of monitoring for the MSK cluster. The possible
    -- values are DEFAULT, PER_BROKER, PER_TOPIC_PER_BROKER, and
    -- PER_TOPIC_PER_PARTITION.
    ProvisionedRequest -> Maybe EnhancedMonitoring
enhancedMonitoring :: Prelude.Maybe EnhancedMonitoring,
    -- | Log delivery information for the cluster.
    ProvisionedRequest -> Maybe LoggingInfo
loggingInfo :: Prelude.Maybe LoggingInfo,
    -- | The settings for open monitoring.
    ProvisionedRequest -> Maybe OpenMonitoringInfo
openMonitoring :: Prelude.Maybe OpenMonitoringInfo,
    -- | This controls storage mode for supported storage tiers.
    ProvisionedRequest -> Maybe StorageMode
storageMode :: Prelude.Maybe StorageMode,
    -- | Information about the brokers.
    ProvisionedRequest -> BrokerNodeGroupInfo
brokerNodeGroupInfo :: BrokerNodeGroupInfo,
    -- | The Apache Kafka version that you want for the cluster.
    ProvisionedRequest -> Text
kafkaVersion :: Prelude.Text,
    -- | The number of broker nodes in the cluster.
    ProvisionedRequest -> Natural
numberOfBrokerNodes :: Prelude.Natural
  }
  deriving (ProvisionedRequest -> ProvisionedRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ProvisionedRequest -> ProvisionedRequest -> Bool
$c/= :: ProvisionedRequest -> ProvisionedRequest -> Bool
== :: ProvisionedRequest -> ProvisionedRequest -> Bool
$c== :: ProvisionedRequest -> ProvisionedRequest -> Bool
Prelude.Eq, ReadPrec [ProvisionedRequest]
ReadPrec ProvisionedRequest
Int -> ReadS ProvisionedRequest
ReadS [ProvisionedRequest]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ProvisionedRequest]
$creadListPrec :: ReadPrec [ProvisionedRequest]
readPrec :: ReadPrec ProvisionedRequest
$creadPrec :: ReadPrec ProvisionedRequest
readList :: ReadS [ProvisionedRequest]
$creadList :: ReadS [ProvisionedRequest]
readsPrec :: Int -> ReadS ProvisionedRequest
$creadsPrec :: Int -> ReadS ProvisionedRequest
Prelude.Read, Int -> ProvisionedRequest -> ShowS
[ProvisionedRequest] -> ShowS
ProvisionedRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ProvisionedRequest] -> ShowS
$cshowList :: [ProvisionedRequest] -> ShowS
show :: ProvisionedRequest -> String
$cshow :: ProvisionedRequest -> String
showsPrec :: Int -> ProvisionedRequest -> ShowS
$cshowsPrec :: Int -> ProvisionedRequest -> ShowS
Prelude.Show, forall x. Rep ProvisionedRequest x -> ProvisionedRequest
forall x. ProvisionedRequest -> Rep ProvisionedRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ProvisionedRequest x -> ProvisionedRequest
$cfrom :: forall x. ProvisionedRequest -> Rep ProvisionedRequest x
Prelude.Generic)

-- |
-- Create a value of 'ProvisionedRequest' 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:
--
-- 'clientAuthentication', 'provisionedRequest_clientAuthentication' - Includes all client authentication information.
--
-- 'configurationInfo', 'provisionedRequest_configurationInfo' - Represents the configuration that you want Amazon MSK to use for the
-- brokers in a cluster.
--
-- 'encryptionInfo', 'provisionedRequest_encryptionInfo' - Includes all encryption-related information.
--
-- 'enhancedMonitoring', 'provisionedRequest_enhancedMonitoring' - Specifies the level of monitoring for the MSK cluster. The possible
-- values are DEFAULT, PER_BROKER, PER_TOPIC_PER_BROKER, and
-- PER_TOPIC_PER_PARTITION.
--
-- 'loggingInfo', 'provisionedRequest_loggingInfo' - Log delivery information for the cluster.
--
-- 'openMonitoring', 'provisionedRequest_openMonitoring' - The settings for open monitoring.
--
-- 'storageMode', 'provisionedRequest_storageMode' - This controls storage mode for supported storage tiers.
--
-- 'brokerNodeGroupInfo', 'provisionedRequest_brokerNodeGroupInfo' - Information about the brokers.
--
-- 'kafkaVersion', 'provisionedRequest_kafkaVersion' - The Apache Kafka version that you want for the cluster.
--
-- 'numberOfBrokerNodes', 'provisionedRequest_numberOfBrokerNodes' - The number of broker nodes in the cluster.
newProvisionedRequest ::
  -- | 'brokerNodeGroupInfo'
  BrokerNodeGroupInfo ->
  -- | 'kafkaVersion'
  Prelude.Text ->
  -- | 'numberOfBrokerNodes'
  Prelude.Natural ->
  ProvisionedRequest
newProvisionedRequest :: BrokerNodeGroupInfo -> Text -> Natural -> ProvisionedRequest
newProvisionedRequest
  BrokerNodeGroupInfo
pBrokerNodeGroupInfo_
  Text
pKafkaVersion_
  Natural
pNumberOfBrokerNodes_ =
    ProvisionedRequest'
      { $sel:clientAuthentication:ProvisionedRequest' :: Maybe ClientAuthentication
clientAuthentication =
          forall a. Maybe a
Prelude.Nothing,
        $sel:configurationInfo:ProvisionedRequest' :: Maybe ConfigurationInfo
configurationInfo = forall a. Maybe a
Prelude.Nothing,
        $sel:encryptionInfo:ProvisionedRequest' :: Maybe EncryptionInfo
encryptionInfo = forall a. Maybe a
Prelude.Nothing,
        $sel:enhancedMonitoring:ProvisionedRequest' :: Maybe EnhancedMonitoring
enhancedMonitoring = forall a. Maybe a
Prelude.Nothing,
        $sel:loggingInfo:ProvisionedRequest' :: Maybe LoggingInfo
loggingInfo = forall a. Maybe a
Prelude.Nothing,
        $sel:openMonitoring:ProvisionedRequest' :: Maybe OpenMonitoringInfo
openMonitoring = forall a. Maybe a
Prelude.Nothing,
        $sel:storageMode:ProvisionedRequest' :: Maybe StorageMode
storageMode = forall a. Maybe a
Prelude.Nothing,
        $sel:brokerNodeGroupInfo:ProvisionedRequest' :: BrokerNodeGroupInfo
brokerNodeGroupInfo = BrokerNodeGroupInfo
pBrokerNodeGroupInfo_,
        $sel:kafkaVersion:ProvisionedRequest' :: Text
kafkaVersion = Text
pKafkaVersion_,
        $sel:numberOfBrokerNodes:ProvisionedRequest' :: Natural
numberOfBrokerNodes = Natural
pNumberOfBrokerNodes_
      }

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

-- | Represents the configuration that you want Amazon MSK to use for the
-- brokers in a cluster.
provisionedRequest_configurationInfo :: Lens.Lens' ProvisionedRequest (Prelude.Maybe ConfigurationInfo)
provisionedRequest_configurationInfo :: Lens' ProvisionedRequest (Maybe ConfigurationInfo)
provisionedRequest_configurationInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionedRequest' {Maybe ConfigurationInfo
configurationInfo :: Maybe ConfigurationInfo
$sel:configurationInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe ConfigurationInfo
configurationInfo} -> Maybe ConfigurationInfo
configurationInfo) (\s :: ProvisionedRequest
s@ProvisionedRequest' {} Maybe ConfigurationInfo
a -> ProvisionedRequest
s {$sel:configurationInfo:ProvisionedRequest' :: Maybe ConfigurationInfo
configurationInfo = Maybe ConfigurationInfo
a} :: ProvisionedRequest)

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

-- | Specifies the level of monitoring for the MSK cluster. The possible
-- values are DEFAULT, PER_BROKER, PER_TOPIC_PER_BROKER, and
-- PER_TOPIC_PER_PARTITION.
provisionedRequest_enhancedMonitoring :: Lens.Lens' ProvisionedRequest (Prelude.Maybe EnhancedMonitoring)
provisionedRequest_enhancedMonitoring :: Lens' ProvisionedRequest (Maybe EnhancedMonitoring)
provisionedRequest_enhancedMonitoring = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionedRequest' {Maybe EnhancedMonitoring
enhancedMonitoring :: Maybe EnhancedMonitoring
$sel:enhancedMonitoring:ProvisionedRequest' :: ProvisionedRequest -> Maybe EnhancedMonitoring
enhancedMonitoring} -> Maybe EnhancedMonitoring
enhancedMonitoring) (\s :: ProvisionedRequest
s@ProvisionedRequest' {} Maybe EnhancedMonitoring
a -> ProvisionedRequest
s {$sel:enhancedMonitoring:ProvisionedRequest' :: Maybe EnhancedMonitoring
enhancedMonitoring = Maybe EnhancedMonitoring
a} :: ProvisionedRequest)

-- | Log delivery information for the cluster.
provisionedRequest_loggingInfo :: Lens.Lens' ProvisionedRequest (Prelude.Maybe LoggingInfo)
provisionedRequest_loggingInfo :: Lens' ProvisionedRequest (Maybe LoggingInfo)
provisionedRequest_loggingInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionedRequest' {Maybe LoggingInfo
loggingInfo :: Maybe LoggingInfo
$sel:loggingInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe LoggingInfo
loggingInfo} -> Maybe LoggingInfo
loggingInfo) (\s :: ProvisionedRequest
s@ProvisionedRequest' {} Maybe LoggingInfo
a -> ProvisionedRequest
s {$sel:loggingInfo:ProvisionedRequest' :: Maybe LoggingInfo
loggingInfo = Maybe LoggingInfo
a} :: ProvisionedRequest)

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

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

-- | Information about the brokers.
provisionedRequest_brokerNodeGroupInfo :: Lens.Lens' ProvisionedRequest BrokerNodeGroupInfo
provisionedRequest_brokerNodeGroupInfo :: Lens' ProvisionedRequest BrokerNodeGroupInfo
provisionedRequest_brokerNodeGroupInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionedRequest' {BrokerNodeGroupInfo
brokerNodeGroupInfo :: BrokerNodeGroupInfo
$sel:brokerNodeGroupInfo:ProvisionedRequest' :: ProvisionedRequest -> BrokerNodeGroupInfo
brokerNodeGroupInfo} -> BrokerNodeGroupInfo
brokerNodeGroupInfo) (\s :: ProvisionedRequest
s@ProvisionedRequest' {} BrokerNodeGroupInfo
a -> ProvisionedRequest
s {$sel:brokerNodeGroupInfo:ProvisionedRequest' :: BrokerNodeGroupInfo
brokerNodeGroupInfo = BrokerNodeGroupInfo
a} :: ProvisionedRequest)

-- | The Apache Kafka version that you want for the cluster.
provisionedRequest_kafkaVersion :: Lens.Lens' ProvisionedRequest Prelude.Text
provisionedRequest_kafkaVersion :: Lens' ProvisionedRequest Text
provisionedRequest_kafkaVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ProvisionedRequest' {Text
kafkaVersion :: Text
$sel:kafkaVersion:ProvisionedRequest' :: ProvisionedRequest -> Text
kafkaVersion} -> Text
kafkaVersion) (\s :: ProvisionedRequest
s@ProvisionedRequest' {} Text
a -> ProvisionedRequest
s {$sel:kafkaVersion:ProvisionedRequest' :: Text
kafkaVersion = Text
a} :: ProvisionedRequest)

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

instance Prelude.Hashable ProvisionedRequest where
  hashWithSalt :: Int -> ProvisionedRequest -> Int
hashWithSalt Int
_salt ProvisionedRequest' {Natural
Maybe ConfigurationInfo
Maybe EncryptionInfo
Maybe EnhancedMonitoring
Maybe OpenMonitoringInfo
Maybe LoggingInfo
Maybe StorageMode
Maybe ClientAuthentication
Text
BrokerNodeGroupInfo
numberOfBrokerNodes :: Natural
kafkaVersion :: Text
brokerNodeGroupInfo :: BrokerNodeGroupInfo
storageMode :: Maybe StorageMode
openMonitoring :: Maybe OpenMonitoringInfo
loggingInfo :: Maybe LoggingInfo
enhancedMonitoring :: Maybe EnhancedMonitoring
encryptionInfo :: Maybe EncryptionInfo
configurationInfo :: Maybe ConfigurationInfo
clientAuthentication :: Maybe ClientAuthentication
$sel:numberOfBrokerNodes:ProvisionedRequest' :: ProvisionedRequest -> Natural
$sel:kafkaVersion:ProvisionedRequest' :: ProvisionedRequest -> Text
$sel:brokerNodeGroupInfo:ProvisionedRequest' :: ProvisionedRequest -> BrokerNodeGroupInfo
$sel:storageMode:ProvisionedRequest' :: ProvisionedRequest -> Maybe StorageMode
$sel:openMonitoring:ProvisionedRequest' :: ProvisionedRequest -> Maybe OpenMonitoringInfo
$sel:loggingInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe LoggingInfo
$sel:enhancedMonitoring:ProvisionedRequest' :: ProvisionedRequest -> Maybe EnhancedMonitoring
$sel:encryptionInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe EncryptionInfo
$sel:configurationInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe ConfigurationInfo
$sel:clientAuthentication:ProvisionedRequest' :: ProvisionedRequest -> Maybe ClientAuthentication
..} =
    Int
_salt
      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 EncryptionInfo
encryptionInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EnhancedMonitoring
enhancedMonitoring
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe LoggingInfo
loggingInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe OpenMonitoringInfo
openMonitoring
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StorageMode
storageMode
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` BrokerNodeGroupInfo
brokerNodeGroupInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
kafkaVersion
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Natural
numberOfBrokerNodes

instance Prelude.NFData ProvisionedRequest where
  rnf :: ProvisionedRequest -> ()
rnf ProvisionedRequest' {Natural
Maybe ConfigurationInfo
Maybe EncryptionInfo
Maybe EnhancedMonitoring
Maybe OpenMonitoringInfo
Maybe LoggingInfo
Maybe StorageMode
Maybe ClientAuthentication
Text
BrokerNodeGroupInfo
numberOfBrokerNodes :: Natural
kafkaVersion :: Text
brokerNodeGroupInfo :: BrokerNodeGroupInfo
storageMode :: Maybe StorageMode
openMonitoring :: Maybe OpenMonitoringInfo
loggingInfo :: Maybe LoggingInfo
enhancedMonitoring :: Maybe EnhancedMonitoring
encryptionInfo :: Maybe EncryptionInfo
configurationInfo :: Maybe ConfigurationInfo
clientAuthentication :: Maybe ClientAuthentication
$sel:numberOfBrokerNodes:ProvisionedRequest' :: ProvisionedRequest -> Natural
$sel:kafkaVersion:ProvisionedRequest' :: ProvisionedRequest -> Text
$sel:brokerNodeGroupInfo:ProvisionedRequest' :: ProvisionedRequest -> BrokerNodeGroupInfo
$sel:storageMode:ProvisionedRequest' :: ProvisionedRequest -> Maybe StorageMode
$sel:openMonitoring:ProvisionedRequest' :: ProvisionedRequest -> Maybe OpenMonitoringInfo
$sel:loggingInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe LoggingInfo
$sel:enhancedMonitoring:ProvisionedRequest' :: ProvisionedRequest -> Maybe EnhancedMonitoring
$sel:encryptionInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe EncryptionInfo
$sel:configurationInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe ConfigurationInfo
$sel:clientAuthentication:ProvisionedRequest' :: ProvisionedRequest -> Maybe ClientAuthentication
..} =
    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 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 LoggingInfo
loggingInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe OpenMonitoringInfo
openMonitoring
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StorageMode
storageMode
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf BrokerNodeGroupInfo
brokerNodeGroupInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
kafkaVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Natural
numberOfBrokerNodes

instance Data.ToJSON ProvisionedRequest where
  toJSON :: ProvisionedRequest -> Value
toJSON ProvisionedRequest' {Natural
Maybe ConfigurationInfo
Maybe EncryptionInfo
Maybe EnhancedMonitoring
Maybe OpenMonitoringInfo
Maybe LoggingInfo
Maybe StorageMode
Maybe ClientAuthentication
Text
BrokerNodeGroupInfo
numberOfBrokerNodes :: Natural
kafkaVersion :: Text
brokerNodeGroupInfo :: BrokerNodeGroupInfo
storageMode :: Maybe StorageMode
openMonitoring :: Maybe OpenMonitoringInfo
loggingInfo :: Maybe LoggingInfo
enhancedMonitoring :: Maybe EnhancedMonitoring
encryptionInfo :: Maybe EncryptionInfo
configurationInfo :: Maybe ConfigurationInfo
clientAuthentication :: Maybe ClientAuthentication
$sel:numberOfBrokerNodes:ProvisionedRequest' :: ProvisionedRequest -> Natural
$sel:kafkaVersion:ProvisionedRequest' :: ProvisionedRequest -> Text
$sel:brokerNodeGroupInfo:ProvisionedRequest' :: ProvisionedRequest -> BrokerNodeGroupInfo
$sel:storageMode:ProvisionedRequest' :: ProvisionedRequest -> Maybe StorageMode
$sel:openMonitoring:ProvisionedRequest' :: ProvisionedRequest -> Maybe OpenMonitoringInfo
$sel:loggingInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe LoggingInfo
$sel:enhancedMonitoring:ProvisionedRequest' :: ProvisionedRequest -> Maybe EnhancedMonitoring
$sel:encryptionInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe EncryptionInfo
$sel:configurationInfo:ProvisionedRequest' :: ProvisionedRequest -> Maybe ConfigurationInfo
$sel:clientAuthentication:ProvisionedRequest' :: ProvisionedRequest -> Maybe ClientAuthentication
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"clientAuthentication" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ClientAuthentication
clientAuthentication,
            (Key
"configurationInfo" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ConfigurationInfo
configurationInfo,
            (Key
"encryptionInfo" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EncryptionInfo
encryptionInfo,
            (Key
"enhancedMonitoring" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EnhancedMonitoring
enhancedMonitoring,
            (Key
"loggingInfo" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe LoggingInfo
loggingInfo,
            (Key
"openMonitoring" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe OpenMonitoringInfo
openMonitoring,
            (Key
"storageMode" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe StorageMode
storageMode,
            forall a. a -> Maybe a
Prelude.Just
              (Key
"brokerNodeGroupInfo" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= BrokerNodeGroupInfo
brokerNodeGroupInfo),
            forall a. a -> Maybe a
Prelude.Just (Key
"kafkaVersion" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
kafkaVersion),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"numberOfBrokerNodes" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Natural
numberOfBrokerNodes)
          ]
      )