{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}

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

-- |
-- Module      : Amazonka.Kafka.Types.EnhancedMonitoring
-- 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.EnhancedMonitoring
  ( EnhancedMonitoring
      ( ..,
        EnhancedMonitoring_DEFAULT,
        EnhancedMonitoring_PER_BROKER,
        EnhancedMonitoring_PER_TOPIC_PER_BROKER,
        EnhancedMonitoring_PER_TOPIC_PER_PARTITION
      ),
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Prelude as Prelude

-- | 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>.
newtype EnhancedMonitoring = EnhancedMonitoring'
  { EnhancedMonitoring -> Text
fromEnhancedMonitoring ::
      Core.Text
  }
  deriving stock
    ( Int -> EnhancedMonitoring -> ShowS
[EnhancedMonitoring] -> ShowS
EnhancedMonitoring -> String
(Int -> EnhancedMonitoring -> ShowS)
-> (EnhancedMonitoring -> String)
-> ([EnhancedMonitoring] -> ShowS)
-> Show EnhancedMonitoring
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EnhancedMonitoring] -> ShowS
$cshowList :: [EnhancedMonitoring] -> ShowS
show :: EnhancedMonitoring -> String
$cshow :: EnhancedMonitoring -> String
showsPrec :: Int -> EnhancedMonitoring -> ShowS
$cshowsPrec :: Int -> EnhancedMonitoring -> ShowS
Prelude.Show,
      ReadPrec [EnhancedMonitoring]
ReadPrec EnhancedMonitoring
Int -> ReadS EnhancedMonitoring
ReadS [EnhancedMonitoring]
(Int -> ReadS EnhancedMonitoring)
-> ReadS [EnhancedMonitoring]
-> ReadPrec EnhancedMonitoring
-> ReadPrec [EnhancedMonitoring]
-> Read EnhancedMonitoring
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EnhancedMonitoring]
$creadListPrec :: ReadPrec [EnhancedMonitoring]
readPrec :: ReadPrec EnhancedMonitoring
$creadPrec :: ReadPrec EnhancedMonitoring
readList :: ReadS [EnhancedMonitoring]
$creadList :: ReadS [EnhancedMonitoring]
readsPrec :: Int -> ReadS EnhancedMonitoring
$creadsPrec :: Int -> ReadS EnhancedMonitoring
Prelude.Read,
      EnhancedMonitoring -> EnhancedMonitoring -> Bool
(EnhancedMonitoring -> EnhancedMonitoring -> Bool)
-> (EnhancedMonitoring -> EnhancedMonitoring -> Bool)
-> Eq EnhancedMonitoring
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
$c/= :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
== :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
$c== :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
Prelude.Eq,
      Eq EnhancedMonitoring
Eq EnhancedMonitoring
-> (EnhancedMonitoring -> EnhancedMonitoring -> Ordering)
-> (EnhancedMonitoring -> EnhancedMonitoring -> Bool)
-> (EnhancedMonitoring -> EnhancedMonitoring -> Bool)
-> (EnhancedMonitoring -> EnhancedMonitoring -> Bool)
-> (EnhancedMonitoring -> EnhancedMonitoring -> Bool)
-> (EnhancedMonitoring -> EnhancedMonitoring -> EnhancedMonitoring)
-> (EnhancedMonitoring -> EnhancedMonitoring -> EnhancedMonitoring)
-> Ord EnhancedMonitoring
EnhancedMonitoring -> EnhancedMonitoring -> Bool
EnhancedMonitoring -> EnhancedMonitoring -> Ordering
EnhancedMonitoring -> EnhancedMonitoring -> EnhancedMonitoring
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
min :: EnhancedMonitoring -> EnhancedMonitoring -> EnhancedMonitoring
$cmin :: EnhancedMonitoring -> EnhancedMonitoring -> EnhancedMonitoring
max :: EnhancedMonitoring -> EnhancedMonitoring -> EnhancedMonitoring
$cmax :: EnhancedMonitoring -> EnhancedMonitoring -> EnhancedMonitoring
>= :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
$c>= :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
> :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
$c> :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
<= :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
$c<= :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
< :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
$c< :: EnhancedMonitoring -> EnhancedMonitoring -> Bool
compare :: EnhancedMonitoring -> EnhancedMonitoring -> Ordering
$ccompare :: EnhancedMonitoring -> EnhancedMonitoring -> Ordering
$cp1Ord :: Eq EnhancedMonitoring
Prelude.Ord,
      (forall x. EnhancedMonitoring -> Rep EnhancedMonitoring x)
