stratosphere-0.38.0: library-gen/Stratosphere/Resources/EC2CapacityReservation.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html
module Stratosphere.Resources.EC2CapacityReservation where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.EC2CapacityReservationTagSpecification
-- | Full data type definition for EC2CapacityReservation. See
-- 'ec2CapacityReservation' for a more convenient constructor.
data EC2CapacityReservation =
EC2CapacityReservation
{ _eC2CapacityReservationAvailabilityZone :: Val Text
, _eC2CapacityReservationEbsOptimized :: Maybe (Val Bool)
, _eC2CapacityReservationEndDate :: Maybe (Val Text)
, _eC2CapacityReservationEndDateType :: Maybe (Val Text)
, _eC2CapacityReservationEphemeralStorage :: Maybe (Val Bool)
, _eC2CapacityReservationInstanceCount :: Val Integer
, _eC2CapacityReservationInstanceMatchCriteria :: Maybe (Val Text)
, _eC2CapacityReservationInstancePlatform :: Val Text
, _eC2CapacityReservationInstanceType :: Val Text
, _eC2CapacityReservationTagSpecifications :: Maybe [EC2CapacityReservationTagSpecification]
, _eC2CapacityReservationTenancy :: Maybe (Val Text)
} deriving (Show, Eq)
instance ToResourceProperties EC2CapacityReservation where
toResourceProperties EC2CapacityReservation{..} =
ResourceProperties
{ resourcePropertiesType = "AWS::EC2::CapacityReservation"
, resourcePropertiesProperties =
hashMapFromList $ catMaybes
[ (Just . ("AvailabilityZone",) . toJSON) _eC2CapacityReservationAvailabilityZone
, fmap (("EbsOptimized",) . toJSON) _eC2CapacityReservationEbsOptimized
, fmap (("EndDate",) . toJSON) _eC2CapacityReservationEndDate
, fmap (("EndDateType",) . toJSON) _eC2CapacityReservationEndDateType
, fmap (("EphemeralStorage",) . toJSON) _eC2CapacityReservationEphemeralStorage
, (Just . ("InstanceCount",) . toJSON) _eC2CapacityReservationInstanceCount
, fmap (("InstanceMatchCriteria",) . toJSON) _eC2CapacityReservationInstanceMatchCriteria
, (Just . ("InstancePlatform",) . toJSON) _eC2CapacityReservationInstancePlatform
, (Just . ("InstanceType",) . toJSON) _eC2CapacityReservationInstanceType
, fmap (("TagSpecifications",) . toJSON) _eC2CapacityReservationTagSpecifications
, fmap (("Tenancy",) . toJSON) _eC2CapacityReservationTenancy
]
}
-- | Constructor for 'EC2CapacityReservation' containing required fields as
-- arguments.
ec2CapacityReservation
:: Val Text -- ^ 'eccrAvailabilityZone'
-> Val Integer -- ^ 'eccrInstanceCount'
-> Val Text -- ^ 'eccrInstancePlatform'
-> Val Text -- ^ 'eccrInstanceType'
-> EC2CapacityReservation
ec2CapacityReservation availabilityZonearg instanceCountarg instancePlatformarg instanceTypearg =
EC2CapacityReservation
{ _eC2CapacityReservationAvailabilityZone = availabilityZonearg
, _eC2CapacityReservationEbsOptimized = Nothing
, _eC2CapacityReservationEndDate = Nothing
, _eC2CapacityReservationEndDateType = Nothing
, _eC2CapacityReservationEphemeralStorage = Nothing
, _eC2CapacityReservationInstanceCount = instanceCountarg
, _eC2CapacityReservationInstanceMatchCriteria = Nothing
, _eC2CapacityReservationInstancePlatform = instancePlatformarg
, _eC2CapacityReservationInstanceType = instanceTypearg
, _eC2CapacityReservationTagSpecifications = Nothing
, _eC2CapacityReservationTenancy = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-availabilityzone
eccrAvailabilityZone :: Lens' EC2CapacityReservation (Val Text)
eccrAvailabilityZone = lens _eC2CapacityReservationAvailabilityZone (\s a -> s { _eC2CapacityReservationAvailabilityZone = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-ebsoptimized
eccrEbsOptimized :: Lens' EC2CapacityReservation (Maybe (Val Bool))
eccrEbsOptimized = lens _eC2CapacityReservationEbsOptimized (\s a -> s { _eC2CapacityReservationEbsOptimized = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-enddate
eccrEndDate :: Lens' EC2CapacityReservation (Maybe (Val Text))
eccrEndDate = lens _eC2CapacityReservationEndDate (\s a -> s { _eC2CapacityReservationEndDate = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-enddatetype
eccrEndDateType :: Lens' EC2CapacityReservation (Maybe (Val Text))
eccrEndDateType = lens _eC2CapacityReservationEndDateType (\s a -> s { _eC2CapacityReservationEndDateType = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-ephemeralstorage
eccrEphemeralStorage :: Lens' EC2CapacityReservation (Maybe (Val Bool))
eccrEphemeralStorage = lens _eC2CapacityReservationEphemeralStorage (\s a -> s { _eC2CapacityReservationEphemeralStorage = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-instancecount
eccrInstanceCount :: Lens' EC2CapacityReservation (Val Integer)
eccrInstanceCount = lens _eC2CapacityReservationInstanceCount (\s a -> s { _eC2CapacityReservationInstanceCount = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-instancematchcriteria
eccrInstanceMatchCriteria :: Lens' EC2CapacityReservation (Maybe (Val Text))
eccrInstanceMatchCriteria = lens _eC2CapacityReservationInstanceMatchCriteria (\s a -> s { _eC2CapacityReservationInstanceMatchCriteria = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-instanceplatform
eccrInstancePlatform :: Lens' EC2CapacityReservation (Val Text)
eccrInstancePlatform = lens _eC2CapacityReservationInstancePlatform (\s a -> s { _eC2CapacityReservationInstancePlatform = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-instancetype
eccrInstanceType :: Lens' EC2CapacityReservation (Val Text)
eccrInstanceType = lens _eC2CapacityReservationInstanceType (\s a -> s { _eC2CapacityReservationInstanceType = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-tagspecifications
eccrTagSpecifications :: Lens' EC2CapacityReservation (Maybe [EC2CapacityReservationTagSpecification])
eccrTagSpecifications = lens _eC2CapacityReservationTagSpecifications (\s a -> s { _eC2CapacityReservationTagSpecifications = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-capacityreservation.html#cfn-ec2-capacityreservation-tenancy
eccrTenancy :: Lens' EC2CapacityReservation (Maybe (Val Text))
eccrTenancy = lens _eC2CapacityReservationTenancy (\s a -> s { _eC2CapacityReservationTenancy = a })