{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.DirectConnect.CreateDirectConnectGateway -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Creates a new direct connect gateway. A direct connect gateway is an intermediate object that enables you to connect a set of virtual interfaces and virtual private gateways. direct connect gateways are global and visible in any AWS region after they are created. The virtual interfaces and virtual private gateways that are connected through a direct connect gateway can be in different regions. This enables you to connect to a VPC in any region, regardless of the region in which the virtual interfaces are located, and pass traffic between them. -- -- module Network.AWS.DirectConnect.CreateDirectConnectGateway ( -- * Creating a Request createDirectConnectGateway , CreateDirectConnectGateway -- * Request Lenses , cdcgAmazonSideASN , cdcgDirectConnectGatewayName -- * Destructuring the Response , createDirectConnectGatewayResponse , CreateDirectConnectGatewayResponse -- * Response Lenses , cdcgrsDirectConnectGateway , cdcgrsResponseStatus ) where import Network.AWS.DirectConnect.Types import Network.AWS.DirectConnect.Types.Product import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response -- | Container for the parameters to the CreateDirectConnectGateway operation. -- -- -- -- /See:/ 'createDirectConnectGateway' smart constructor. data CreateDirectConnectGateway = CreateDirectConnectGateway' { _cdcgAmazonSideASN :: !(Maybe Integer) , _cdcgDirectConnectGatewayName :: !Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateDirectConnectGateway' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cdcgAmazonSideASN' - The autonomous system number (ASN) for Border Gateway Protocol (BGP) to be configured on the Amazon side of the connection. The ASN must be in the private range of 64,512 to 65,534 or 4,200,000,000 to 4,294,967,294 Example: 65200 Default: 64512 -- -- * 'cdcgDirectConnectGatewayName' - The name of the direct connect gateway. Example: "My direct connect gateway" Default: None createDirectConnectGateway :: Text -- ^ 'cdcgDirectConnectGatewayName' -> CreateDirectConnectGateway createDirectConnectGateway pDirectConnectGatewayName_ = CreateDirectConnectGateway' { _cdcgAmazonSideASN = Nothing , _cdcgDirectConnectGatewayName = pDirectConnectGatewayName_ } -- | The autonomous system number (ASN) for Border Gateway Protocol (BGP) to be configured on the Amazon side of the connection. The ASN must be in the private range of 64,512 to 65,534 or 4,200,000,000 to 4,294,967,294 Example: 65200 Default: 64512 cdcgAmazonSideASN :: Lens' CreateDirectConnectGateway (Maybe Integer) cdcgAmazonSideASN = lens _cdcgAmazonSideASN (\ s a -> s{_cdcgAmazonSideASN = a}) -- | The name of the direct connect gateway. Example: "My direct connect gateway" Default: None cdcgDirectConnectGatewayName :: Lens' CreateDirectConnectGateway Text cdcgDirectConnectGatewayName = lens _cdcgDirectConnectGatewayName (\ s a -> s{_cdcgDirectConnectGatewayName = a}) instance AWSRequest CreateDirectConnectGateway where type Rs CreateDirectConnectGateway = CreateDirectConnectGatewayResponse request = postJSON directConnect response = receiveJSON (\ s h x -> CreateDirectConnectGatewayResponse' <$> (x .?> "directConnectGateway") <*> (pure (fromEnum s))) instance Hashable CreateDirectConnectGateway where instance NFData CreateDirectConnectGateway where instance ToHeaders CreateDirectConnectGateway where toHeaders = const (mconcat ["X-Amz-Target" =# ("OvertureService.CreateDirectConnectGateway" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON CreateDirectConnectGateway where toJSON CreateDirectConnectGateway'{..} = object (catMaybes [("amazonSideAsn" .=) <$> _cdcgAmazonSideASN, Just ("directConnectGatewayName" .= _cdcgDirectConnectGatewayName)]) instance ToPath CreateDirectConnectGateway where toPath = const "/" instance ToQuery CreateDirectConnectGateway where toQuery = const mempty -- | Container for the response from the CreateDirectConnectGateway API call -- -- -- -- /See:/ 'createDirectConnectGatewayResponse' smart constructor. data CreateDirectConnectGatewayResponse = CreateDirectConnectGatewayResponse' { _cdcgrsDirectConnectGateway :: !(Maybe DirectConnectGateway) , _cdcgrsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'CreateDirectConnectGatewayResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'cdcgrsDirectConnectGateway' - The direct connect gateway to be created. -- -- * 'cdcgrsResponseStatus' - -- | The response status code. createDirectConnectGatewayResponse :: Int -- ^ 'cdcgrsResponseStatus' -> CreateDirectConnectGatewayResponse createDirectConnectGatewayResponse pResponseStatus_ = CreateDirectConnectGatewayResponse' { _cdcgrsDirectConnectGateway = Nothing , _cdcgrsResponseStatus = pResponseStatus_ } -- | The direct connect gateway to be created. cdcgrsDirectConnectGateway :: Lens' CreateDirectConnectGatewayResponse (Maybe DirectConnectGateway) cdcgrsDirectConnectGateway = lens _cdcgrsDirectConnectGateway (\ s a -> s{_cdcgrsDirectConnectGateway = a}) -- | -- | The response status code. cdcgrsResponseStatus :: Lens' CreateDirectConnectGatewayResponse Int cdcgrsResponseStatus = lens _cdcgrsResponseStatus (\ s a -> s{_cdcgrsResponseStatus = a}) instance NFData CreateDirectConnectGatewayResponse where