{-# 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.ClusterInfo
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.Kafka.Types.ClusterInfo where

import qualified Amazonka.Core as Core
import Amazonka.Kafka.Types.BrokerNodeGroupInfo
import Amazonka.Kafka.Types.BrokerSoftwareInfo
import Amazonka.Kafka.Types.ClientAuthentication
import Amazonka.Kafka.Types.ClusterState
import Amazonka.Kafka.Types.EncryptionInfo
import Amazonka.Kafka.Types.EnhancedMonitoring
import Amazonka.Kafka.Types.LoggingInfo
import Amazonka.Kafka.Types.OpenMonitoring
import Amazonka.Kafka.Types.StateInfo
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Returns information about a cluster.
--
-- /See:/ 'newClusterInfo' smart constructor.
data ClusterInfo = ClusterInfo'
  { -- | The time when the cluster was created.
    ClusterInfo -> Maybe POSIX
creationTime :: Prelude.Maybe Core.POSIX,
    -- | Arn of active cluster operation.
    ClusterInfo -> Maybe Text
activeOperationArn :: Prelude.Maybe Prelude.Text,
    -- | The state of the cluster. The possible states are ACTIVE, CREATING,
    -- DELETING, FAILED, HEALING, MAINTENANCE, REBOOTING_BROKER, and UPDATING.
    ClusterInfo -> Maybe ClusterState
state :: Prelude.Maybe ClusterState,
    -- | The Amazon Resource Name (ARN) that uniquely identifies the cluster.
    ClusterInfo -> Maybe Text
clusterArn :: Prelude.Maybe Prelude.Text,
    -- | The number of broker nodes in the cluster.
    ClusterInfo -> Maybe Int
numberOfBrokerNodes :: Prelude.Maybe Prelude.Int,
    -- | Specifies which metrics are gathered for the MSK cluster. This property
    -- has the following possible values: DEFAULT, PER_BROKER,
    -- PER_TOPIC_PER_BROKER, and PER_TOPIC_PER_PARTITION. For a list of the
    -- metrics associated with each of these levels of monitoring, see
    -- <https://docs.aws.amazon.com/msk/latest/developerguide/monitoring.html Monitoring>.
    ClusterInfo -> Maybe EnhancedMonitoring
enhancedMonitoring :: Prelude.Maybe EnhancedMonitoring,
    -- | Information about the broker nodes.
    ClusterInfo -> Maybe BrokerNodeGroupInfo
brokerNodeGroupInfo :: Prelude.Maybe BrokerNodeGroupInfo,
    -- | Settings for open monitoring using Prometheus.
    ClusterInfo -> Maybe OpenMonitoring
openMonitoring :: Prelude.Maybe OpenMonitoring,
    -- | Information about the version of software currently deployed on the
    -- Kafka brokers in the cluster.
    ClusterInfo -> Maybe BrokerSoftwareInfo
currentBrokerSoftwareInfo :: Prelude.Maybe BrokerSoftwareInfo,
    -- | The current version of the MSK cluster.
    ClusterInfo -> Maybe Text
currentVersion :: Prelude.Maybe Prelude.Text,
    ClusterInfo -> Maybe StateInfo
stateInfo :: Prelude.Maybe StateInfo,
    ClusterInfo -> Maybe LoggingInfo
loggingInfo :: Prelude.Maybe LoggingInfo,
    -- | The connection string to use to connect to the Apache ZooKeeper cluster.
    ClusterInfo -> Maybe Text
zookeeperConnectString :: Prelude.Maybe Prelude.Text,
    -- | The name of the cluster.
    ClusterInfo -> Maybe Text
clusterName :: Prelude.Maybe Prelude.Text,
    -- | The connection string to use to connect to zookeeper cluster on Tls
    -- port.
    ClusterInfo -> Maybe Text
zookeeperConnectStringTls :: Prelude.Maybe Prelude.Text,
    -- | Includes all client authentication information.
    ClusterInfo -> Maybe ClientAuthentication
clientAuthentication :: Prelude.Maybe ClientAuthentication,
    -- | Tags attached to the cluster.
    ClusterInfo -> Maybe (HashMap Text Text)
tags :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | Includes all encryption-related information.
    ClusterInfo -> Maybe EncryptionInfo
encryptionInfo :: Prelude.Maybe EncryptionInfo
  }
  deriving (ClusterInfo -> ClusterInfo -> Bool
(ClusterInfo -> ClusterInfo -> Bool)
-> (ClusterInfo -> ClusterInfo -> Bool) -> Eq ClusterInfo
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ClusterInfo -> ClusterInfo -> Bool
$c/= :: ClusterInfo -> ClusterInfo -> Bool
== :: ClusterInfo -> ClusterInfo -> Bool
$c== :: ClusterInfo -> ClusterInfo -> Bool
Prelude.Eq, ReadPrec [ClusterInfo]
ReadPrec ClusterInfo
Int -> ReadS ClusterInfo
ReadS [ClusterInfo]
(Int -> ReadS ClusterInfo)
-> ReadS [ClusterInfo]
-> ReadPrec ClusterInfo
-> ReadPrec [ClusterInfo]
-> Read ClusterInfo
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ClusterInfo]
$creadListPrec :: ReadPrec [ClusterInfo]
readPrec :: ReadPrec ClusterInfo
$creadPrec :: ReadPrec ClusterInfo
readList :: ReadS [ClusterInfo]
$creadList :: ReadS [ClusterInfo]
readsPrec :: Int -> ReadS ClusterInfo
$creadsPrec :: Int -> ReadS ClusterInfo
Prelude.Read, Int -> ClusterInfo -> ShowS
[ClusterInfo] -> ShowS
ClusterInfo -> String
(Int -> ClusterInfo -> ShowS)
-> (ClusterInfo -> String)
-> ([ClusterInfo] -> ShowS)
-> Show ClusterInfo
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ClusterInfo] -> ShowS
$cshowList :: [ClusterInfo] -> ShowS
show :: ClusterInfo -> String
$cshow :: ClusterInfo -> String
showsPrec :: Int -> ClusterInfo -> ShowS
$cshowsPrec :: Int -> ClusterInfo -> ShowS
Prelude.Show, (forall x. ClusterInfo -> Rep ClusterInfo x)
-> (forall x. Rep ClusterInfo x -> ClusterInfo)
-> Generic ClusterInfo
forall x. Rep ClusterInfo x -> ClusterInfo
forall x. ClusterInfo -> Rep ClusterInfo x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ClusterInfo x -> ClusterInfo
$cfrom :: forall x. ClusterInfo -> Rep ClusterInfo x
Prelude.Generic)