-> (forall x. Rep EnhancedMonitoring x -> EnhancedMonitoring)
-> Generic EnhancedMonitoring
forall x. Rep EnhancedMonitoring x -> EnhancedMonitoring
forall x. EnhancedMonitoring -> Rep EnhancedMonitoring x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep EnhancedMonitoring x -> EnhancedMonitoring
$cfrom :: forall x. EnhancedMonitoring -> Rep EnhancedMonitoring x
Prelude.Generic
    )
  deriving newtype
    ( Int -> EnhancedMonitoring -> Int
EnhancedMonitoring -> Int
(Int -> EnhancedMonitoring -> Int)
-> (EnhancedMonitoring -> Int) -> Hashable EnhancedMonitoring
forall a. (Int -> a -> Int) -> (a -> Int) -> Hashable a
hash :: EnhancedMonitoring -> Int
$chash :: EnhancedMonitoring -> Int
hashWithSalt :: Int -> EnhancedMonitoring -> Int
$chashWithSalt :: Int -> EnhancedMonitoring -> Int
Prelude.Hashable,
      EnhancedMonitoring -> ()
(EnhancedMonitoring -> ()) -> NFData EnhancedMonitoring
forall a. (a -> ()) -> NFData a
rnf :: EnhancedMonitoring -> ()
$crnf :: EnhancedMonitoring -> ()
Prelude.NFData,
      Text -> Either String EnhancedMonitoring
(Text -> Either String EnhancedMonitoring)
-> FromText EnhancedMonitoring
forall a. (Text -> Either String a) -> FromText a
fromText :: Text -> Either String EnhancedMonitoring
$cfromText :: Text -> Either String EnhancedMonitoring
Core.FromText,
      EnhancedMonitoring -> Text
(EnhancedMonitoring -> Text) -> ToText EnhancedMonitoring
forall a. (a -> Text) -> ToText a
toText :: EnhancedMonitoring -> Text
$ctoText :: EnhancedMonitoring -> Text
Core.ToText,
      EnhancedMonitoring -> ByteString
(EnhancedMonitoring -> ByteString)
-> ToByteString EnhancedMonitoring
forall a. (a -> ByteString) -> ToByteString a
toBS :: EnhancedMonitoring -> ByteString
$ctoBS :: EnhancedMonitoring -> ByteString
Core.ToByteString,
      EnhancedMonitoring -> ByteStringBuilder
(EnhancedMonitoring -> ByteStringBuilder)
-> ToLog EnhancedMonitoring
forall a. (a -> ByteStringBuilder) -> ToLog a
build :: EnhancedMonitoring -> ByteStringBuilder
$cbuild :: EnhancedMonitoring -> ByteStringBuilder
Core.ToLog,
      HeaderName -> EnhancedMonitoring -> [Header]
(HeaderName -> EnhancedMonitoring -> [Header])
-> ToHeader EnhancedMonitoring
forall a. (HeaderName -> a -> [Header]) -> ToHeader a
toHeader :: HeaderName -> EnhancedMonitoring -> [Header]
$ctoHeader :: HeaderName -> EnhancedMonitoring -> [Header]
Core.ToHeader,
      EnhancedMonitoring -> QueryString
(EnhancedMonitoring -> QueryString) -> ToQuery EnhancedMonitoring
forall a. (a -> QueryString) -> ToQuery a
toQuery :: EnhancedMonitoring -> QueryString
$ctoQuery :: EnhancedMonitoring -> QueryString
Core.ToQuery,
      Value -> Parser [EnhancedMonitoring]
Value -> Parser EnhancedMonitoring
(Value -> Parser EnhancedMonitoring)
-> (Value -> Parser [EnhancedMonitoring])
-> FromJSON EnhancedMonitoring
forall a.
(Value -> Parser a) -> (Value -> Parser [a]) -> FromJSON a
parseJSONList :: Value -> Parser [EnhancedMonitoring]
$cparseJSONList :: Value -> Parser [EnhancedMonitoring]
parseJSON :: Value -> Parser EnhancedMonitoring
$cparseJSON :: Value -> Parser EnhancedMonitoring
Core.FromJSON,
      FromJSONKeyFunction [EnhancedMonitoring]
FromJSONKeyFunction EnhancedMonitoring
FromJSONKeyFunction EnhancedMonitoring
-> FromJSONKeyFunction [EnhancedMonitoring]
-> FromJSONKey EnhancedMonitoring
forall a.
FromJSONKeyFunction a -> FromJSONKeyFunction [a] -> FromJSONKey a
fromJSONKeyList :: FromJSONKeyFunction [EnhancedMonitoring]
$cfromJSONKeyList :: FromJSONKeyFunction [EnhancedMonitoring]
fromJSONKey :: FromJSONKeyFunction EnhancedMonitoring
$cfromJSONKey :: FromJSONKeyFunction EnhancedMonitoring
Core.FromJSONKey,
      [EnhancedMonitoring] -> Encoding
[EnhancedMonitoring] -> Value
EnhancedMonitoring -> Encoding
EnhancedMonitoring -> Value
(EnhancedMonitoring -> Value)
-> (EnhancedMonitoring -> Encoding)
-> ([EnhancedMonitoring] -> Value)
-> ([EnhancedMonitoring] -> Encoding)
-> ToJSON EnhancedMonitoring
forall a.
(a -> Value)
-> (a -> Encoding)
-> ([a] -> Value)
-> ([a] -> Encoding)
-> ToJSON a
toEncodingList :: [EnhancedMonitoring] -> Encoding
$ctoEncodingList :: [EnhancedMonitoring] -> Encoding
toJSONList :: [EnhancedMonitoring] -> Value
$ctoJSONList :: [EnhancedMonitoring] -> Value
toEncoding :: EnhancedMonitoring -> Encoding
$ctoEncoding :: EnhancedMonitoring -> Encoding
toJSON :: EnhancedMonitoring -> Value
$ctoJSON :: EnhancedMonitoring -> Value
Core.ToJSON,
      ToJSONKeyFunction [EnhancedMonitoring]
ToJSONKeyFunction EnhancedMonitoring
ToJSONKeyFunction EnhancedMonitoring
-> ToJSONKeyFunction [EnhancedMonitoring]
-> ToJSONKey EnhancedMonitoring
forall a.
ToJSONKeyFunction a -> ToJSONKeyFunction [a] -> ToJSONKey a
toJSONKeyList :: ToJSONKeyFunction [EnhancedMonitoring]
$ctoJSONKeyList :: ToJSONKeyFunction [EnhancedMonitoring]
toJSONKey :: ToJSONKeyFunction EnhancedMonitoring
$ctoJSONKey :: ToJSONKeyFunction EnhancedMonitoring
Core.ToJSONKey,
      [Node] -> Either String EnhancedMonitoring
([Node] -> Either String EnhancedMonitoring)
-> FromXML EnhancedMonitoring
forall a. ([Node] -> Either String a) -> FromXML a
parseXML :: [Node] -> Either String EnhancedMonitoring
$cparseXML :: [Node] -> Either String EnhancedMonitoring
Core.FromXML,
      EnhancedMonitoring -> XML
(EnhancedMonitoring -> XML) -> ToXML EnhancedMonitoring
forall a. (a -> XML) -> ToXML a
toXML :: EnhancedMonitoring -> XML
$ctoXML :: EnhancedMonitoring -> XML
Core.ToXML
    )

