packages feed

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

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

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

module Stratosphere.ResourceProperties.ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification where

import Stratosphere.ResourceImports


-- | Full data type definition for
-- ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification. See
-- 'imageBuilderImageRecipeEbsInstanceBlockDeviceSpecification' for a more
-- convenient constructor.
data ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification =
  ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification
  { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationDeleteOnTermination :: Maybe (Val Bool)
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationEncrypted :: Maybe (Val Bool)
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationIops :: Maybe (Val Integer)
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationKmsKeyId :: Maybe (Val Text)
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationSnapshotId :: Maybe (Val Text)
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeSize :: Maybe (Val Integer)
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeType :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification where
  toJSON ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification{..} =
    object $
    catMaybes
    [ fmap (("DeleteOnTermination",) . toJSON) _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationDeleteOnTermination
    , fmap (("Encrypted",) . toJSON) _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationEncrypted
    , fmap (("Iops",) . toJSON) _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationIops
    , fmap (("KmsKeyId",) . toJSON) _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationKmsKeyId
    , fmap (("SnapshotId",) . toJSON) _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationSnapshotId
    , fmap (("VolumeSize",) . toJSON) _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeSize
    , fmap (("VolumeType",) . toJSON) _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeType
    ]

-- | Constructor for
-- 'ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification' containing
-- required fields as arguments.
imageBuilderImageRecipeEbsInstanceBlockDeviceSpecification
  :: ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification
imageBuilderImageRecipeEbsInstanceBlockDeviceSpecification  =
  ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification
  { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationDeleteOnTermination = Nothing
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationEncrypted = Nothing
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationIops = Nothing
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationKmsKeyId = Nothing
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationSnapshotId = Nothing
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeSize = Nothing
  , _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeType = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html#cfn-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification-deleteontermination
ibireibdsDeleteOnTermination :: Lens' ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification (Maybe (Val Bool))
ibireibdsDeleteOnTermination = lens _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationDeleteOnTermination (\s a -> s { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationDeleteOnTermination = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html#cfn-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification-encrypted
ibireibdsEncrypted :: Lens' ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification (Maybe (Val Bool))
ibireibdsEncrypted = lens _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationEncrypted (\s a -> s { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationEncrypted = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html#cfn-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification-iops
ibireibdsIops :: Lens' ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification (Maybe (Val Integer))
ibireibdsIops = lens _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationIops (\s a -> s { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationIops = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html#cfn-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification-kmskeyid
ibireibdsKmsKeyId :: Lens' ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification (Maybe (Val Text))
ibireibdsKmsKeyId = lens _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationKmsKeyId (\s a -> s { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationKmsKeyId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html#cfn-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification-snapshotid
ibireibdsSnapshotId :: Lens' ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification (Maybe (Val Text))
ibireibdsSnapshotId = lens _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationSnapshotId (\s a -> s { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationSnapshotId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html#cfn-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification-volumesize
ibireibdsVolumeSize :: Lens' ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification (Maybe (Val Integer))
ibireibdsVolumeSize = lens _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeSize (\s a -> s { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeSize = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification.html#cfn-imagebuilder-imagerecipe-ebsinstanceblockdevicespecification-volumetype
ibireibdsVolumeType :: Lens' ImageBuilderImageRecipeEbsInstanceBlockDeviceSpecification (Maybe (Val Text))
ibireibdsVolumeType = lens _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeType (\s a -> s { _imageBuilderImageRecipeEbsInstanceBlockDeviceSpecificationVolumeType = a })