-- |
-- Create a value of 'ClusterInfo' 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:
--
-- 'creationTime', 'clusterInfo_creationTime' - The time when the cluster was created.
--
-- 'activeOperationArn', 'clusterInfo_activeOperationArn' - Arn of active cluster operation.
--
-- 'state', 'clusterInfo_state' - The state of the cluster. The possible states are ACTIVE, CREATING,
-- DELETING, FAILED, HEALING, MAINTENANCE, REBOOTING_BROKER, and UPDATING.
--
-- 'clusterArn', 'clusterInfo_clusterArn' - The Amazon Resource Name (ARN) that uniquely identifies the cluster.
--
-- 'numberOfBrokerNodes', 'clusterInfo_numberOfBrokerNodes' - The number of broker nodes in the cluster.
--
-- 'enhancedMonitoring', 'clusterInfo_enhancedMonitoring' - Specifies which metrics are gathered for the MSK cluster. This property
-- has the following possible values: DEFAULT, PER_BROKER,
-- PER_TOPIC_PER_BROKER, and PER_TOPIC_PER_PARTITION. For a list of the
-- metrics associated with each of these levels of monitoring, see
-- <https://docs.aws.amazon.com/msk/latest/developerguide/monitoring.html Monitoring>.
--
-- 'brokerNodeGroupInfo', 'clusterInfo_brokerNodeGroupInfo' - Information about the broker nodes.
--
-- 'openMonitoring', 'clusterInfo_openMonitoring' - Settings for open monitoring using Prometheus.
--
-- 'currentBrokerSoftwareInfo', 'clusterInfo_currentBrokerSoftwareInfo' - Information about the version of software currently deployed on the
-- Kafka brokers in the cluster.
--
-- 'currentVersion', 'clusterInfo_currentVersion' - The current version of the MSK cluster.
--
-- 'stateInfo', 'clusterInfo_stateInfo' - Undocumented member.
--
-- 'loggingInfo', 'clusterInfo_loggingInfo' - Undocumented member.
--
-- 'zookeeperConnectString', 'clusterInfo_zookeeperConnectString' - The connection string to use to connect to the Apache ZooKeeper cluster.
--
-- 'clusterName', 'clusterInfo_clusterName' - The name of the cluster.
--
-- 'zookeeperConnectStringTls', 'clusterInfo_zookeeperConnectStringTls' - The connection string to use to connect to zookeeper cluster on Tls
-- port.
--
-- 'clientAuthentication', 'clusterInfo_clientAuthentication' - Includes all client authentication information.
--
-- 'tags', 'clusterInfo_tags' - Tags attached to the cluster.
--
-- 'encryptionInfo', 'clusterInfo_encryptionInfo' - Includes all encryption-related information.
newClusterInfo ::
  ClusterInfo
