{-# 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.SMS.Types.VmManagerType
-- 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.SMS.Types.VmManagerType
  ( VmManagerType
      ( ..,
        VmManagerType_HYPERV_MANAGER,
        VmManagerType_SCVMM,
        VmManagerType_VSPHERE
      ),
  )
where

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

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

pattern VmManagerType_HYPERV_MANAGER :: VmManagerType
pattern $bVmManagerType_HYPERV_MANAGER :: VmManagerType
$mVmManagerType_HYPERV_MANAGER :: forall r. VmManagerType -> (Void# -> r) -> (Void# -> r) -> r
VmManagerType_HYPERV_MANAGER = VmManagerType' "HYPERV-MANAGER"

pattern VmManagerType_SCVMM :: VmManagerType
pattern $bVmManagerType_SCVMM :: VmManagerType
$mVmManagerType_SCVMM :: forall r. VmManagerType -> (Void# -> r) -> (Void# -> r) -> r
VmManagerType_SCVMM = VmManagerType' "SCVMM"

pattern VmManagerType_VSPHERE :: VmManagerType
pattern $bVmManagerType_VSPHERE :: VmManagerType
$mVmManagerType_VSPHERE :: forall r. VmManagerType -> (Void# -> r) -> (Void# -> r) -> r
VmManagerType_VSPHERE = VmManagerType' "VSPHERE"

{-# COMPLETE
  VmManagerType_HYPERV_MANAGER,
  VmManagerType_SCVMM,
  VmManagerType_VSPHERE,
  VmManagerType'
  #-}