stratosphere-0.47.0: library-gen/Stratosphere/Resources/EKSNodegroup.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html
module Stratosphere.Resources.EKSNodegroup where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.EKSNodegroupRemoteAccess
import Stratosphere.ResourceProperties.EKSNodegroupScalingConfig
-- | Full data type definition for EKSNodegroup. See 'eksNodegroup' for a more
-- convenient constructor.
data EKSNodegroup =
EKSNodegroup
{ _eKSNodegroupAmiType :: Maybe (Val Text)
, _eKSNodegroupClusterName :: Val Text
, _eKSNodegroupDiskSize :: Maybe (Val Double)
, _eKSNodegroupForceUpdateEnabled :: Maybe (Val Bool)
, _eKSNodegroupInstanceTypes :: Maybe (ValList Text)
, _eKSNodegroupLabels :: Maybe Object
, _eKSNodegroupNodeRole :: Val Text
, _eKSNodegroupNodegroupName :: Maybe (Val Text)
, _eKSNodegroupReleaseVersion :: Maybe (Val Text)
, _eKSNodegroupRemoteAccess :: Maybe EKSNodegroupRemoteAccess
, _eKSNodegroupScalingConfig :: Maybe EKSNodegroupScalingConfig
, _eKSNodegroupSubnets :: ValList Text
, _eKSNodegroupTags :: Maybe Object
, _eKSNodegroupVersion :: Maybe (Val Text)
} deriving (Show, Eq)
instance ToResourceProperties EKSNodegroup where
toResourceProperties EKSNodegroup{..} =
ResourceProperties
{ resourcePropertiesType = "AWS::EKS::Nodegroup"
, resourcePropertiesProperties =
hashMapFromList $ catMaybes
[ fmap (("AmiType",) . toJSON) _eKSNodegroupAmiType
, (Just . ("ClusterName",) . toJSON) _eKSNodegroupClusterName
, fmap (("DiskSize",) . toJSON) _eKSNodegroupDiskSize
, fmap (("ForceUpdateEnabled",) . toJSON) _eKSNodegroupForceUpdateEnabled
, fmap (("InstanceTypes",) . toJSON) _eKSNodegroupInstanceTypes
, fmap (("Labels",) . toJSON) _eKSNodegroupLabels
, (Just . ("NodeRole",) . toJSON) _eKSNodegroupNodeRole
, fmap (("NodegroupName",) . toJSON) _eKSNodegroupNodegroupName
, fmap (("ReleaseVersion",) . toJSON) _eKSNodegroupReleaseVersion
, fmap (("RemoteAccess",) . toJSON) _eKSNodegroupRemoteAccess
, fmap (("ScalingConfig",) . toJSON) _eKSNodegroupScalingConfig
, (Just . ("Subnets",) . toJSON) _eKSNodegroupSubnets
, fmap (("Tags",) . toJSON) _eKSNodegroupTags
, fmap (("Version",) . toJSON) _eKSNodegroupVersion
]
}
-- | Constructor for 'EKSNodegroup' containing required fields as arguments.
eksNodegroup
:: Val Text -- ^ 'eksnClusterName'
-> Val Text -- ^ 'eksnNodeRole'
-> ValList Text -- ^ 'eksnSubnets'
-> EKSNodegroup
eksNodegroup clusterNamearg nodeRolearg subnetsarg =
EKSNodegroup
{ _eKSNodegroupAmiType = Nothing
, _eKSNodegroupClusterName = clusterNamearg
, _eKSNodegroupDiskSize = Nothing
, _eKSNodegroupForceUpdateEnabled = Nothing
, _eKSNodegroupInstanceTypes = Nothing
, _eKSNodegroupLabels = Nothing
, _eKSNodegroupNodeRole = nodeRolearg
, _eKSNodegroupNodegroupName = Nothing
, _eKSNodegroupReleaseVersion = Nothing
, _eKSNodegroupRemoteAccess = Nothing
, _eKSNodegroupScalingConfig = Nothing
, _eKSNodegroupSubnets = subnetsarg
, _eKSNodegroupTags = Nothing
, _eKSNodegroupVersion = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-amitype
eksnAmiType :: Lens' EKSNodegroup (Maybe (Val Text))
eksnAmiType = lens _eKSNodegroupAmiType (\s a -> s { _eKSNodegroupAmiType = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-clustername
eksnClusterName :: Lens' EKSNodegroup (Val Text)
eksnClusterName = lens _eKSNodegroupClusterName (\s a -> s { _eKSNodegroupClusterName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-disksize
eksnDiskSize :: Lens' EKSNodegroup (Maybe (Val Double))
eksnDiskSize = lens _eKSNodegroupDiskSize (\s a -> s { _eKSNodegroupDiskSize = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-forceupdateenabled
eksnForceUpdateEnabled :: Lens' EKSNodegroup (Maybe (Val Bool))
eksnForceUpdateEnabled = lens _eKSNodegroupForceUpdateEnabled (\s a -> s { _eKSNodegroupForceUpdateEnabled = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-instancetypes
eksnInstanceTypes :: Lens' EKSNodegroup (Maybe (ValList Text))
eksnInstanceTypes = lens _eKSNodegroupInstanceTypes (\s a -> s { _eKSNodegroupInstanceTypes = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-labels
eksnLabels :: Lens' EKSNodegroup (Maybe Object)
eksnLabels = lens _eKSNodegroupLabels (\s a -> s { _eKSNodegroupLabels = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-noderole
eksnNodeRole :: Lens' EKSNodegroup (Val Text)
eksnNodeRole = lens _eKSNodegroupNodeRole (\s a -> s { _eKSNodegroupNodeRole = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-nodegroupname
eksnNodegroupName :: Lens' EKSNodegroup (Maybe (Val Text))
eksnNodegroupName = lens _eKSNodegroupNodegroupName (\s a -> s { _eKSNodegroupNodegroupName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-releaseversion
eksnReleaseVersion :: Lens' EKSNodegroup (Maybe (Val Text))
eksnReleaseVersion = lens _eKSNodegroupReleaseVersion (\s a -> s { _eKSNodegroupReleaseVersion = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-remoteaccess
eksnRemoteAccess :: Lens' EKSNodegroup (Maybe EKSNodegroupRemoteAccess)
eksnRemoteAccess = lens _eKSNodegroupRemoteAccess (\s a -> s { _eKSNodegroupRemoteAccess = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-scalingconfig
eksnScalingConfig :: Lens' EKSNodegroup (Maybe EKSNodegroupScalingConfig)
eksnScalingConfig = lens _eKSNodegroupScalingConfig (\s a -> s { _eKSNodegroupScalingConfig = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-subnets
eksnSubnets :: Lens' EKSNodegroup (ValList Text)
eksnSubnets = lens _eKSNodegroupSubnets (\s a -> s { _eKSNodegroupSubnets = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-tags
eksnTags :: Lens' EKSNodegroup (Maybe Object)
eksnTags = lens _eKSNodegroupTags (\s a -> s { _eKSNodegroupTags = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-eks-nodegroup.html#cfn-eks-nodegroup-version
eksnVersion :: Lens' EKSNodegroup (Maybe (Val Text))
eksnVersion = lens _eKSNodegroupVersion (\s a -> s { _eKSNodegroupVersion = a })