newClusterInfo :: ClusterInfo
newClusterInfo =
  ClusterInfo' :: Maybe POSIX
-> Maybe Text
-> Maybe ClusterState
-> Maybe Text
-> Maybe Int
-> Maybe EnhancedMonitoring
-> Maybe BrokerNodeGroupInfo
-> Maybe OpenMonitoring
-> Maybe BrokerSoftwareInfo
-> Maybe Text
-> Maybe StateInfo
-> Maybe LoggingInfo
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ClientAuthentication
-> Maybe (HashMap Text Text)
-> Maybe EncryptionInfo
-> ClusterInfo
ClusterInfo'
    { $sel:creationTime:ClusterInfo' :: Maybe POSIX
creationTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:activeOperationArn:ClusterInfo' :: Maybe Text
activeOperationArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:state:ClusterInfo' :: Maybe ClusterState
state = Maybe ClusterState
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterArn:ClusterInfo' :: Maybe Text
clusterArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:numberOfBrokerNodes:ClusterInfo' :: Maybe Int
numberOfBrokerNodes = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:enhancedMonitoring:ClusterInfo' :: Maybe EnhancedMonitoring
enhancedMonitoring = Maybe EnhancedMonitoring
forall a. Maybe a
Prelude.Nothing,
      $sel:brokerNodeGroupInfo:ClusterInfo' :: Maybe BrokerNodeGroupInfo
brokerNodeGroupInfo = Maybe BrokerNodeGroupInfo
forall a. Maybe a
Prelude.Nothing,
      $sel:openMonitoring:ClusterInfo' :: Maybe OpenMonitoring
openMonitoring = Maybe OpenMonitoring
forall a. Maybe a
Prelude.Nothing,
      $sel:currentBrokerSoftwareInfo:ClusterInfo' :: Maybe BrokerSoftwareInfo
currentBrokerSoftwareInfo = Maybe BrokerSoftwareInfo
forall a. Maybe a
Prelude.Nothing,
      $sel:currentVersion:ClusterInfo' :: Maybe Text
currentVersion = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:stateInfo:ClusterInfo' :: Maybe StateInfo
stateInfo = Maybe StateInfo
forall a. Maybe a
Prelude.Nothing,
      $sel:loggingInfo:ClusterInfo' :: Maybe LoggingInfo
loggingInfo = Maybe LoggingInfo
forall a. Maybe a
Prelude.Nothing,
      $sel:zookeeperConnectString:ClusterInfo' :: Maybe Text
zookeeperConnectString = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clusterName:ClusterInfo' :: Maybe Text
clusterName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:zookeeperConnectStringTls:ClusterInfo' :: Maybe Text
zookeeperConnectStringTls = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:clientAuthentication:ClusterInfo' :: Maybe ClientAuthentication
clientAuthentication = Maybe ClientAuthentication
forall a. Maybe a
Prelude.Nothing,
      $sel:tags:ClusterInfo' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
forall a. Maybe a
Prelude.Nothing,
      $sel:encryptionInfo:ClusterInfo' :: Maybe EncryptionInfo
encryptionInfo = Maybe EncryptionInfo
forall a. Maybe a
Prelude.Nothing
    }

-- | The time when the cluster was created.
clusterInfo_creationTime :: Lens.Lens' ClusterInfo (Prelude.Maybe Prelude.UTCTime)
clusterInfo_creationTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> ClusterInfo -> f ClusterInfo
clusterInfo_creationTime = (ClusterInfo -> Maybe POSIX)
-> (ClusterInfo -> Maybe POSIX -> ClusterInfo)
-> Lens ClusterInfo ClusterInfo (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:ClusterInfo' :: ClusterInfo -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe POSIX
a -> ClusterInfo
s {$sel:creationTime:ClusterInfo' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: ClusterInfo) ((Maybe POSIX -> f (Maybe POSIX)) -> ClusterInfo -> f ClusterInfo)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> ClusterInfo
-> f ClusterInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Arn of active cluster operation.
clusterInfo_activeOperationArn :: Lens.Lens' ClusterInfo (Prelude.Maybe Prelude.Text)
clusterInfo_activeOperationArn :: (Maybe Text -> f (Maybe Text)) -> ClusterInfo -> f ClusterInfo
clusterInfo_activeOperationArn = (ClusterInfo -> Maybe Text)
-> (ClusterInfo -> Maybe Text -> ClusterInfo)
-> Lens ClusterInfo ClusterInfo (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe Text
activeOperationArn :: Maybe Text
$sel:activeOperationArn:ClusterInfo' :: ClusterInfo -> Maybe Text
activeOperationArn} -> Maybe Text
activeOperationArn) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe Text
a -> ClusterInfo
s {$sel:activeOperationArn:ClusterInfo' :: Maybe Text
activeOperationArn = Maybe Text
a} :: ClusterInfo)

