packages feed

stratosphere-0.32.0: library-gen/Stratosphere/ResourceProperties/EC2LaunchTemplatePlacement.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html

module Stratosphere.ResourceProperties.EC2LaunchTemplatePlacement where

import Stratosphere.ResourceImports


-- | Full data type definition for EC2LaunchTemplatePlacement. See
-- 'ec2LaunchTemplatePlacement' for a more convenient constructor.
data EC2LaunchTemplatePlacement =
  EC2LaunchTemplatePlacement
  { _eC2LaunchTemplatePlacementAffinity :: Maybe (Val Text)
  , _eC2LaunchTemplatePlacementAvailabilityZone :: Maybe (Val Text)
  , _eC2LaunchTemplatePlacementGroupName :: Maybe (Val Text)
  , _eC2LaunchTemplatePlacementHostId :: Maybe (Val Text)
  , _eC2LaunchTemplatePlacementTenancy :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToJSON EC2LaunchTemplatePlacement where
  toJSON EC2LaunchTemplatePlacement{..} =
    object $
    catMaybes
    [ fmap (("Affinity",) . toJSON) _eC2LaunchTemplatePlacementAffinity
    , fmap (("AvailabilityZone",) . toJSON) _eC2LaunchTemplatePlacementAvailabilityZone
    , fmap (("GroupName",) . toJSON) _eC2LaunchTemplatePlacementGroupName
    , fmap (("HostId",) . toJSON) _eC2LaunchTemplatePlacementHostId
    , fmap (("Tenancy",) . toJSON) _eC2LaunchTemplatePlacementTenancy
    ]

-- | Constructor for 'EC2LaunchTemplatePlacement' containing required fields
-- as arguments.
ec2LaunchTemplatePlacement
  :: EC2LaunchTemplatePlacement
ec2LaunchTemplatePlacement  =
  EC2LaunchTemplatePlacement
  { _eC2LaunchTemplatePlacementAffinity = Nothing
  , _eC2LaunchTemplatePlacementAvailabilityZone = Nothing
  , _eC2LaunchTemplatePlacementGroupName = Nothing
  , _eC2LaunchTemplatePlacementHostId = Nothing
  , _eC2LaunchTemplatePlacementTenancy = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-affinity
ecltpAffinity :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
ecltpAffinity = lens _eC2LaunchTemplatePlacementAffinity (\s a -> s { _eC2LaunchTemplatePlacementAffinity = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-availabilityzone
ecltpAvailabilityZone :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
ecltpAvailabilityZone = lens _eC2LaunchTemplatePlacementAvailabilityZone (\s a -> s { _eC2LaunchTemplatePlacementAvailabilityZone = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-groupname
ecltpGroupName :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
ecltpGroupName = lens _eC2LaunchTemplatePlacementGroupName (\s a -> s { _eC2LaunchTemplatePlacementGroupName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-hostid
ecltpHostId :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
ecltpHostId = lens _eC2LaunchTemplatePlacementHostId (\s a -> s { _eC2LaunchTemplatePlacementHostId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ec2-launchtemplate-launchtemplatedata-placement.html#cfn-ec2-launchtemplate-launchtemplatedata-placement-tenancy
ecltpTenancy :: Lens' EC2LaunchTemplatePlacement (Maybe (Val Text))
ecltpTenancy = lens _eC2LaunchTemplatePlacementTenancy (\s a -> s { _eC2LaunchTemplatePlacementTenancy = a })