module Stratosphere.ImageBuilder.ImageRecipe.InstanceBlockDeviceMappingProperty (
        module Exports, InstanceBlockDeviceMappingProperty(..),
        mkInstanceBlockDeviceMappingProperty
    ) where
import qualified Data.Aeson as JSON
import qualified Stratosphere.Prelude as Prelude
import Stratosphere.Property
import {-# SOURCE #-} Stratosphere.ImageBuilder.ImageRecipe.EbsInstanceBlockDeviceSpecificationProperty as Exports
import Stratosphere.ResourceProperties
import Stratosphere.Value
data InstanceBlockDeviceMappingProperty
  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html>
    InstanceBlockDeviceMappingProperty {InstanceBlockDeviceMappingProperty -> ()
haddock_workaround_ :: (),
                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html#cfn-imagebuilder-imagerecipe-instanceblockdevicemapping-devicename>
                                        InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
deviceName :: (Prelude.Maybe (Value Prelude.Text)),
                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html#cfn-imagebuilder-imagerecipe-instanceblockdevicemapping-ebs>
                                        InstanceBlockDeviceMappingProperty
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
ebs :: (Prelude.Maybe EbsInstanceBlockDeviceSpecificationProperty),
                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html#cfn-imagebuilder-imagerecipe-instanceblockdevicemapping-nodevice>
                                        InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
noDevice :: (Prelude.Maybe (Value Prelude.Text)),
                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html#cfn-imagebuilder-imagerecipe-instanceblockdevicemapping-virtualname>
                                        InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
virtualName :: (Prelude.Maybe (Value Prelude.Text))}
  deriving stock (InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty -> Bool
(InstanceBlockDeviceMappingProperty
 -> InstanceBlockDeviceMappingProperty -> Bool)
-> (InstanceBlockDeviceMappingProperty
    -> InstanceBlockDeviceMappingProperty -> Bool)
-> Eq InstanceBlockDeviceMappingProperty
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty -> Bool
== :: InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty -> Bool
$c/= :: InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty -> Bool
/= :: InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty -> Bool
Prelude.Eq, Int -> InstanceBlockDeviceMappingProperty -> ShowS
[InstanceBlockDeviceMappingProperty] -> ShowS
InstanceBlockDeviceMappingProperty -> String
(Int -> InstanceBlockDeviceMappingProperty -> ShowS)
-> (InstanceBlockDeviceMappingProperty -> String)
-> ([InstanceBlockDeviceMappingProperty] -> ShowS)
-> Show InstanceBlockDeviceMappingProperty
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> InstanceBlockDeviceMappingProperty -> ShowS
showsPrec :: Int -> InstanceBlockDeviceMappingProperty -> ShowS
$cshow :: InstanceBlockDeviceMappingProperty -> String
show :: InstanceBlockDeviceMappingProperty -> String
$cshowList :: [InstanceBlockDeviceMappingProperty] -> ShowS
showList :: [InstanceBlockDeviceMappingProperty] -> ShowS
Prelude.Show)
mkInstanceBlockDeviceMappingProperty ::
  InstanceBlockDeviceMappingProperty
mkInstanceBlockDeviceMappingProperty :: InstanceBlockDeviceMappingProperty
mkInstanceBlockDeviceMappingProperty
  = InstanceBlockDeviceMappingProperty
      {haddock_workaround_ :: ()
haddock_workaround_ = (), deviceName :: Maybe (Value Text)
deviceName = Maybe (Value Text)
forall a. Maybe a
Prelude.Nothing,
       ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
ebs = Maybe EbsInstanceBlockDeviceSpecificationProperty
forall a. Maybe a
Prelude.Nothing, noDevice :: Maybe (Value Text)
noDevice = Maybe (Value Text)
forall a. Maybe a
Prelude.Nothing,
       virtualName :: Maybe (Value Text)
virtualName = Maybe (Value Text)
forall a. Maybe a
Prelude.Nothing}
instance ToResourceProperties InstanceBlockDeviceMappingProperty where
  toResourceProperties :: InstanceBlockDeviceMappingProperty -> ResourceProperties
toResourceProperties InstanceBlockDeviceMappingProperty {Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: InstanceBlockDeviceMappingProperty -> ()
deviceName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
ebs :: InstanceBlockDeviceMappingProperty
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
virtualName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
..}
    = ResourceProperties
        {awsType :: Text
awsType = Text
"AWS::ImageBuilder::ImageRecipe.InstanceBlockDeviceMapping",
         supportsTags :: Bool
supportsTags = Bool
Prelude.False,
         properties :: Object
properties = [Item Object] -> Object
forall l. IsList l => [Item l] -> l
Prelude.fromList
                        ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
                           [Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"DeviceName" (Value Text -> (Key, Value))
-> Maybe (Value Text) -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Value Text)
deviceName,
                            Key -> EbsInstanceBlockDeviceSpecificationProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Ebs" (EbsInstanceBlockDeviceSpecificationProperty -> (Key, Value))
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
-> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EbsInstanceBlockDeviceSpecificationProperty
ebs,
                            Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"NoDevice" (Value Text -> (Key, Value))
-> Maybe (Value Text) -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Value Text)
noDevice,
                            Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"VirtualName" (Value Text -> (Key, Value))
-> Maybe (Value Text) -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Value Text)
virtualName])}
instance JSON.ToJSON InstanceBlockDeviceMappingProperty where
  toJSON :: InstanceBlockDeviceMappingProperty -> Value