-- | The state of the cluster. The possible states are ACTIVE, CREATING,
-- DELETING, FAILED, HEALING, MAINTENANCE, REBOOTING_BROKER, and UPDATING.
clusterInfo_state :: Lens.Lens' ClusterInfo (Prelude.Maybe ClusterState)
clusterInfo_state :: (Maybe ClusterState -> f (Maybe ClusterState))
-> ClusterInfo -> f ClusterInfo
clusterInfo_state = (ClusterInfo -> Maybe ClusterState)
-> (ClusterInfo -> Maybe ClusterState -> ClusterInfo)
-> Lens
     ClusterInfo ClusterInfo (Maybe ClusterState) (Maybe ClusterState)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe ClusterState
state :: Maybe ClusterState
$sel:state:ClusterInfo' :: ClusterInfo -> Maybe ClusterState
state} -> Maybe ClusterState
state) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe ClusterState
a -> ClusterInfo
s {$sel:state:ClusterInfo' :: Maybe ClusterState
state = Maybe ClusterState
a} :: ClusterInfo)

-- | The Amazon Resource Name (ARN) that uniquely identifies the cluster.
clusterInfo_clusterArn :: Lens.Lens' ClusterInfo (Prelude.Maybe Prelude.Text)
clusterInfo_clusterArn :: (Maybe Text -> f (Maybe Text)) -> ClusterInfo -> f ClusterInfo
clusterInfo_clusterArn = (ClusterInfo -> Maybe Text)
-> (ClusterInfo -> Maybe Text -> ClusterInfo)
-> Lens ClusterInfo ClusterInfo (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe Text
clusterArn :: Maybe Text
$sel:clusterArn:ClusterInfo' :: ClusterInfo -> Maybe Text
clusterArn} -> Maybe Text
clusterArn) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe Text
a -> ClusterInfo
s {$sel:clusterArn:ClusterInfo' :: Maybe Text
clusterArn = Maybe Text
a} :: ClusterInfo)

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

-- | Specifies which metrics are gathered for the MSK cluster. This property
-- has the following possible values: DEFAULT, PER_BROKER,
-- PER_TOPIC_PER_BROKER, and PER_TOPIC_PER_PARTITION. For a list of the
-- metrics associated with each of these levels of monitoring, see
-- <https://docs.aws.amazon.com/msk/latest/developerguide/monitoring.html Monitoring>.
clusterInfo_enhancedMonitoring :: Lens.Lens' ClusterInfo (Prelude.Maybe EnhancedMonitoring)
clusterInfo_enhancedMonitoring :: (Maybe EnhancedMonitoring -> f (Maybe EnhancedMonitoring))
-> ClusterInfo -> f ClusterInfo
clusterInfo_enhancedMonitoring = (ClusterInfo -> Maybe EnhancedMonitoring)
-> (ClusterInfo -> Maybe EnhancedMonitoring -> ClusterInfo)
-> Lens
     ClusterInfo
     ClusterInfo
     (Maybe EnhancedMonitoring)
     (Maybe EnhancedMonitoring)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe EnhancedMonitoring
enhancedMonitoring :: Maybe EnhancedMonitoring
$sel:enhancedMonitoring:ClusterInfo' :: ClusterInfo -> Maybe EnhancedMonitoring
enhancedMonitoring} -> Maybe EnhancedMonitoring
enhancedMonitoring) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe EnhancedMonitoring
a -> ClusterInfo
s {$sel:enhancedMonitoring:ClusterInfo' :: Maybe EnhancedMonitoring
enhancedMonitoring = Maybe EnhancedMonitoring
a} :: ClusterInfo)

