{-# 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.ComputeOptimizer.Types.EBSMetricName
-- 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.ComputeOptimizer.Types.EBSMetricName
  ( EBSMetricName
      ( ..,
        EBSMetricName_VolumeReadBytesPerSecond,
        EBSMetricName_VolumeReadOpsPerSecond,
        EBSMetricName_VolumeWriteBytesPerSecond,
        EBSMetricName_VolumeWriteOpsPerSecond
      ),
  )
where

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

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

pattern EBSMetricName_VolumeReadBytesPerSecond :: EBSMetricName
pattern $bEBSMetricName_VolumeReadBytesPerSecond :: EBSMetricName
$mEBSMetricName_VolumeReadBytesPerSecond :: forall r. EBSMetricName -> (Void# -> r) -> (Void# -> r) -> r
EBSMetricName_VolumeReadBytesPerSecond = EBSMetricName' "VolumeReadBytesPerSecond"

pattern EBSMetricName_VolumeReadOpsPerSecond :: EBSMetricName
pattern $bEBSMetricName_VolumeReadOpsPerSecond :: EBSMetricName
$mEBSMetricName_VolumeReadOpsPerSecond :: forall r. EBSMetricName -> (Void# -> r) -> (Void# -> r) -> r
EBSMetricName_VolumeReadOpsPerSecond = EBSMetricName' "VolumeReadOpsPerSecond"

pattern EBSMetricName_VolumeWriteBytesPerSecond :: EBSMetricName
pattern $bEBSMetricName_VolumeWriteBytesPerSecond :: EBSMetricName
$mEBSMetricName_VolumeWriteBytesPerSecond :: forall r. EBSMetricName -> (Void# -> r) -> (Void# -> r) -> r
EBSMetricName_VolumeWriteBytesPerSecond = EBSMetricName' "VolumeWriteBytesPerSecond"

pattern EBSMetricName_VolumeWriteOpsPerSecond :: EBSMetricName
pattern $bEBSMetricName_VolumeWriteOpsPerSecond :: EBSMetricName
$mEBSMetricName_VolumeWriteOpsPerSecond :: forall r. EBSMetricName -> (Void# -> r) -> (Void# -> r) -> r
EBSMetricName_VolumeWriteOpsPerSecond = EBSMetricName' "VolumeWriteOpsPerSecond"

{-# COMPLETE
  EBSMetricName_VolumeReadBytesPerSecond,
  EBSMetricName_VolumeReadOpsPerSecond,
  EBSMetricName_VolumeWriteBytesPerSecond,
  EBSMetricName_VolumeWriteOpsPerSecond,
  EBSMetricName'
  #-}