packages feed

stratosphere-0.44.0: library-gen/Stratosphere/Resources/EC2TrafficMirrorFilterRule.hs

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html

module Stratosphere.Resources.EC2TrafficMirrorFilterRule where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.EC2TrafficMirrorFilterRuleTrafficMirrorPortRange

-- | Full data type definition for EC2TrafficMirrorFilterRule. See
-- 'ec2TrafficMirrorFilterRule' for a more convenient constructor.
data EC2TrafficMirrorFilterRule =
  EC2TrafficMirrorFilterRule
  { _eC2TrafficMirrorFilterRuleDescription :: Maybe (Val Text)
  , _eC2TrafficMirrorFilterRuleDestinationCidrBlock :: Val Text
  , _eC2TrafficMirrorFilterRuleDestinationPortRange :: Maybe EC2TrafficMirrorFilterRuleTrafficMirrorPortRange
  , _eC2TrafficMirrorFilterRuleProtocol :: Maybe (Val Integer)
  , _eC2TrafficMirrorFilterRuleRuleAction :: Val Text
  , _eC2TrafficMirrorFilterRuleRuleNumber :: Val Integer
  , _eC2TrafficMirrorFilterRuleSourceCidrBlock :: Val Text
  , _eC2TrafficMirrorFilterRuleSourcePortRange :: Maybe EC2TrafficMirrorFilterRuleTrafficMirrorPortRange
  , _eC2TrafficMirrorFilterRuleTrafficDirection :: Val Text
  , _eC2TrafficMirrorFilterRuleTrafficMirrorFilterId :: Val Text
  } deriving (Show, Eq)

instance ToResourceProperties EC2TrafficMirrorFilterRule where
  toResourceProperties EC2TrafficMirrorFilterRule{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::EC2::TrafficMirrorFilterRule"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("Description",) . toJSON) _eC2TrafficMirrorFilterRuleDescription
        , (Just . ("DestinationCidrBlock",) . toJSON) _eC2TrafficMirrorFilterRuleDestinationCidrBlock
        , fmap (("DestinationPortRange",) . toJSON) _eC2TrafficMirrorFilterRuleDestinationPortRange
        , fmap (("Protocol",) . toJSON) _eC2TrafficMirrorFilterRuleProtocol
        , (Just . ("RuleAction",) . toJSON) _eC2TrafficMirrorFilterRuleRuleAction
        , (Just . ("RuleNumber",) . toJSON) _eC2TrafficMirrorFilterRuleRuleNumber
        , (Just . ("SourceCidrBlock",) . toJSON) _eC2TrafficMirrorFilterRuleSourceCidrBlock
        , fmap (("SourcePortRange",) . toJSON) _eC2TrafficMirrorFilterRuleSourcePortRange
        , (Just . ("TrafficDirection",) . toJSON) _eC2TrafficMirrorFilterRuleTrafficDirection
        , (Just . ("TrafficMirrorFilterId",) . toJSON) _eC2TrafficMirrorFilterRuleTrafficMirrorFilterId
        ]
    }

-- | Constructor for 'EC2TrafficMirrorFilterRule' containing required fields
-- as arguments.
ec2TrafficMirrorFilterRule
  :: Val Text -- ^ 'ectmfrDestinationCidrBlock'
  -> Val Text -- ^ 'ectmfrRuleAction'
  -> Val Integer -- ^ 'ectmfrRuleNumber'
  -> Val Text -- ^ 'ectmfrSourceCidrBlock'
  -> Val Text -- ^ 'ectmfrTrafficDirection'
  -> Val Text -- ^ 'ectmfrTrafficMirrorFilterId'
  -> EC2TrafficMirrorFilterRule