-- | Information about the broker nodes.
clusterInfo_brokerNodeGroupInfo :: Lens.Lens' ClusterInfo (Prelude.Maybe BrokerNodeGroupInfo)
clusterInfo_brokerNodeGroupInfo :: (Maybe BrokerNodeGroupInfo -> f (Maybe BrokerNodeGroupInfo))
-> ClusterInfo -> f ClusterInfo
clusterInfo_brokerNodeGroupInfo = (ClusterInfo -> Maybe BrokerNodeGroupInfo)
-> (ClusterInfo -> Maybe BrokerNodeGroupInfo -> ClusterInfo)
-> Lens
     ClusterInfo
     ClusterInfo
     (Maybe BrokerNodeGroupInfo)
     (Maybe BrokerNodeGroupInfo)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe BrokerNodeGroupInfo
brokerNodeGroupInfo :: Maybe BrokerNodeGroupInfo
$sel:brokerNodeGroupInfo:ClusterInfo' :: ClusterInfo -> Maybe BrokerNodeGroupInfo
brokerNodeGroupInfo} -> Maybe BrokerNodeGroupInfo
brokerNodeGroupInfo) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe BrokerNodeGroupInfo
a -> ClusterInfo
s {$sel:brokerNodeGroupInfo:ClusterInfo' :: Maybe BrokerNodeGroupInfo
brokerNodeGroupInfo = Maybe BrokerNodeGroupInfo
a} :: ClusterInfo)

-- | Settings for open monitoring using Prometheus.
clusterInfo_openMonitoring :: Lens.Lens' ClusterInfo (Prelude.Maybe OpenMonitoring)
clusterInfo_openMonitoring :: (Maybe OpenMonitoring -> f (Maybe OpenMonitoring))
-> ClusterInfo -> f ClusterInfo
clusterInfo_openMonitoring = (ClusterInfo -> Maybe OpenMonitoring)
-> (ClusterInfo -> Maybe OpenMonitoring -> ClusterInfo)
-> Lens
     ClusterInfo
     ClusterInfo
     (Maybe OpenMonitoring)
     (Maybe OpenMonitoring)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe OpenMonitoring
openMonitoring :: Maybe OpenMonitoring
$sel:openMonitoring:ClusterInfo' :: ClusterInfo -> Maybe OpenMonitoring
openMonitoring} -> Maybe OpenMonitoring
openMonitoring) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe OpenMonitoring
a -> ClusterInfo
s {$sel:openMonitoring:ClusterInfo' :: Maybe OpenMonitoring
openMonitoring = Maybe OpenMonitoring
a} :: ClusterInfo)

-- | Information about the version of software currently deployed on the
-- Kafka brokers in the cluster.
clusterInfo_currentBrokerSoftwareInfo :: Lens.Lens' ClusterInfo (Prelude.Maybe BrokerSoftwareInfo)
clusterInfo_currentBrokerSoftwareInfo :: (Maybe BrokerSoftwareInfo -> f (Maybe BrokerSoftwareInfo))
-> ClusterInfo -> f ClusterInfo
clusterInfo_currentBrokerSoftwareInfo = (ClusterInfo -> Maybe BrokerSoftwareInfo)
-> (ClusterInfo -> Maybe BrokerSoftwareInfo -> ClusterInfo)
-> Lens
     ClusterInfo
     ClusterInfo
     (Maybe BrokerSoftwareInfo)
     (Maybe BrokerSoftwareInfo)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe BrokerSoftwareInfo
currentBrokerSoftwareInfo :: Maybe BrokerSoftwareInfo
$sel:currentBrokerSoftwareInfo:ClusterInfo' :: ClusterInfo -> Maybe BrokerSoftwareInfo
currentBrokerSoftwareInfo} -> Maybe BrokerSoftwareInfo
currentBrokerSoftwareInfo) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe BrokerSoftwareInfo
a -> ClusterInfo
s {$sel:currentBrokerSoftwareInfo:ClusterInfo' :: Maybe BrokerSoftwareInfo
currentBrokerSoftwareInfo = Maybe BrokerSoftwareInfo
a} :: ClusterInfo)

-- | The current version of the MSK cluster.
clusterInfo_currentVersion :: Lens.Lens' ClusterInfo (Prelude.Maybe Prelude.Text)
clusterInfo_currentVersion :: (Maybe Text -> f (Maybe Text)) -> ClusterInfo -> f ClusterInfo
clusterInfo_currentVersion = (ClusterInfo -> Maybe Text)
-> (ClusterInfo -> Maybe Text -> ClusterInfo)
-> Lens ClusterInfo ClusterInfo (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe Text
currentVersion :: Maybe Text
$sel:currentVersion:ClusterInfo' :: ClusterInfo -> Maybe Text
currentVersion} -> Maybe Text
currentVersion) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe Text
a -> ClusterInfo
s {$sel:currentVersion:ClusterInfo' :: Maybe Text
currentVersion = Maybe Text
a} :: ClusterInfo)