toJSON InstanceBlockDeviceMappingProperty {Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: InstanceBlockDeviceMappingProperty -> ()
deviceName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
ebs :: InstanceBlockDeviceMappingProperty
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
virtualName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
..}
    = [(Key, Value)] -> Value
JSON.object
        ([Item [(Key, Value)]] -> [(Key, Value)]
forall l. IsList l => [Item l] -> l
Prelude.fromList
           ([Maybe (Key, Value)] -> [(Key, Value)]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
              [Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"DeviceName" (Value Text -> (Key, Value))
-> Maybe (Value Text) -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Value Text)
deviceName,
               Key -> EbsInstanceBlockDeviceSpecificationProperty -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"Ebs" (EbsInstanceBlockDeviceSpecificationProperty -> (Key, Value))
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
-> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe EbsInstanceBlockDeviceSpecificationProperty
ebs,
               Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"NoDevice" (Value Text -> (Key, Value))
-> Maybe (Value Text) -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Value Text)
noDevice,
               Key -> Value Text -> (Key, Value)
forall v. ToJSON v => Key -> v -> (Key, Value)
forall e kv v. (KeyValue e kv, ToJSON v) => Key -> v -> kv
(JSON..=) Key
"VirtualName" (Value Text -> (Key, Value))
-> Maybe (Value Text) -> Maybe (Key, Value)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe (Value Text)
virtualName]))
instance Property "DeviceName" InstanceBlockDeviceMappingProperty where
  type PropertyType "DeviceName" InstanceBlockDeviceMappingProperty = Value Prelude.Text
  set :: PropertyType "DeviceName" InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty
set PropertyType "DeviceName" InstanceBlockDeviceMappingProperty
newValue InstanceBlockDeviceMappingProperty {Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: InstanceBlockDeviceMappingProperty -> ()
deviceName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
ebs :: InstanceBlockDeviceMappingProperty
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
virtualName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
..}
    = InstanceBlockDeviceMappingProperty
        {deviceName :: Maybe (Value Text)
deviceName = Value Text -> Maybe (Value Text)
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "DeviceName" InstanceBlockDeviceMappingProperty
Value Text
newValue, Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: ()
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
haddock_workaround_ :: ()
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
..}
instance Property "Ebs" InstanceBlockDeviceMappingProperty where
  type PropertyType "Ebs" InstanceBlockDeviceMappingProperty = EbsInstanceBlockDeviceSpecificationProperty
  set :: PropertyType "Ebs" InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty
set PropertyType "Ebs" InstanceBlockDeviceMappingProperty
newValue InstanceBlockDeviceMappingProperty {Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: InstanceBlockDeviceMappingProperty -> ()
deviceName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
ebs :: InstanceBlockDeviceMappingProperty
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
virtualName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
..}
    = InstanceBlockDeviceMappingProperty
        {ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
ebs = EbsInstanceBlockDeviceSpecificationProperty
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "Ebs" InstanceBlockDeviceMappingProperty
EbsInstanceBlockDeviceSpecificationProperty
newValue, Maybe (Value Text)
()
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
..}
instance Property "NoDevice" InstanceBlockDeviceMappingProperty where
  type PropertyType "NoDevice" InstanceBlockDeviceMappingProperty = Value Prelude.Text
  set :: PropertyType "NoDevice" InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty
set PropertyType "NoDevice" InstanceBlockDeviceMappingProperty
newValue InstanceBlockDeviceMappingProperty {Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: InstanceBlockDeviceMappingProperty -> ()
deviceName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
ebs :: InstanceBlockDeviceMappingProperty
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
virtualName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
..}
    = InstanceBlockDeviceMappingProperty
        {noDevice :: Maybe (Value Text)
noDevice = Value Text -> Maybe (Value Text)
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "NoDevice" InstanceBlockDeviceMappingProperty
Value Text
newValue, Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
virtualName :: Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
virtualName :: Maybe (Value Text)
..}
instance Property "VirtualName" InstanceBlockDeviceMappingProperty where
  type PropertyType "VirtualName" InstanceBlockDeviceMappingProperty = Value Prelude.Text
  set :: PropertyType "VirtualName" InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty
-> InstanceBlockDeviceMappingProperty
set PropertyType "VirtualName" InstanceBlockDeviceMappingProperty
newValue InstanceBlockDeviceMappingProperty {Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: InstanceBlockDeviceMappingProperty -> ()
deviceName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
ebs :: InstanceBlockDeviceMappingProperty
-> Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
virtualName :: InstanceBlockDeviceMappingProperty -> Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
virtualName :: Maybe (Value Text)
..}
    = InstanceBlockDeviceMappingProperty
        {virtualName :: Maybe (Value Text)
virtualName = Value Text -> Maybe (Value Text)
forall a. a -> Maybe a
forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure PropertyType "VirtualName" InstanceBlockDeviceMappingProperty
Value Text
newValue, Maybe (Value Text)
Maybe EbsInstanceBlockDeviceSpecificationProperty
()
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
haddock_workaround_ :: ()
deviceName :: Maybe (Value Text)
ebs :: Maybe EbsInstanceBlockDeviceSpecificationProperty
noDevice :: Maybe (Value Text)
..}