packages feed

stratosphere-0.56.0: library-gen/Stratosphere/Resources/ImageBuilderInfrastructureConfiguration.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html

module Stratosphere.Resources.ImageBuilderInfrastructureConfiguration where

import Stratosphere.ResourceImports


-- | Full data type definition for ImageBuilderInfrastructureConfiguration.
-- See 'imageBuilderInfrastructureConfiguration' for a more convenient
-- constructor.
data ImageBuilderInfrastructureConfiguration =
  ImageBuilderInfrastructureConfiguration
  { _imageBuilderInfrastructureConfigurationDescription :: Maybe (Val Text)
  , _imageBuilderInfrastructureConfigurationInstanceProfileName :: Val Text
  , _imageBuilderInfrastructureConfigurationInstanceTypes :: Maybe (ValList Text)
  , _imageBuilderInfrastructureConfigurationKeyPair :: Maybe (Val Text)
  , _imageBuilderInfrastructureConfigurationLogging :: Maybe Object
  , _imageBuilderInfrastructureConfigurationName :: Val Text
  , _imageBuilderInfrastructureConfigurationResourceTags :: Maybe Object
  , _imageBuilderInfrastructureConfigurationSecurityGroupIds :: Maybe (ValList Text)
  , _imageBuilderInfrastructureConfigurationSnsTopicArn :: Maybe (Val Text)
  , _imageBuilderInfrastructureConfigurationSubnetId :: Maybe (Val Text)
  , _imageBuilderInfrastructureConfigurationTags :: Maybe Object
  , _imageBuilderInfrastructureConfigurationTerminateInstanceOnFailure :: Maybe (Val Bool)
  } deriving (Show, Eq)

instance ToResourceProperties ImageBuilderInfrastructureConfiguration where
  toResourceProperties ImageBuilderInfrastructureConfiguration{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::ImageBuilder::InfrastructureConfiguration"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("Description",) . toJSON) _imageBuilderInfrastructureConfigurationDescription
        , (Just . ("InstanceProfileName",) . toJSON) _imageBuilderInfrastructureConfigurationInstanceProfileName
        , fmap (("InstanceTypes",) . toJSON) _imageBuilderInfrastructureConfigurationInstanceTypes
        , fmap (("KeyPair",) . toJSON) _imageBuilderInfrastructureConfigurationKeyPair
        , fmap (("Logging",) . toJSON) _imageBuilderInfrastructureConfigurationLogging
        , (Just . ("Name",) . toJSON) _imageBuilderInfrastructureConfigurationName
        , fmap (("ResourceTags",) . toJSON) _imageBuilderInfrastructureConfigurationResourceTags
        , fmap (("SecurityGroupIds",) . toJSON) _imageBuilderInfrastructureConfigurationSecurityGroupIds
        , fmap (("SnsTopicArn",) . toJSON) _imageBuilderInfrastructureConfigurationSnsTopicArn
        , fmap (("SubnetId",) . toJSON) _imageBuilderInfrastructureConfigurationSubnetId
        , fmap (("Tags",) . toJSON) _imageBuilderInfrastructureConfigurationTags
        , fmap (("TerminateInstanceOnFailure",) . toJSON) _imageBuilderInfrastructureConfigurationTerminateInstanceOnFailure
        ]
    }

-- | Constructor for 'ImageBuilderInfrastructureConfiguration' containing
-- required fields as arguments.
imageBuilderInfrastructureConfiguration
  :: Val Text -- ^ 'ibicInstanceProfileName'
  -> Val Text -- ^ 'ibicName'
  -> ImageBuilderInfrastructureConfiguration