-- | Undocumented member.
clusterInfo_stateInfo :: Lens.Lens' ClusterInfo (Prelude.Maybe StateInfo)
clusterInfo_stateInfo :: (Maybe StateInfo -> f (Maybe StateInfo))
-> ClusterInfo -> f ClusterInfo
clusterInfo_stateInfo = (ClusterInfo -> Maybe StateInfo)
-> (ClusterInfo -> Maybe StateInfo -> ClusterInfo)
-> Lens ClusterInfo ClusterInfo (Maybe StateInfo) (Maybe StateInfo)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe StateInfo
stateInfo :: Maybe StateInfo
$sel:stateInfo:ClusterInfo' :: ClusterInfo -> Maybe StateInfo
stateInfo} -> Maybe StateInfo
stateInfo) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe StateInfo
a -> ClusterInfo
s {$sel:stateInfo:ClusterInfo' :: Maybe StateInfo
stateInfo = Maybe StateInfo
a} :: ClusterInfo)

-- | Undocumented member.
clusterInfo_loggingInfo :: Lens.Lens' ClusterInfo (Prelude.Maybe LoggingInfo)
clusterInfo_loggingInfo :: (Maybe LoggingInfo -> f (Maybe LoggingInfo))
-> ClusterInfo -> f ClusterInfo
clusterInfo_loggingInfo = (ClusterInfo -> Maybe LoggingInfo)
-> (ClusterInfo -> Maybe LoggingInfo -> ClusterInfo)
-> Lens
     ClusterInfo ClusterInfo (Maybe LoggingInfo) (Maybe LoggingInfo)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe LoggingInfo
loggingInfo :: Maybe LoggingInfo
$sel:loggingInfo:ClusterInfo' :: ClusterInfo -> Maybe LoggingInfo
loggingInfo} -> Maybe LoggingInfo
loggingInfo) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe LoggingInfo
a -> ClusterInfo
s {$sel:loggingInfo:ClusterInfo' :: Maybe LoggingInfo
loggingInfo = Maybe LoggingInfo
a} :: ClusterInfo)

-- | The connection string to use to connect to the Apache ZooKeeper cluster.
clusterInfo_zookeeperConnectString :: Lens.Lens' ClusterInfo (Prelude.Maybe Prelude.Text)
clusterInfo_zookeeperConnectString :: (Maybe Text -> f (Maybe Text)) -> ClusterInfo -> f ClusterInfo
clusterInfo_zookeeperConnectString = (ClusterInfo -> Maybe Text)
-> (ClusterInfo -> Maybe Text -> ClusterInfo)
-> Lens ClusterInfo ClusterInfo (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe Text
zookeeperConnectString :: Maybe Text
$sel:zookeeperConnectString:ClusterInfo' :: ClusterInfo -> Maybe Text
zookeeperConnectString} -> Maybe Text
zookeeperConnectString) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe Text
a -> ClusterInfo
s {$sel:zookeeperConnectString:ClusterInfo' :: Maybe Text
zookeeperConnectString = Maybe Text
a} :: ClusterInfo)

-- | The name of the cluster.
clusterInfo_clusterName :: Lens.Lens' ClusterInfo (Prelude.Maybe Prelude.Text)
clusterInfo_clusterName :: (Maybe Text -> f (Maybe Text)) -> ClusterInfo -> f ClusterInfo
clusterInfo_clusterName = (ClusterInfo -> Maybe Text)
-> (ClusterInfo -> Maybe Text -> ClusterInfo)
-> Lens ClusterInfo ClusterInfo (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe Text
clusterName :: Maybe Text
$sel:clusterName:ClusterInfo' :: ClusterInfo -> Maybe Text
clusterName} -> Maybe Text
clusterName) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe Text
a -> ClusterInfo
s {$sel:clusterName:ClusterInfo' :: Maybe Text
clusterName = Maybe Text
a} :: ClusterInfo)

