{-# 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.ElastiCache.Types.NodeUpdateInitiatedBy
-- 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.ElastiCache.Types.NodeUpdateInitiatedBy
  ( NodeUpdateInitiatedBy
      ( ..,
        NodeUpdateInitiatedBy_Customer,
        NodeUpdateInitiatedBy_System
      ),
  )
where

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

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

pattern NodeUpdateInitiatedBy_Customer :: NodeUpdateInitiatedBy
pattern $bNodeUpdateInitiatedBy_Customer :: NodeUpdateInitiatedBy
$mNodeUpdateInitiatedBy_Customer :: forall r.
NodeUpdateInitiatedBy -> (Void# -> r) -> (Void# -> r) -> r
NodeUpdateInitiatedBy_Customer = NodeUpdateInitiatedBy' "customer"

pattern NodeUpdateInitiatedBy_System :: NodeUpdateInitiatedBy
pattern $bNodeUpdateInitiatedBy_System :: NodeUpdateInitiatedBy
$mNodeUpdateInitiatedBy_System :: forall r.
NodeUpdateInitiatedBy -> (Void# -> r) -> (Void# -> r) -> r
NodeUpdateInitiatedBy_System = NodeUpdateInitiatedBy' "system"

{-# COMPLETE
  NodeUpdateInitiatedBy_Customer,
  NodeUpdateInitiatedBy_System,
  NodeUpdateInitiatedBy'
  #-}