imageBuilderInfrastructureConfiguration instanceProfileNamearg namearg =
  ImageBuilderInfrastructureConfiguration
  { _imageBuilderInfrastructureConfigurationDescription = Nothing
  , _imageBuilderInfrastructureConfigurationInstanceProfileName = instanceProfileNamearg
  , _imageBuilderInfrastructureConfigurationInstanceTypes = Nothing
  , _imageBuilderInfrastructureConfigurationKeyPair = Nothing
  , _imageBuilderInfrastructureConfigurationLogging = Nothing
  , _imageBuilderInfrastructureConfigurationName = namearg
  , _imageBuilderInfrastructureConfigurationResourceTags = Nothing
  , _imageBuilderInfrastructureConfigurationSecurityGroupIds = Nothing
  , _imageBuilderInfrastructureConfigurationSnsTopicArn = Nothing
  , _imageBuilderInfrastructureConfigurationSubnetId = Nothing
  , _imageBuilderInfrastructureConfigurationTags = Nothing
  , _imageBuilderInfrastructureConfigurationTerminateInstanceOnFailure = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-description
ibicDescription :: Lens' ImageBuilderInfrastructureConfiguration (Maybe (Val Text))
ibicDescription = lens _imageBuilderInfrastructureConfigurationDescription (\s a -> s { _imageBuilderInfrastructureConfigurationDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-instanceprofilename
ibicInstanceProfileName :: Lens' ImageBuilderInfrastructureConfiguration (Val Text)
ibicInstanceProfileName = lens _imageBuilderInfrastructureConfigurationInstanceProfileName (\s a -> s { _imageBuilderInfrastructureConfigurationInstanceProfileName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-instancetypes
ibicInstanceTypes :: Lens' ImageBuilderInfrastructureConfiguration (Maybe (ValList Text))
ibicInstanceTypes = lens _imageBuilderInfrastructureConfigurationInstanceTypes (\s a -> s { _imageBuilderInfrastructureConfigurationInstanceTypes = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-keypair
ibicKeyPair :: Lens' ImageBuilderInfrastructureConfiguration (Maybe (Val Text))
ibicKeyPair = lens _imageBuilderInfrastructureConfigurationKeyPair (\s a -> s { _imageBuilderInfrastructureConfigurationKeyPair = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-logging
ibicLogging :: Lens' ImageBuilderInfrastructureConfiguration (Maybe Object)
ibicLogging = lens _imageBuilderInfrastructureConfigurationLogging (\s a -> s { _imageBuilderInfrastructureConfigurationLogging = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-name
ibicName :: Lens' ImageBuilderInfrastructureConfiguration (Val Text)
ibicName = lens _imageBuilderInfrastructureConfigurationName (\s a -> s { _imageBuilderInfrastructureConfigurationName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-resourcetags
ibicResourceTags :: Lens' ImageBuilderInfrastructureConfiguration (Maybe Object)
ibicResourceTags = lens _imageBuilderInfrastructureConfigurationResourceTags (\s a -> s { _imageBuilderInfrastructureConfigurationResourceTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-securitygroupids
ibicSecurityGroupIds :: Lens' ImageBuilderInfrastructureConfiguration (Maybe (ValList Text))
ibicSecurityGroupIds = lens _imageBuilderInfrastructureConfigurationSecurityGroupIds (\s a -> s { _imageBuilderInfrastructureConfigurationSecurityGroupIds = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-snstopicarn
ibicSnsTopicArn :: Lens' ImageBuilderInfrastructureConfiguration (Maybe (Val Text))
ibicSnsTopicArn = lens _imageBuilderInfrastructureConfigurationSnsTopicArn (\s a -> s { _imageBuilderInfrastructureConfigurationSnsTopicArn = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-subnetid
ibicSubnetId :: Lens' ImageBuilderInfrastructureConfiguration (Maybe (Val Text))
ibicSubnetId = lens _imageBuilderInfrastructureConfigurationSubnetId (\s a -> s { _imageBuilderInfrastructureConfigurationSubnetId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-tags
ibicTags :: Lens' ImageBuilderInfrastructureConfiguration (Maybe Object)
ibicTags = lens _imageBuilderInfrastructureConfigurationTags (\s a -> s { _imageBuilderInfrastructureConfigurationTags = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-imagebuilder-infrastructureconfiguration.html#cfn-imagebuilder-infrastructureconfiguration-terminateinstanceonfailure
ibicTerminateInstanceOnFailure :: Lens' ImageBuilderInfrastructureConfiguration (Maybe (Val Bool))
ibicTerminateInstanceOnFailure = lens _imageBuilderInfrastructureConfigurationTerminateInstanceOnFailure (\s a -> s { _imageBuilderInfrastructureConfigurationTerminateInstanceOnFailure = a })