{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.EC2.CreateVpnConnection -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- | Creates a VPN connection between an existing virtual private gateway and a -- VPN customer gateway. The only supported connection type is ipsec.1. The -- response includes information that you need to give to your network -- administrator to configure your customer gateway. We strongly recommend -- that you use HTTPS when calling this operation because the response -- contains sensitive cryptographic information for configuring your customer -- gateway. If you decide to shut down your VPN connection for any reason and -- later create a new VPN connection, you must reconfigure your customer -- gateway with the new information returned from this call. For more -- information about VPN connections, see Adding a Hardware Virtual Private -- Gateway to Your VPC in the Amazon Virtual Private Cloud User Guide. -- -- module Network.AWS.EC2.CreateVpnConnection ( -- * Request CreateVpnConnection -- ** Request constructor , createVpnConnection -- ** Request lenses , cvcCustomerGatewayId , cvcDryRun , cvcOptions , cvcType , cvcVpnGatewayId -- * Response , CreateVpnConnectionResponse -- ** Response constructor , createVpnConnectionResponse -- ** Response lenses , cvcrVpnConnection ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.EC2.Types import qualified GHC.Exts data CreateVpnConnection = CreateVpnConnection { _cvcCustomerGatewayId :: Text , _cvcDryRun :: Maybe Bool , _cvcOptions :: Maybe VpnConnectionOptionsSpecification , _cvcType :: Text , _cvcVpnGatewayId :: Text } deriving (Eq, Show) -- | 'CreateVpnConnection' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cvcCustomerGatewayId' @::@ 'Text' -- -- * 'cvcDryRun' @::@ 'Maybe' 'Bool' -- -- * 'cvcOptions' @::@ 'Maybe' 'VpnConnectionOptionsSpecification' -- -- * 'cvcType' @::@ 'Text' -- -- * 'cvcVpnGatewayId' @::@ 'Text' -- createVpnConnection :: Text -- ^ 'cvcType' -> Text -- ^ 'cvcCustomerGatewayId' -> Text -- ^ 'cvcVpnGatewayId' -> CreateVpnConnection createVpnConnection p1 p2 p3 = CreateVpnConnection { _cvcType = p1 , _cvcCustomerGatewayId = p2 , _cvcVpnGatewayId = p3 , _cvcDryRun = Nothing , _cvcOptions = Nothing } -- | The ID of the customer gateway. cvcCustomerGatewayId :: Lens' CreateVpnConnection Text cvcCustomerGatewayId = lens _cvcCustomerGatewayId (\s a -> s { _cvcCustomerGatewayId = a }) cvcDryRun :: Lens' CreateVpnConnection (Maybe Bool) cvcDryRun = lens _cvcDryRun (\s a -> s { _cvcDryRun = a }) -- | Indicates whether the VPN connection requires static routes. If you are -- creating a VPN connection for a device that does not support BGP, you -- must specify true. Default: false. cvcOptions :: Lens' CreateVpnConnection (Maybe VpnConnectionOptionsSpecification) cvcOptions = lens _cvcOptions (\s a -> s { _cvcOptions = a }) -- | The type of VPN connection (ipsec.1). cvcType :: Lens' CreateVpnConnection Text cvcType = lens _cvcType (\s a -> s { _cvcType = a }) -- | The ID of the virtual private gateway. cvcVpnGatewayId :: Lens' CreateVpnConnection Text cvcVpnGatewayId = lens _cvcVpnGatewayId (\s a -> s { _cvcVpnGatewayId = a }) newtype CreateVpnConnectionResponse = CreateVpnConnectionResponse { _cvcrVpnConnection :: Maybe VpnConnection } deriving (Eq, Show) -- | 'CreateVpnConnectionResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'cvcrVpnConnection' @::@ 'Maybe' 'VpnConnection' -- createVpnConnectionResponse :: CreateVpnConnectionResponse createVpnConnectionResponse = CreateVpnConnectionResponse { _cvcrVpnConnection = Nothing } -- | Information about the VPN connection. cvcrVpnConnection :: Lens' CreateVpnConnectionResponse (Maybe VpnConnection) cvcrVpnConnection = lens _cvcrVpnConnection (\s a -> s { _cvcrVpnConnection = a }) instance ToPath CreateVpnConnection where toPath = const "/" instance ToQuery CreateVpnConnection where toQuery CreateVpnConnection{..} = mconcat [ "CustomerGatewayId" =? _cvcCustomerGatewayId , "dryRun" =? _cvcDryRun , "options" =? _cvcOptions , "Type" =? _cvcType , "VpnGatewayId" =? _cvcVpnGatewayId ] instance ToHeaders CreateVpnConnection instance AWSRequest CreateVpnConnection where type Sv CreateVpnConnection = EC2 type Rs CreateVpnConnection = CreateVpnConnectionResponse request = post "CreateVpnConnection" response = xmlResponse instance FromXML CreateVpnConnectionResponse where parseXML x = CreateVpnConnectionResponse <$> x .@? "vpnConnection"