packages feed

stratosphere-0.60.0: library-gen/Stratosphere/Resources/ConfigRemediationConfiguration.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html

module Stratosphere.Resources.ConfigRemediationConfiguration where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.ConfigRemediationConfigurationExecutionControls

-- | Full data type definition for ConfigRemediationConfiguration. See
-- 'configRemediationConfiguration' for a more convenient constructor.
data ConfigRemediationConfiguration =
  ConfigRemediationConfiguration
  { _configRemediationConfigurationAutomatic :: Maybe (Val Bool)
  , _configRemediationConfigurationConfigRuleName :: Val Text
  , _configRemediationConfigurationExecutionControls :: Maybe ConfigRemediationConfigurationExecutionControls
  , _configRemediationConfigurationMaximumAutomaticAttempts :: Maybe (Val Integer)
  , _configRemediationConfigurationParameters :: Maybe Object
  , _configRemediationConfigurationResourceType :: Maybe (Val Text)
  , _configRemediationConfigurationRetryAttemptSeconds :: Maybe (Val Integer)
  , _configRemediationConfigurationTargetId :: Val Text
  , _configRemediationConfigurationTargetType :: Val Text
  , _configRemediationConfigurationTargetVersion :: Maybe (Val Text)
  } deriving (Show, Eq)

instance ToResourceProperties ConfigRemediationConfiguration where
  toResourceProperties ConfigRemediationConfiguration{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::Config::RemediationConfiguration"
    , resourcePropertiesProperties =
        keyMapFromList $ catMaybes
        [ fmap (("Automatic",) . toJSON) _configRemediationConfigurationAutomatic
        , (Just . ("ConfigRuleName",) . toJSON) _configRemediationConfigurationConfigRuleName
        , fmap (("ExecutionControls",) . toJSON) _configRemediationConfigurationExecutionControls
        , fmap (("MaximumAutomaticAttempts",) . toJSON) _configRemediationConfigurationMaximumAutomaticAttempts
        , fmap (("Parameters",) . toJSON) _configRemediationConfigurationParameters
        , fmap (("ResourceType",) . toJSON) _configRemediationConfigurationResourceType
        , fmap (("RetryAttemptSeconds",) . toJSON) _configRemediationConfigurationRetryAttemptSeconds
        , (Just . ("TargetId",) . toJSON) _configRemediationConfigurationTargetId
        , (Just . ("TargetType",) . toJSON) _configRemediationConfigurationTargetType
        , fmap (("TargetVersion",) . toJSON) _configRemediationConfigurationTargetVersion
        ]
    }

-- | Constructor for 'ConfigRemediationConfiguration' containing required
-- fields as arguments.
configRemediationConfiguration
  :: Val Text -- ^ 'crcConfigRuleName'
  -> Val Text -- ^ 'crcTargetId'
  -> Val Text -- ^ 'crcTargetType'
  -> ConfigRemediationConfiguration
configRemediationConfiguration configRuleNamearg targetIdarg targetTypearg =
  ConfigRemediationConfiguration
  { _configRemediationConfigurationAutomatic = Nothing
  , _configRemediationConfigurationConfigRuleName = configRuleNamearg
  , _configRemediationConfigurationExecutionControls = Nothing
  , _configRemediationConfigurationMaximumAutomaticAttempts = Nothing
  , _configRemediationConfigurationParameters = Nothing
  , _configRemediationConfigurationResourceType = Nothing
  , _configRemediationConfigurationRetryAttemptSeconds = Nothing
  , _configRemediationConfigurationTargetId = targetIdarg
  , _configRemediationConfigurationTargetType = targetTypearg
  , _configRemediationConfigurationTargetVersion = Nothing
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-automatic
crcAutomatic :: Lens' ConfigRemediationConfiguration (Maybe (Val Bool))
crcAutomatic = lens _configRemediationConfigurationAutomatic (\s a -> s { _configRemediationConfigurationAutomatic = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-configrulename
crcConfigRuleName :: Lens' ConfigRemediationConfiguration (Val Text)
crcConfigRuleName = lens _configRemediationConfigurationConfigRuleName (\s a -> s { _configRemediationConfigurationConfigRuleName = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-executioncontrols
crcExecutionControls :: Lens' ConfigRemediationConfiguration (Maybe ConfigRemediationConfigurationExecutionControls)
crcExecutionControls = lens _configRemediationConfigurationExecutionControls (\s a -> s { _configRemediationConfigurationExecutionControls = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-maximumautomaticattempts
crcMaximumAutomaticAttempts :: Lens' ConfigRemediationConfiguration (Maybe (Val Integer))
crcMaximumAutomaticAttempts = lens _configRemediationConfigurationMaximumAutomaticAttempts (\s a -> s { _configRemediationConfigurationMaximumAutomaticAttempts = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-parameters
crcParameters :: Lens' ConfigRemediationConfiguration (Maybe Object)
crcParameters = lens _configRemediationConfigurationParameters (\s a -> s { _configRemediationConfigurationParameters = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-resourcetype
crcResourceType :: Lens' ConfigRemediationConfiguration (Maybe (Val Text))
crcResourceType = lens _configRemediationConfigurationResourceType (\s a -> s { _configRemediationConfigurationResourceType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-retryattemptseconds
crcRetryAttemptSeconds :: Lens' ConfigRemediationConfiguration (Maybe (Val Integer))
crcRetryAttemptSeconds = lens _configRemediationConfigurationRetryAttemptSeconds (\s a -> s { _configRemediationConfigurationRetryAttemptSeconds = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-targetid
crcTargetId :: Lens' ConfigRemediationConfiguration (Val Text)
crcTargetId = lens _configRemediationConfigurationTargetId (\s a -> s { _configRemediationConfigurationTargetId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-targettype
crcTargetType :: Lens' ConfigRemediationConfiguration (Val Text)
crcTargetType = lens _configRemediationConfigurationTargetType (\s a -> s { _configRemediationConfigurationTargetType = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-config-remediationconfiguration.html#cfn-config-remediationconfiguration-targetversion
crcTargetVersion :: Lens' ConfigRemediationConfiguration (Maybe (Val Text))
crcTargetVersion = lens _configRemediationConfigurationTargetVersion (\s a -> s { _configRemediationConfigurationTargetVersion = a })