packages feed

stratosphere-0.52.0: library-gen/Stratosphere/ResourceProperties/ImageBuilderImageRecipeInstanceBlockDeviceMapping.hs

{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html

module Stratosphere.ResourceProperties.ImageBuilderImageRecipeInstanceBlockDeviceMapping where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification

-- | Full data type definition for
-- ImageBuilderImageRecipeInstanceBlockDeviceMapping. See
-- 'imageBuilderImageRecipeInstanceBlockDeviceMapping' for a more convenient
-- constructor.
data ImageBuilderImageRecipeInstanceBlockDeviceMapping =
  ImageBuilderImageRecipeInstanceBlockDeviceMapping
  { _imageBuilderImageRecipeInstanceBlockDeviceMappingDeviceName :: Maybe (Val Text)
  , _imageBuilderImageRecipeInstanceBlockDeviceMappingEbs :: Maybe ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification
  , _imageBuilderImageRecipeInstanceBlockDeviceMappingNoDevice :: Maybe (Val Text)
  , _imageBuilderImageRecipeInstanceBlockDeviceMappingVirtualName :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON ImageBuilderImageRecipeInstanceBlockDeviceMapping where
  toJSON ImageBuilderImageRecipeInstanceBlockDeviceMapping{..} =
    object $
    catMaybes
    [ fmap (("DeviceName",) . toJSON) _imageBuilderImageRecipeInstanceBlockDeviceMappingDeviceName
    , fmap (("Ebs",) . toJSON) _imageBuilderImageRecipeInstanceBlockDeviceMappingEbs
    , fmap (("NoDevice",) . toJSON) _imageBuilderImageRecipeInstanceBlockDeviceMappingNoDevice
    , fmap (("VirtualName",) . toJSON) _imageBuilderImageRecipeInstanceBlockDeviceMappingVirtualName
    ]

-- | Constructor for 'ImageBuilderImageRecipeInstanceBlockDeviceMapping'
-- containing required fields as arguments.
imageBuilderImageRecipeInstanceBlockDeviceMapping
  :: ImageBuilderImageRecipeInstanceBlockDeviceMapping
imageBuilderImageRecipeInstanceBlockDeviceMapping  =
  ImageBuilderImageRecipeInstanceBlockDeviceMapping
  { _imageBuilderImageRecipeInstanceBlockDeviceMappingDeviceName = Nothing
  , _imageBuilderImageRecipeInstanceBlockDeviceMappingEbs = Nothing
  , _imageBuilderImageRecipeInstanceBlockDeviceMappingNoDevice = Nothing
  , _imageBuilderImageRecipeInstanceBlockDeviceMappingVirtualName = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html#cfn-imagebuilder-imagerecipe-instanceblockdevicemapping-devicename
ibiribdmDeviceName :: Lens' ImageBuilderImageRecipeInstanceBlockDeviceMapping (Maybe (Val Text))
ibiribdmDeviceName = lens _imageBuilderImageRecipeInstanceBlockDeviceMappingDeviceName (\s a -> s { _imageBuilderImageRecipeInstanceBlockDeviceMappingDeviceName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html#cfn-imagebuilder-imagerecipe-instanceblockdevicemapping-ebs
ibiribdmEbs :: Lens' ImageBuilderImageRecipeInstanceBlockDeviceMapping (Maybe ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification)
ibiribdmEbs = lens _imageBuilderImageRecipeInstanceBlockDeviceMappingEbs (\s a -> s { _imageBuilderImageRecipeInstanceBlockDeviceMappingEbs = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html#cfn-imagebuilder-imagerecipe-instanceblockdevicemapping-nodevice
ibiribdmNoDevice :: Lens' ImageBuilderImageRecipeInstanceBlockDeviceMapping (Maybe (Val Text))
ibiribdmNoDevice = lens _imageBuilderImageRecipeInstanceBlockDeviceMappingNoDevice (\s a -> s { _imageBuilderImageRecipeInstanceBlockDeviceMappingNoDevice = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-instanceblockdevicemapping.html#cfn-imagebuilder-imagerecipe-instanceblockdevicemapping-virtualname
ibiribdmVirtualName :: Lens' ImageBuilderImageRecipeInstanceBlockDeviceMapping (Maybe (Val Text))
ibiribdmVirtualName = lens _imageBuilderImageRecipeInstanceBlockDeviceMappingVirtualName (\s a -> s { _imageBuilderImageRecipeInstanceBlockDeviceMappingVirtualName = a })