pattern EnhancedMonitoring_DEFAULT :: EnhancedMonitoring
pattern $bEnhancedMonitoring_DEFAULT :: EnhancedMonitoring
$mEnhancedMonitoring_DEFAULT :: forall r. EnhancedMonitoring -> (Void# -> r) -> (Void# -> r) -> r
EnhancedMonitoring_DEFAULT = EnhancedMonitoring' "DEFAULT"

pattern EnhancedMonitoring_PER_BROKER :: EnhancedMonitoring
pattern $bEnhancedMonitoring_PER_BROKER :: EnhancedMonitoring
$mEnhancedMonitoring_PER_BROKER :: forall r. EnhancedMonitoring -> (Void# -> r) -> (Void# -> r) -> r
EnhancedMonitoring_PER_BROKER = EnhancedMonitoring' "PER_BROKER"

pattern EnhancedMonitoring_PER_TOPIC_PER_BROKER :: EnhancedMonitoring
pattern $bEnhancedMonitoring_PER_TOPIC_PER_BROKER :: EnhancedMonitoring
$mEnhancedMonitoring_PER_TOPIC_PER_BROKER :: forall r. EnhancedMonitoring -> (Void# -> r) -> (Void# -> r) -> r
EnhancedMonitoring_PER_TOPIC_PER_BROKER = EnhancedMonitoring' "PER_TOPIC_PER_BROKER"

pattern EnhancedMonitoring_PER_TOPIC_PER_PARTITION :: EnhancedMonitoring
pattern $bEnhancedMonitoring_PER_TOPIC_PER_PARTITION :: EnhancedMonitoring
$mEnhancedMonitoring_PER_TOPIC_PER_PARTITION :: forall r. EnhancedMonitoring -> (Void# -> r) -> (Void# -> r) -> r
EnhancedMonitoring_PER_TOPIC_PER_PARTITION = EnhancedMonitoring' "PER_TOPIC_PER_PARTITION"

{-# COMPLETE
  EnhancedMonitoring_DEFAULT,
  EnhancedMonitoring_PER_BROKER,
  EnhancedMonitoring_PER_TOPIC_PER_BROKER,
  EnhancedMonitoring_PER_TOPIC_PER_PARTITION,
  EnhancedMonitoring'
  #-}