stratosphere-0.15.2: library-gen/Stratosphere/Resources/OpsWorksStack.hs
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TupleSections #-}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html
module Stratosphere.Resources.OpsWorksStack where
import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.OpsWorksStackChefConfiguration
import Stratosphere.ResourceProperties.OpsWorksStackStackConfigurationManager
import Stratosphere.ResourceProperties.OpsWorksStackSource
import Stratosphere.ResourceProperties.OpsWorksStackElasticIp
import Stratosphere.ResourceProperties.OpsWorksStackRdsDbInstance
import Stratosphere.ResourceProperties.Tag
-- | Full data type definition for OpsWorksStack. See 'opsWorksStack' for a
-- more convenient constructor.
data OpsWorksStack =
OpsWorksStack
{ _opsWorksStackAgentVersion :: Maybe (Val Text)
, _opsWorksStackAttributes :: Maybe Object
, _opsWorksStackChefConfiguration :: Maybe OpsWorksStackChefConfiguration
, _opsWorksStackCloneAppIds :: Maybe (ValList Text)
, _opsWorksStackClonePermissions :: Maybe (Val Bool)
, _opsWorksStackConfigurationManager :: Maybe OpsWorksStackStackConfigurationManager
, _opsWorksStackCustomCookbooksSource :: Maybe OpsWorksStackSource
, _opsWorksStackCustomJson :: Maybe Object
, _opsWorksStackDefaultAvailabilityZone :: Maybe (Val Text)
, _opsWorksStackDefaultInstanceProfileArn :: Val Text
, _opsWorksStackDefaultOs :: Maybe (Val Text)
, _opsWorksStackDefaultRootDeviceType :: Maybe (Val Text)
, _opsWorksStackDefaultSshKeyName :: Maybe (Val Text)
, _opsWorksStackDefaultSubnetId :: Maybe (Val Text)
, _opsWorksStackEcsClusterArn :: Maybe (Val Text)
, _opsWorksStackElasticIps :: Maybe [OpsWorksStackElasticIp]
, _opsWorksStackHostnameTheme :: Maybe (Val Text)
, _opsWorksStackName :: Val Text
, _opsWorksStackRdsDbInstances :: Maybe [OpsWorksStackRdsDbInstance]
, _opsWorksStackServiceRoleArn :: Val Text
, _opsWorksStackSourceStackId :: Maybe (Val Text)
, _opsWorksStackTags :: Maybe [Tag]
, _opsWorksStackUseCustomCookbooks :: Maybe (Val Bool)
, _opsWorksStackUseOpsworksSecurityGroups :: Maybe (Val Bool)
, _opsWorksStackVpcId :: Maybe (Val Text)
} deriving (Show, Eq)
instance ToJSON OpsWorksStack where
toJSON OpsWorksStack{..} =
object $
catMaybes
[ fmap (("AgentVersion",) . toJSON) _opsWorksStackAgentVersion
, fmap (("Attributes",) . toJSON) _opsWorksStackAttributes
, fmap (("ChefConfiguration",) . toJSON) _opsWorksStackChefConfiguration
, fmap (("CloneAppIds",) . toJSON) _opsWorksStackCloneAppIds
, fmap (("ClonePermissions",) . toJSON . fmap Bool') _opsWorksStackClonePermissions
, fmap (("ConfigurationManager",) . toJSON) _opsWorksStackConfigurationManager
, fmap (("CustomCookbooksSource",) . toJSON) _opsWorksStackCustomCookbooksSource
, fmap (("CustomJson",) . toJSON) _opsWorksStackCustomJson
, fmap (("DefaultAvailabilityZone",) . toJSON) _opsWorksStackDefaultAvailabilityZone
, (Just . ("DefaultInstanceProfileArn",) . toJSON) _opsWorksStackDefaultInstanceProfileArn
, fmap (("DefaultOs",) . toJSON) _opsWorksStackDefaultOs
, fmap (("DefaultRootDeviceType",) . toJSON) _opsWorksStackDefaultRootDeviceType
, fmap (("DefaultSshKeyName",) . toJSON) _opsWorksStackDefaultSshKeyName
, fmap (("DefaultSubnetId",) . toJSON) _opsWorksStackDefaultSubnetId
, fmap (("EcsClusterArn",) . toJSON) _opsWorksStackEcsClusterArn
, fmap (("ElasticIps",) . toJSON) _opsWorksStackElasticIps
, fmap (("HostnameTheme",) . toJSON) _opsWorksStackHostnameTheme
, (Just . ("Name",) . toJSON) _opsWorksStackName
, fmap (("RdsDbInstances",) . toJSON) _opsWorksStackRdsDbInstances
, (Just . ("ServiceRoleArn",) . toJSON) _opsWorksStackServiceRoleArn
, fmap (("SourceStackId",) . toJSON) _opsWorksStackSourceStackId
, fmap (("Tags",) . toJSON) _opsWorksStackTags
, fmap (("UseCustomCookbooks",) . toJSON . fmap Bool') _opsWorksStackUseCustomCookbooks
, fmap (("UseOpsworksSecurityGroups",) . toJSON . fmap Bool') _opsWorksStackUseOpsworksSecurityGroups
, fmap (("VpcId",) . toJSON) _opsWorksStackVpcId
]
instance FromJSON OpsWorksStack where
parseJSON (Object obj) =
OpsWorksStack <$>
(obj .:? "AgentVersion") <*>
(obj .:? "Attributes") <*>
(obj .:? "ChefConfiguration") <*>
(obj .:? "CloneAppIds") <*>
fmap (fmap (fmap unBool')) (obj .:? "ClonePermissions") <*>
(obj .:? "ConfigurationManager") <*>
(obj .:? "CustomCookbooksSource") <*>
(obj .:? "CustomJson") <*>
(obj .:? "DefaultAvailabilityZone") <*>
(obj .: "DefaultInstanceProfileArn") <*>
(obj .:? "DefaultOs") <*>
(obj .:? "DefaultRootDeviceType") <*>
(obj .:? "DefaultSshKeyName") <*>
(obj .:? "DefaultSubnetId") <*>
(obj .:? "EcsClusterArn") <*>
(obj .:? "ElasticIps") <*>
(obj .:? "HostnameTheme") <*>
(obj .: "Name") <*>
(obj .:? "RdsDbInstances") <*>
(obj .: "ServiceRoleArn") <*>
(obj .:? "SourceStackId") <*>
(obj .:? "Tags") <*>
fmap (fmap (fmap unBool')) (obj .:? "UseCustomCookbooks") <*>
fmap (fmap (fmap unBool')) (obj .:? "UseOpsworksSecurityGroups") <*>
(obj .:? "VpcId")
parseJSON _ = mempty
-- | Constructor for 'OpsWorksStack' containing required fields as arguments.
opsWorksStack
:: Val Text -- ^ 'owsDefaultInstanceProfileArn'
-> Val Text -- ^ 'owsName'
-> Val Text -- ^ 'owsServiceRoleArn'
-> OpsWorksStack
opsWorksStack defaultInstanceProfileArnarg namearg serviceRoleArnarg =
OpsWorksStack
{ _opsWorksStackAgentVersion = Nothing
, _opsWorksStackAttributes = Nothing
, _opsWorksStackChefConfiguration = Nothing
, _opsWorksStackCloneAppIds = Nothing
, _opsWorksStackClonePermissions = Nothing
, _opsWorksStackConfigurationManager = Nothing
, _opsWorksStackCustomCookbooksSource = Nothing
, _opsWorksStackCustomJson = Nothing
, _opsWorksStackDefaultAvailabilityZone = Nothing
, _opsWorksStackDefaultInstanceProfileArn = defaultInstanceProfileArnarg
, _opsWorksStackDefaultOs = Nothing
, _opsWorksStackDefaultRootDeviceType = Nothing
, _opsWorksStackDefaultSshKeyName = Nothing
, _opsWorksStackDefaultSubnetId = Nothing
, _opsWorksStackEcsClusterArn = Nothing
, _opsWorksStackElasticIps = Nothing
, _opsWorksStackHostnameTheme = Nothing
, _opsWorksStackName = namearg
, _opsWorksStackRdsDbInstances = Nothing
, _opsWorksStackServiceRoleArn = serviceRoleArnarg
, _opsWorksStackSourceStackId = Nothing
, _opsWorksStackTags = Nothing
, _opsWorksStackUseCustomCookbooks = Nothing
, _opsWorksStackUseOpsworksSecurityGroups = Nothing
, _opsWorksStackVpcId = Nothing
}
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-agentversion
owsAgentVersion :: Lens' OpsWorksStack (Maybe (Val Text))
owsAgentVersion = lens _opsWorksStackAgentVersion (\s a -> s { _opsWorksStackAgentVersion = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-attributes
owsAttributes :: Lens' OpsWorksStack (Maybe Object)
owsAttributes = lens _opsWorksStackAttributes (\s a -> s { _opsWorksStackAttributes = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-chefconfiguration
owsChefConfiguration :: Lens' OpsWorksStack (Maybe OpsWorksStackChefConfiguration)
owsChefConfiguration = lens _opsWorksStackChefConfiguration (\s a -> s { _opsWorksStackChefConfiguration = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-cloneappids
owsCloneAppIds :: Lens' OpsWorksStack (Maybe (ValList Text))
owsCloneAppIds = lens _opsWorksStackCloneAppIds (\s a -> s { _opsWorksStackCloneAppIds = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-clonepermissions
owsClonePermissions :: Lens' OpsWorksStack (Maybe (Val Bool))
owsClonePermissions = lens _opsWorksStackClonePermissions (\s a -> s { _opsWorksStackClonePermissions = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-configmanager
owsConfigurationManager :: Lens' OpsWorksStack (Maybe OpsWorksStackStackConfigurationManager)
owsConfigurationManager = lens _opsWorksStackConfigurationManager (\s a -> s { _opsWorksStackConfigurationManager = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-custcookbooksource
owsCustomCookbooksSource :: Lens' OpsWorksStack (Maybe OpsWorksStackSource)
owsCustomCookbooksSource = lens _opsWorksStackCustomCookbooksSource (\s a -> s { _opsWorksStackCustomCookbooksSource = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-custjson
owsCustomJson :: Lens' OpsWorksStack (Maybe Object)
owsCustomJson = lens _opsWorksStackCustomJson (\s a -> s { _opsWorksStackCustomJson = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultaz
owsDefaultAvailabilityZone :: Lens' OpsWorksStack (Maybe (Val Text))
owsDefaultAvailabilityZone = lens _opsWorksStackDefaultAvailabilityZone (\s a -> s { _opsWorksStackDefaultAvailabilityZone = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultinstanceprof
owsDefaultInstanceProfileArn :: Lens' OpsWorksStack (Val Text)
owsDefaultInstanceProfileArn = lens _opsWorksStackDefaultInstanceProfileArn (\s a -> s { _opsWorksStackDefaultInstanceProfileArn = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultos
owsDefaultOs :: Lens' OpsWorksStack (Maybe (Val Text))
owsDefaultOs = lens _opsWorksStackDefaultOs (\s a -> s { _opsWorksStackDefaultOs = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultrootdevicetype
owsDefaultRootDeviceType :: Lens' OpsWorksStack (Maybe (Val Text))
owsDefaultRootDeviceType = lens _opsWorksStackDefaultRootDeviceType (\s a -> s { _opsWorksStackDefaultRootDeviceType = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-defaultsshkeyname
owsDefaultSshKeyName :: Lens' OpsWorksStack (Maybe (Val Text))
owsDefaultSshKeyName = lens _opsWorksStackDefaultSshKeyName (\s a -> s { _opsWorksStackDefaultSshKeyName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#defaultsubnet
owsDefaultSubnetId :: Lens' OpsWorksStack (Maybe (Val Text))
owsDefaultSubnetId = lens _opsWorksStackDefaultSubnetId (\s a -> s { _opsWorksStackDefaultSubnetId = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-ecsclusterarn
owsEcsClusterArn :: Lens' OpsWorksStack (Maybe (Val Text))
owsEcsClusterArn = lens _opsWorksStackEcsClusterArn (\s a -> s { _opsWorksStackEcsClusterArn = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-elasticips
owsElasticIps :: Lens' OpsWorksStack (Maybe [OpsWorksStackElasticIp])
owsElasticIps = lens _opsWorksStackElasticIps (\s a -> s { _opsWorksStackElasticIps = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-hostnametheme
owsHostnameTheme :: Lens' OpsWorksStack (Maybe (Val Text))
owsHostnameTheme = lens _opsWorksStackHostnameTheme (\s a -> s { _opsWorksStackHostnameTheme = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-name
owsName :: Lens' OpsWorksStack (Val Text)
owsName = lens _opsWorksStackName (\s a -> s { _opsWorksStackName = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-rdsdbinstances
owsRdsDbInstances :: Lens' OpsWorksStack (Maybe [OpsWorksStackRdsDbInstance])
owsRdsDbInstances = lens _opsWorksStackRdsDbInstances (\s a -> s { _opsWorksStackRdsDbInstances = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-servicerolearn
owsServiceRoleArn :: Lens' OpsWorksStack (Val Text)
owsServiceRoleArn = lens _opsWorksStackServiceRoleArn (\s a -> s { _opsWorksStackServiceRoleArn = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-sourcestackid
owsSourceStackId :: Lens' OpsWorksStack (Maybe (Val Text))
owsSourceStackId = lens _opsWorksStackSourceStackId (\s a -> s { _opsWorksStackSourceStackId = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-tags
owsTags :: Lens' OpsWorksStack (Maybe [Tag])
owsTags = lens _opsWorksStackTags (\s a -> s { _opsWorksStackTags = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#usecustcookbooks
owsUseCustomCookbooks :: Lens' OpsWorksStack (Maybe (Val Bool))
owsUseCustomCookbooks = lens _opsWorksStackUseCustomCookbooks (\s a -> s { _opsWorksStackUseCustomCookbooks = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-useopsworkssecuritygroups
owsUseOpsworksSecurityGroups :: Lens' OpsWorksStack (Maybe (Val Bool))
owsUseOpsworksSecurityGroups = lens _opsWorksStackUseOpsworksSecurityGroups (\s a -> s { _opsWorksStackUseOpsworksSecurityGroups = a })
-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-opsworks-stack.html#cfn-opsworks-stack-vpcid
owsVpcId :: Lens' OpsWorksStack (Maybe (Val Text))
owsVpcId = lens _opsWorksStackVpcId (\s a -> s { _opsWorksStackVpcId = a })