-- | The connection string to use to connect to zookeeper cluster on Tls
-- port.
clusterInfo_zookeeperConnectStringTls :: Lens.Lens' ClusterInfo (Prelude.Maybe Prelude.Text)
clusterInfo_zookeeperConnectStringTls :: (Maybe Text -> f (Maybe Text)) -> ClusterInfo -> f ClusterInfo
clusterInfo_zookeeperConnectStringTls = (ClusterInfo -> Maybe Text)
-> (ClusterInfo -> Maybe Text -> ClusterInfo)
-> Lens ClusterInfo ClusterInfo (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe Text
zookeeperConnectStringTls :: Maybe Text
$sel:zookeeperConnectStringTls:ClusterInfo' :: ClusterInfo -> Maybe Text
zookeeperConnectStringTls} -> Maybe Text
zookeeperConnectStringTls) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe Text
a -> ClusterInfo
s {$sel:zookeeperConnectStringTls:ClusterInfo' :: Maybe Text
zookeeperConnectStringTls = Maybe Text
a} :: ClusterInfo)

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

-- | Tags attached to the cluster.
clusterInfo_tags :: Lens.Lens' ClusterInfo (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
clusterInfo_tags :: (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> ClusterInfo -> f ClusterInfo
clusterInfo_tags = (ClusterInfo -> Maybe (HashMap Text Text))
-> (ClusterInfo -> Maybe (HashMap Text Text) -> ClusterInfo)
-> Lens
     ClusterInfo
     ClusterInfo
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ClusterInfo' {Maybe (HashMap Text Text)
tags :: Maybe (HashMap Text Text)
$sel:tags:ClusterInfo' :: ClusterInfo -> Maybe (HashMap Text Text)
tags} -> Maybe (HashMap Text Text)
tags) (\s :: ClusterInfo
s@ClusterInfo' {} Maybe (HashMap Text Text)
a -> ClusterInfo
s {$sel:tags:ClusterInfo' :: Maybe (HashMap Text Text)
tags = Maybe (HashMap Text Text)
a} :: ClusterInfo) ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
 -> ClusterInfo -> f ClusterInfo)
-> ((Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
    -> Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> (Maybe (HashMap Text Text) -> f (Maybe (HashMap Text Text)))
-> ClusterInfo
-> f ClusterInfo
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
-> Iso
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
     (Maybe (HashMap Text Text))
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 AnIso
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
  (HashMap Text Text)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

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

instance Core.FromJSON ClusterInfo where
  parseJSON :: Value -> Parser ClusterInfo
parseJSON =
    String
-> (Object -> Parser ClusterInfo) -> Value -> Parser ClusterInfo
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ClusterInfo"
      ( \Object
x ->
          Maybe POSIX
-> Maybe Text
-> Maybe ClusterState
-> Maybe Text
-> Maybe Int
-> Maybe EnhancedMonitoring
-> Maybe BrokerNodeGroupInfo
-> Maybe OpenMonitoring
-> Maybe BrokerSoftwareInfo
-> Maybe Text
-> Maybe StateInfo
-> Maybe LoggingInfo
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ClientAuthentication
-> Maybe (HashMap Text Text)
-> Maybe EncryptionInfo
-> ClusterInfo
ClusterInfo'
            (Maybe POSIX
 -> Maybe Text
 -> Maybe ClusterState
 -> Maybe Text
 -> Maybe Int
 -> Maybe EnhancedMonitoring
 -> Maybe BrokerNodeGroupInfo
 -> Maybe OpenMonitoring
 -> Maybe BrokerSoftwareInfo
 -> Maybe Text
 -> Maybe StateInfo
 -> Maybe LoggingInfo
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe ClientAuthentication
 -> Maybe (HashMap Text Text)
 -> Maybe EncryptionInfo
 -> ClusterInfo)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe Text
      -> Maybe ClusterState
      -> Maybe Text
      -> Maybe Int
      -> Maybe EnhancedMonitoring
      -> Maybe BrokerNodeGroupInfo
      -> Maybe OpenMonitoring
      -> Maybe BrokerSoftwareInfo
      -> Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"creationTime")
            Parser
  (Maybe Text
   -> Maybe ClusterState
   -> Maybe Text
   -> Maybe Int
   -> Maybe EnhancedMonitoring
   -> Maybe BrokerNodeGroupInfo
   -> Maybe OpenMonitoring
   -> Maybe BrokerSoftwareInfo
   -> Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe Text)
-> Parser
     (Maybe ClusterState
      -> Maybe Text
      -> Maybe Int
      -> Maybe EnhancedMonitoring
      -> Maybe BrokerNodeGroupInfo
      -> Maybe OpenMonitoring
      -> Maybe BrokerSoftwareInfo
      -> Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"activeOperationArn")
            Parser
  (Maybe ClusterState
   -> Maybe Text
   -> Maybe Int
   -> Maybe EnhancedMonitoring
   -> Maybe BrokerNodeGroupInfo
   -> Maybe OpenMonitoring
   -> Maybe BrokerSoftwareInfo
   -> Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe ClusterState)
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe EnhancedMonitoring
      -> Maybe BrokerNodeGroupInfo
      -> Maybe OpenMonitoring
      -> Maybe BrokerSoftwareInfo
      -> Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ClusterState)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"state")
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe EnhancedMonitoring
   -> Maybe BrokerNodeGroupInfo
   -> Maybe OpenMonitoring
   -> Maybe BrokerSoftwareInfo
   -> Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe EnhancedMonitoring
      -> Maybe BrokerNodeGroupInfo
      -> Maybe OpenMonitoring
      -> Maybe BrokerSoftwareInfo
      -> Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clusterArn")
            Parser
  (Maybe Int
   -> Maybe EnhancedMonitoring
   -> Maybe BrokerNodeGroupInfo
   -> Maybe OpenMonitoring
   -> Maybe BrokerSoftwareInfo
   -> Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe Int)