ec2TrafficMirrorFilterRule destinationCidrBlockarg ruleActionarg ruleNumberarg sourceCidrBlockarg trafficDirectionarg trafficMirrorFilterIdarg =
  EC2TrafficMirrorFilterRule
  { _eC2TrafficMirrorFilterRuleDescription = Nothing
  , _eC2TrafficMirrorFilterRuleDestinationCidrBlock = destinationCidrBlockarg
  , _eC2TrafficMirrorFilterRuleDestinationPortRange = Nothing
  , _eC2TrafficMirrorFilterRuleProtocol = Nothing
  , _eC2TrafficMirrorFilterRuleRuleAction = ruleActionarg
  , _eC2TrafficMirrorFilterRuleRuleNumber = ruleNumberarg
  , _eC2TrafficMirrorFilterRuleSourceCidrBlock = sourceCidrBlockarg
  , _eC2TrafficMirrorFilterRuleSourcePortRange = Nothing
  , _eC2TrafficMirrorFilterRuleTrafficDirection = trafficDirectionarg
  , _eC2TrafficMirrorFilterRuleTrafficMirrorFilterId = trafficMirrorFilterIdarg
  }

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-description
ectmfrDescription :: Lens' EC2TrafficMirrorFilterRule (Maybe (Val Text))
ectmfrDescription = lens _eC2TrafficMirrorFilterRuleDescription (\s a -> s { _eC2TrafficMirrorFilterRuleDescription = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-destinationcidrblock
ectmfrDestinationCidrBlock :: Lens' EC2TrafficMirrorFilterRule (Val Text)
ectmfrDestinationCidrBlock = lens _eC2TrafficMirrorFilterRuleDestinationCidrBlock (\s a -> s { _eC2TrafficMirrorFilterRuleDestinationCidrBlock = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-destinationportrange
ectmfrDestinationPortRange :: Lens' EC2TrafficMirrorFilterRule (Maybe EC2TrafficMirrorFilterRuleTrafficMirrorPortRange)
ectmfrDestinationPortRange = lens _eC2TrafficMirrorFilterRuleDestinationPortRange (\s a -> s { _eC2TrafficMirrorFilterRuleDestinationPortRange = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-protocol
ectmfrProtocol :: Lens' EC2TrafficMirrorFilterRule (Maybe (Val Integer))
ectmfrProtocol = lens _eC2TrafficMirrorFilterRuleProtocol (\s a -> s { _eC2TrafficMirrorFilterRuleProtocol = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-ruleaction
ectmfrRuleAction :: Lens' EC2TrafficMirrorFilterRule (Val Text)
ectmfrRuleAction = lens _eC2TrafficMirrorFilterRuleRuleAction (\s a -> s { _eC2TrafficMirrorFilterRuleRuleAction = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-rulenumber
ectmfrRuleNumber :: Lens' EC2TrafficMirrorFilterRule (Val Integer)
ectmfrRuleNumber = lens _eC2TrafficMirrorFilterRuleRuleNumber (\s a -> s { _eC2TrafficMirrorFilterRuleRuleNumber = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-sourcecidrblock
ectmfrSourceCidrBlock :: Lens' EC2TrafficMirrorFilterRule (Val Text)
ectmfrSourceCidrBlock = lens _eC2TrafficMirrorFilterRuleSourceCidrBlock (\s a -> s { _eC2TrafficMirrorFilterRuleSourceCidrBlock = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-sourceportrange
ectmfrSourcePortRange :: Lens' EC2TrafficMirrorFilterRule (Maybe EC2TrafficMirrorFilterRuleTrafficMirrorPortRange)
ectmfrSourcePortRange = lens _eC2TrafficMirrorFilterRuleSourcePortRange (\s a -> s { _eC2TrafficMirrorFilterRuleSourcePortRange = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-trafficdirection
ectmfrTrafficDirection :: Lens' EC2TrafficMirrorFilterRule (Val Text)
ectmfrTrafficDirection = lens _eC2TrafficMirrorFilterRuleTrafficDirection (\s a -> s { _eC2TrafficMirrorFilterRuleTrafficDirection = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorfilterrule.html#cfn-ec2-trafficmirrorfilterrule-trafficmirrorfilterid
ectmfrTrafficMirrorFilterId :: Lens' EC2TrafficMirrorFilterRule (Val Text)
ectmfrTrafficMirrorFilterId = lens _eC2TrafficMirrorFilterRuleTrafficMirrorFilterId (\s a -> s { _eC2TrafficMirrorFilterRuleTrafficMirrorFilterId = a })