stratosphere-0.1.0: library-gen/Stratosphere/Resources/Subnet.hs
{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE OverloadedStrings #-}
-- | Creates a subnet in an existing VPC.
module Stratosphere.Resources.Subnet where
import Control.Lens
import Data.Aeson
import Data.Aeson.Types
import Data.Text
import GHC.Generics
import Stratosphere.Values
import Stratosphere.ResourceProperties.ResourceTag
-- | Full data type definition for Subnet. See 'subnet' for a more convenient
-- constructor.
data Subnet =
Subnet
{ _subnetAvailabilityZone :: Maybe (Val Text)
, _subnetCidrBlock :: Val Text
, _subnetMapPublicIpOnLaunch :: Maybe (Val Bool')
, _subnetTags :: Maybe [ResourceTag]
, _subnetVpcId :: Val Text
} deriving (Show, Generic)
instance ToJSON Subnet where
toJSON = genericToJSON defaultOptions { fieldLabelModifier = Prelude.drop 7, omitNothingFields = True }
instance FromJSON Subnet where
parseJSON = genericParseJSON defaultOptions { fieldLabelModifier = Prelude.drop 7, omitNothingFields = True }
-- | Constructor for 'Subnet' containing required fields as arguments.
subnet
:: Val Text -- ^ 'sCidrBlock'
-> Val Text -- ^ 'sVpcId'
-> Subnet
subnet cidrBlockarg vpcIdarg =
Subnet
{ _subnetAvailabilityZone = Nothing
, _subnetCidrBlock = cidrBlockarg
, _subnetMapPublicIpOnLaunch = Nothing
, _subnetTags = Nothing
, _subnetVpcId = vpcIdarg
}
-- | The availability zone in which you want the subnet. Default: AWS selects
-- a zone for you (recommended).
sAvailabilityZone :: Lens' Subnet (Maybe (Val Text))
sAvailabilityZone = lens _subnetAvailabilityZone (\s a -> s { _subnetAvailabilityZone = a })
-- | The CIDR block that you want the subnet to cover (for example,
-- "10.0.0.0/24").
sCidrBlock :: Lens' Subnet (Val Text)
sCidrBlock = lens _subnetCidrBlock (\s a -> s { _subnetCidrBlock = a })
-- | Indicates whether instances that are launched in this subnet receive a
-- public IP address. By default, the value is false.
sMapPublicIpOnLaunch :: Lens' Subnet (Maybe (Val Bool'))
sMapPublicIpOnLaunch = lens _subnetMapPublicIpOnLaunch (\s a -> s { _subnetMapPublicIpOnLaunch = a })
-- | An arbitrary set of tags (key–value pairs) for this subnet.
sTags :: Lens' Subnet (Maybe [ResourceTag])
sTags = lens _subnetTags (\s a -> s { _subnetTags = a })
-- | A Ref structure that contains the ID of the VPC on which you want to
-- create the subnet. The VPC ID is provided as the value of the "Ref"
-- property, as: { "Ref": "VPCID" }.
sVpcId :: Lens' Subnet (Val Text)
sVpcId = lens _subnetVpcId (\s a -> s { _subnetVpcId = a })