packages feed

stratosphere-0.26.0: library-gen/Stratosphere/ResourceProperties/EC2SpotFleetLaunchTemplateOverrides.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html

module Stratosphere.ResourceProperties.EC2SpotFleetLaunchTemplateOverrides where

import Stratosphere.ResourceImports


-- | Full data type definition for EC2SpotFleetLaunchTemplateOverrides. See
-- 'ec2SpotFleetLaunchTemplateOverrides' for a more convenient constructor.
data EC2SpotFleetLaunchTemplateOverrides =
  EC2SpotFleetLaunchTemplateOverrides
  { _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone :: Maybe (Val Text)
  , _eC2SpotFleetLaunchTemplateOverridesInstanceType :: Maybe (Val Text)
  , _eC2SpotFleetLaunchTemplateOverridesSpotPrice :: Maybe (Val Text)
  , _eC2SpotFleetLaunchTemplateOverridesSubnetId :: Maybe (Val Text)
  , _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity :: Maybe (Val Double)
  } deriving (Show, Eq)

instance ToJSON EC2SpotFleetLaunchTemplateOverrides where
  toJSON EC2SpotFleetLaunchTemplateOverrides{..} =
    object $
    catMaybes
    [ fmap (("AvailabilityZone",) . toJSON) _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone
    , fmap (("InstanceType",) . toJSON) _eC2SpotFleetLaunchTemplateOverridesInstanceType
    , fmap (("SpotPrice",) . toJSON) _eC2SpotFleetLaunchTemplateOverridesSpotPrice
    , fmap (("SubnetId",) . toJSON) _eC2SpotFleetLaunchTemplateOverridesSubnetId
    , fmap (("WeightedCapacity",) . toJSON . fmap Double') _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity
    ]

instance FromJSON EC2SpotFleetLaunchTemplateOverrides where
  parseJSON (Object obj) =
    EC2SpotFleetLaunchTemplateOverrides <$>
      (obj .:? "AvailabilityZone") <*>
      (obj .:? "InstanceType") <*>
      (obj .:? "SpotPrice") <*>
      (obj .:? "SubnetId") <*>
      fmap (fmap (fmap unDouble')) (obj .:? "WeightedCapacity")
  parseJSON _ = mempty

-- | Constructor for 'EC2SpotFleetLaunchTemplateOverrides' containing required
-- fields as arguments.
ec2SpotFleetLaunchTemplateOverrides
  :: EC2SpotFleetLaunchTemplateOverrides
ec2SpotFleetLaunchTemplateOverrides  =
  EC2SpotFleetLaunchTemplateOverrides
  { _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone = Nothing
  , _eC2SpotFleetLaunchTemplateOverridesInstanceType = Nothing
  , _eC2SpotFleetLaunchTemplateOverridesSpotPrice = Nothing
  , _eC2SpotFleetLaunchTemplateOverridesSubnetId = Nothing
  , _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-availabilityzone
ecsfltoAvailabilityZone :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Text))
ecsfltoAvailabilityZone = lens _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesAvailabilityZone = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-instancetype
ecsfltoInstanceType :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Text))
ecsfltoInstanceType = lens _eC2SpotFleetLaunchTemplateOverridesInstanceType (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesInstanceType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-spotprice
ecsfltoSpotPrice :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Text))
ecsfltoSpotPrice = lens _eC2SpotFleetLaunchTemplateOverridesSpotPrice (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesSpotPrice = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-subnetid
ecsfltoSubnetId :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Text))
ecsfltoSubnetId = lens _eC2SpotFleetLaunchTemplateOverridesSubnetId (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesSubnetId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-spotfleet-launchtemplateoverrides.html#cfn-ec2-spotfleet-launchtemplateoverrides-weightedcapacity
ecsfltoWeightedCapacity :: Lens' EC2SpotFleetLaunchTemplateOverrides (Maybe (Val Double))
ecsfltoWeightedCapacity = lens _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity (\s a -> s { _eC2SpotFleetLaunchTemplateOverridesWeightedCapacity = a })