{-# 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.EMR.Types.InstanceGroupState
-- 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.EMR.Types.InstanceGroupState
  ( InstanceGroupState
      ( ..,
        InstanceGroupState_ARRESTED,
        InstanceGroupState_BOOTSTRAPPING,
        InstanceGroupState_ENDED,
        InstanceGroupState_PROVISIONING,
        InstanceGroupState_RECONFIGURING,
        InstanceGroupState_RESIZING,
        InstanceGroupState_RUNNING,
        InstanceGroupState_SHUTTING_DOWN,
        InstanceGroupState_SUSPENDED,
        InstanceGroupState_TERMINATED,
        InstanceGroupState_TERMINATING
      ),
  )
where

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

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

pattern InstanceGroupState_ARRESTED :: InstanceGroupState
pattern $bInstanceGroupState_ARRESTED :: InstanceGroupState
$mInstanceGroupState_ARRESTED :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_ARRESTED = InstanceGroupState' "ARRESTED"

pattern InstanceGroupState_BOOTSTRAPPING :: InstanceGroupState
pattern $bInstanceGroupState_BOOTSTRAPPING :: InstanceGroupState
$mInstanceGroupState_BOOTSTRAPPING :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_BOOTSTRAPPING = InstanceGroupState' "BOOTSTRAPPING"

pattern InstanceGroupState_ENDED :: InstanceGroupState
pattern $bInstanceGroupState_ENDED :: InstanceGroupState
$mInstanceGroupState_ENDED :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_ENDED = InstanceGroupState' "ENDED"

pattern InstanceGroupState_PROVISIONING :: InstanceGroupState
pattern $bInstanceGroupState_PROVISIONING :: InstanceGroupState
$mInstanceGroupState_PROVISIONING :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_PROVISIONING = InstanceGroupState' "PROVISIONING"

pattern InstanceGroupState_RECONFIGURING :: InstanceGroupState
pattern $bInstanceGroupState_RECONFIGURING :: InstanceGroupState
$mInstanceGroupState_RECONFIGURING :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_RECONFIGURING = InstanceGroupState' "RECONFIGURING"

pattern InstanceGroupState_RESIZING :: InstanceGroupState
pattern $bInstanceGroupState_RESIZING :: InstanceGroupState
$mInstanceGroupState_RESIZING :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_RESIZING = InstanceGroupState' "RESIZING"

pattern InstanceGroupState_RUNNING :: InstanceGroupState
pattern $bInstanceGroupState_RUNNING :: InstanceGroupState
$mInstanceGroupState_RUNNING :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_RUNNING = InstanceGroupState' "RUNNING"

pattern InstanceGroupState_SHUTTING_DOWN :: InstanceGroupState
pattern $bInstanceGroupState_SHUTTING_DOWN :: InstanceGroupState
$mInstanceGroupState_SHUTTING_DOWN :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_SHUTTING_DOWN = InstanceGroupState' "SHUTTING_DOWN"

pattern InstanceGroupState_SUSPENDED :: InstanceGroupState
pattern $bInstanceGroupState_SUSPENDED :: InstanceGroupState
$mInstanceGroupState_SUSPENDED :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_SUSPENDED = InstanceGroupState' "SUSPENDED"

pattern InstanceGroupState_TERMINATED :: InstanceGroupState
pattern $bInstanceGroupState_TERMINATED :: InstanceGroupState
$mInstanceGroupState_TERMINATED :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_TERMINATED = InstanceGroupState' "TERMINATED"

pattern InstanceGroupState_TERMINATING :: InstanceGroupState
pattern $bInstanceGroupState_TERMINATING :: InstanceGroupState
$mInstanceGroupState_TERMINATING :: forall r. InstanceGroupState -> (Void# -> r) -> (Void# -> r) -> r
InstanceGroupState_TERMINATING = InstanceGroupState' "TERMINATING"

{-# COMPLETE
  InstanceGroupState_ARRESTED,
  InstanceGroupState_BOOTSTRAPPING,
  InstanceGroupState_ENDED,
  InstanceGroupState_PROVISIONING,
  InstanceGroupState_RECONFIGURING,
  InstanceGroupState_RESIZING,
  InstanceGroupState_RUNNING,
  InstanceGroupState_SHUTTING_DOWN,
  InstanceGroupState_SUSPENDED,
  InstanceGroupState_TERMINATED,
  InstanceGroupState_TERMINATING,
  InstanceGroupState'
  #-}