packages feed

stratosphere-0.43.0: library-gen/Stratosphere/Resources/EC2TrafficMirrorSession.hs

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

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

module Stratosphere.Resources.EC2TrafficMirrorSession where

import Stratosphere.ResourceImports
import Stratosphere.ResourceProperties.Tag

-- | Full data type definition for EC2TrafficMirrorSession. See
-- 'ec2TrafficMirrorSession' for a more convenient constructor.
data EC2TrafficMirrorSession =
  EC2TrafficMirrorSession
  { _eC2TrafficMirrorSessionDescription :: Maybe (Val Text)
  , _eC2TrafficMirrorSessionNetworkInterfaceId :: Val Text
  , _eC2TrafficMirrorSessionPacketLength :: Maybe (Val Integer)
  , _eC2TrafficMirrorSessionSessionNumber :: Val Integer
  , _eC2TrafficMirrorSessionTags :: Maybe [Tag]
  , _eC2TrafficMirrorSessionTrafficMirrorFilterId :: Val Text
  , _eC2TrafficMirrorSessionTrafficMirrorTargetId :: Val Text
  , _eC2TrafficMirrorSessionVirtualNetworkId :: Maybe (Val Integer)
  } deriving (Show, Eq)

instance ToResourceProperties EC2TrafficMirrorSession where
  toResourceProperties EC2TrafficMirrorSession{..} =
    ResourceProperties
    { resourcePropertiesType = "AWS::EC2::TrafficMirrorSession"
    , resourcePropertiesProperties =
        hashMapFromList $ catMaybes
        [ fmap (("Description",) . toJSON) _eC2TrafficMirrorSessionDescription
        , (Just . ("NetworkInterfaceId",) . toJSON) _eC2TrafficMirrorSessionNetworkInterfaceId
        , fmap (("PacketLength",) . toJSON) _eC2TrafficMirrorSessionPacketLength
        , (Just . ("SessionNumber",) . toJSON) _eC2TrafficMirrorSessionSessionNumber
        , fmap (("Tags",) . toJSON) _eC2TrafficMirrorSessionTags
        , (Just . ("TrafficMirrorFilterId",) . toJSON) _eC2TrafficMirrorSessionTrafficMirrorFilterId
        , (Just . ("TrafficMirrorTargetId",) . toJSON) _eC2TrafficMirrorSessionTrafficMirrorTargetId
        , fmap (("VirtualNetworkId",) . toJSON) _eC2TrafficMirrorSessionVirtualNetworkId
        ]
    }

-- | Constructor for 'EC2TrafficMirrorSession' containing required fields as
-- arguments.
ec2TrafficMirrorSession
  :: Val Text -- ^ 'ectmsNetworkInterfaceId'
  -> Val Integer -- ^ 'ectmsSessionNumber'
  -> Val Text -- ^ 'ectmsTrafficMirrorFilterId'
  -> Val Text -- ^ 'ectmsTrafficMirrorTargetId'
  -> EC2TrafficMirrorSession
ec2TrafficMirrorSession networkInterfaceIdarg sessionNumberarg trafficMirrorFilterIdarg trafficMirrorTargetIdarg =
  EC2TrafficMirrorSession
  { _eC2TrafficMirrorSessionDescription = Nothing
  , _eC2TrafficMirrorSessionNetworkInterfaceId = networkInterfaceIdarg
  , _eC2TrafficMirrorSessionPacketLength = Nothing
  , _eC2TrafficMirrorSessionSessionNumber = sessionNumberarg
  , _eC2TrafficMirrorSessionTags = Nothing
  , _eC2TrafficMirrorSessionTrafficMirrorFilterId = trafficMirrorFilterIdarg
  , _eC2TrafficMirrorSessionTrafficMirrorTargetId = trafficMirrorTargetIdarg
  , _eC2TrafficMirrorSessionVirtualNetworkId = Nothing
  }

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorsession.html#cfn-ec2-trafficmirrorsession-networkinterfaceid
ectmsNetworkInterfaceId :: Lens' EC2TrafficMirrorSession (Val Text)
ectmsNetworkInterfaceId = lens _eC2TrafficMirrorSessionNetworkInterfaceId (\s a -> s { _eC2TrafficMirrorSessionNetworkInterfaceId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorsession.html#cfn-ec2-trafficmirrorsession-packetlength
ectmsPacketLength :: Lens' EC2TrafficMirrorSession (Maybe (Val Integer))
ectmsPacketLength = lens _eC2TrafficMirrorSessionPacketLength (\s a -> s { _eC2TrafficMirrorSessionPacketLength = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorsession.html#cfn-ec2-trafficmirrorsession-sessionnumber
ectmsSessionNumber :: Lens' EC2TrafficMirrorSession (Val Integer)
ectmsSessionNumber = lens _eC2TrafficMirrorSessionSessionNumber (\s a -> s { _eC2TrafficMirrorSessionSessionNumber = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorsession.html#cfn-ec2-trafficmirrorsession-tags
ectmsTags :: Lens' EC2TrafficMirrorSession (Maybe [Tag])
ectmsTags = lens _eC2TrafficMirrorSessionTags (\s a -> s { _eC2TrafficMirrorSessionTags = a })

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

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorsession.html#cfn-ec2-trafficmirrorsession-trafficmirrortargetid
ectmsTrafficMirrorTargetId :: Lens' EC2TrafficMirrorSession (Val Text)
ectmsTrafficMirrorTargetId = lens _eC2TrafficMirrorSessionTrafficMirrorTargetId (\s a -> s { _eC2TrafficMirrorSessionTrafficMirrorTargetId = a })

-- | http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-trafficmirrorsession.html#cfn-ec2-trafficmirrorsession-virtualnetworkid
ectmsVirtualNetworkId :: Lens' EC2TrafficMirrorSession (Maybe (Val Integer))
ectmsVirtualNetworkId = lens _eC2TrafficMirrorSessionVirtualNetworkId (\s a -> s { _eC2TrafficMirrorSessionVirtualNetworkId = a })