-> Parser
     (Maybe EnhancedMonitoring
      -> Maybe BrokerNodeGroupInfo
      -> Maybe OpenMonitoring
      -> Maybe BrokerSoftwareInfo
      -> Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"numberOfBrokerNodes")
            Parser
  (Maybe EnhancedMonitoring
   -> Maybe BrokerNodeGroupInfo
   -> Maybe OpenMonitoring
   -> Maybe BrokerSoftwareInfo
   -> Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe EnhancedMonitoring)
-> Parser
     (Maybe BrokerNodeGroupInfo
      -> Maybe OpenMonitoring
      -> Maybe BrokerSoftwareInfo
      -> Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EnhancedMonitoring)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"enhancedMonitoring")
            Parser
  (Maybe BrokerNodeGroupInfo
   -> Maybe OpenMonitoring
   -> Maybe BrokerSoftwareInfo
   -> Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe BrokerNodeGroupInfo)
-> Parser
     (Maybe OpenMonitoring
      -> Maybe BrokerSoftwareInfo
      -> Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe BrokerNodeGroupInfo)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"brokerNodeGroupInfo")
            Parser
  (Maybe OpenMonitoring
   -> Maybe BrokerSoftwareInfo
   -> Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe OpenMonitoring)
-> Parser
     (Maybe BrokerSoftwareInfo
      -> Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe OpenMonitoring)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"openMonitoring")
            Parser
  (Maybe BrokerSoftwareInfo
   -> Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe BrokerSoftwareInfo)
-> Parser
     (Maybe Text
      -> Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe BrokerSoftwareInfo)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"currentBrokerSoftwareInfo")
            Parser
  (Maybe Text
   -> Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe Text)
-> Parser
     (Maybe StateInfo
      -> Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"currentVersion")
            Parser
  (Maybe StateInfo
   -> Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe StateInfo)
-> Parser
     (Maybe LoggingInfo
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe StateInfo)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"stateInfo")
            Parser
  (Maybe LoggingInfo
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe LoggingInfo)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LoggingInfo)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"loggingInfo")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"zookeeperConnectString")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clusterName")
            Parser
  (Maybe Text
   -> Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe Text)
-> Parser
     (Maybe ClientAuthentication
      -> Maybe (HashMap Text Text)
      -> Maybe EncryptionInfo
      -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"zookeeperConnectStringTls")
            Parser
  (Maybe ClientAuthentication
   -> Maybe (HashMap Text Text)
   -> Maybe EncryptionInfo
   -> ClusterInfo)
-> Parser (Maybe ClientAuthentication)
-> Parser
     (Maybe (HashMap Text Text) -> Maybe EncryptionInfo -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ClientAuthentication)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"clientAuthentication")
            Parser
  (Maybe (HashMap Text Text) -> Maybe EncryptionInfo -> ClusterInfo)
-> Parser (Maybe (HashMap Text Text))
-> Parser (Maybe EncryptionInfo -> ClusterInfo)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe (HashMap Text Text)))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"tags" Parser (Maybe (Maybe (HashMap Text Text)))
-> Maybe (HashMap Text Text) -> Parser (Maybe (HashMap Text Text))
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe (HashMap Text Text)
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe EncryptionInfo -> ClusterInfo)
-> Parser (Maybe EncryptionInfo) -> Parser ClusterInfo
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EncryptionInfo)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"encryptionInfo")
      )

instance Prelude.Hashable ClusterInfo

instance Prelude.NFData ClusterInfo