stratosphere-0.1.2: library-gen/Stratosphere/ResourceProperties/AutoScalingBlockDeviceMapping.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | The AutoScaling Block Device Mapping type is an embedded property of the
-- AWS::AutoScaling::LaunchConfiguration type.
module Stratosphere.ResourceProperties.AutoScalingBlockDeviceMapping where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.AutoScalingEBSBlockDevice
-- | Full data type definition for AutoScalingBlockDeviceMapping. See
-- 'autoScalingBlockDeviceMapping' for a more convenient constructor.
data AutoScalingBlockDeviceMapping =
AutoScalingBlockDeviceMapping
{ _autoScalingBlockDeviceMappingDeviceName :: Val Text
, _autoScalingBlockDeviceMappingEbs :: Maybe AutoScalingEBSBlockDevice
, _autoScalingBlockDeviceMappingNoDevice :: Maybe (Val Bool')
, _autoScalingBlockDeviceMappingVirtualName :: Maybe (Val Text)
} deriving (Show, Generic)
instance ToJSON AutoScalingBlockDeviceMapping where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 30, omitNothingFields = True }
instance FromJSON AutoScalingBlockDeviceMapping where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 30, omitNothingFields = True }
-- | Constructor for 'AutoScalingBlockDeviceMapping' containing required
-- fields as arguments.
autoScalingBlockDeviceMapping
:: Val Text -- ^ 'asbdmDeviceName'
-> AutoScalingBlockDeviceMapping
autoScalingBlockDeviceMapping deviceNamearg =
AutoScalingBlockDeviceMapping
{ _autoScalingBlockDeviceMappingDeviceName = deviceNamearg
, _autoScalingBlockDeviceMappingEbs = Nothing
, _autoScalingBlockDeviceMappingNoDevice = Nothing
, _autoScalingBlockDeviceMappingVirtualName = Nothing
}
-- | The name of the device within Amazon EC2.
asbdmDeviceName :: Lens' AutoScalingBlockDeviceMapping (Val Text)
asbdmDeviceName = lens _autoScalingBlockDeviceMappingDeviceName (\s a -> s { _autoScalingBlockDeviceMappingDeviceName = a })
-- | The Amazon Elastic Block Store volume information.
asbdmEbs :: Lens' AutoScalingBlockDeviceMapping (Maybe AutoScalingEBSBlockDevice)
asbdmEbs = lens _autoScalingBlockDeviceMappingEbs (\s a -> s { _autoScalingBlockDeviceMappingEbs = a })
-- | Suppresses the device mapping. If NoDevice is set to true for the root
-- device, the instance might fail the Amazon EC2 health check. Auto Scaling
-- launches a replacement instance if the instance fails the health check.
asbdmNoDevice :: Lens' AutoScalingBlockDeviceMapping (Maybe (Val Bool'))
asbdmNoDevice = lens _autoScalingBlockDeviceMappingNoDevice (\s a -> s { _autoScalingBlockDeviceMappingNoDevice = a })
-- | The name of the virtual device. The name must be in the form ephemeralX
-- where X is a number starting from zero (0), for example, ephemeral0.
asbdmVirtualName :: Lens' AutoScalingBlockDeviceMapping (Maybe (Val Text))
asbdmVirtualName = lens _autoScalingBlockDeviceMappingVirtualName (\s a -> s { _autoScalingBlockDeviceMappingVirtualName = a })