amazonka-directconnect-0.2.2: gen/Network/AWS/DirectConnect/CreateInterconnect.hs
{-# 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.DirectConnect.CreateInterconnect
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- 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 <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
--
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- | Creates a new interconnect between a AWS Direct Connect partner's network and
-- a specific AWS Direct Connect location.
--
-- An interconnect is a connection which is capable of hosting other
-- connections. The AWS Direct Connect partner can use an interconnect to
-- provide sub-1Gbps AWS Direct Connect service to tier 2 customers who do not
-- have their own connections. Like a standard connection, an interconnect links
-- the AWS Direct Connect partner's network to an AWS Direct Connect location
-- over a standard 1 Gbps or 10 Gbps Ethernet fiber-optic cable. One end is
-- connected to the partner's router, the other to an AWS Direct Connect router.
--
-- For each end customer, the AWS Direct Connect partner provisions a
-- connection on their interconnect by calling AllocateConnectionOnInterconnect.
-- The end customer can then connect to AWS resources by creating a virtual
-- interface on their connection, using the VLAN assigned to them by the AWS
-- Direct Connect partner.
--
-- <http://docs.aws.amazon.com/directconnect/latest/APIReference/API_CreateInterconnect.html>
module Network.AWS.DirectConnect.CreateInterconnect
(
-- * Request
CreateInterconnect
-- ** Request constructor
, createInterconnect
-- ** Request lenses
, ciBandwidth
, ciInterconnectName
, ciLocation
-- * Response
, CreateInterconnectResponse
-- ** Response constructor
, createInterconnectResponse
-- ** Response lenses
, cirBandwidth
, cirInterconnectId
, cirInterconnectName
, cirInterconnectState
, cirLocation
, cirRegion
) where
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.DirectConnect.Types
import qualified GHC.Exts
data CreateInterconnect = CreateInterconnect
{ _ciBandwidth :: Text
, _ciInterconnectName :: Text
, _ciLocation :: Text
} deriving (Eq, Ord, Read, Show)
-- | 'CreateInterconnect' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'ciBandwidth' @::@ 'Text'
--
-- * 'ciInterconnectName' @::@ 'Text'
--
-- * 'ciLocation' @::@ 'Text'
--
createInterconnect :: Text -- ^ 'ciInterconnectName'
-> Text -- ^ 'ciBandwidth'
-> Text -- ^ 'ciLocation'
-> CreateInterconnect
createInterconnect p1 p2 p3 = CreateInterconnect
{ _ciInterconnectName = p1
, _ciBandwidth = p2
, _ciLocation = p3
}
-- | The port bandwidth
--
-- Example: 1Gbps
--
-- Default: None
--
-- Available values: 1Gbps,10Gbps
ciBandwidth :: Lens' CreateInterconnect Text
ciBandwidth = lens _ciBandwidth (\s a -> s { _ciBandwidth = a })
-- | The name of the interconnect.
--
-- Example: "/1G Interconnect to AWS/"
--
-- Default: None
ciInterconnectName :: Lens' CreateInterconnect Text
ciInterconnectName =
lens _ciInterconnectName (\s a -> s { _ciInterconnectName = a })
-- | Where the interconnect is located
--
-- Example: EqSV5
--
-- Default: None
ciLocation :: Lens' CreateInterconnect Text
ciLocation = lens _ciLocation (\s a -> s { _ciLocation = a })
data CreateInterconnectResponse = CreateInterconnectResponse
{ _cirBandwidth :: Maybe Text
, _cirInterconnectId :: Maybe Text
, _cirInterconnectName :: Maybe Text
, _cirInterconnectState :: Maybe InterconnectState
, _cirLocation :: Maybe Text
, _cirRegion :: Maybe Text
} deriving (Eq, Read, Show)
-- | 'CreateInterconnectResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'cirBandwidth' @::@ 'Maybe' 'Text'
--
-- * 'cirInterconnectId' @::@ 'Maybe' 'Text'
--
-- * 'cirInterconnectName' @::@ 'Maybe' 'Text'
--
-- * 'cirInterconnectState' @::@ 'Maybe' 'InterconnectState'
--
-- * 'cirLocation' @::@ 'Maybe' 'Text'
--
-- * 'cirRegion' @::@ 'Maybe' 'Text'
--
createInterconnectResponse :: CreateInterconnectResponse
createInterconnectResponse = CreateInterconnectResponse
{ _cirInterconnectId = Nothing
, _cirInterconnectName = Nothing
, _cirInterconnectState = Nothing
, _cirRegion = Nothing
, _cirLocation = Nothing
, _cirBandwidth = Nothing
}
cirBandwidth :: Lens' CreateInterconnectResponse (Maybe Text)
cirBandwidth = lens _cirBandwidth (\s a -> s { _cirBandwidth = a })
cirInterconnectId :: Lens' CreateInterconnectResponse (Maybe Text)
cirInterconnectId =
lens _cirInterconnectId (\s a -> s { _cirInterconnectId = a })
cirInterconnectName :: Lens' CreateInterconnectResponse (Maybe Text)
cirInterconnectName =
lens _cirInterconnectName (\s a -> s { _cirInterconnectName = a })
cirInterconnectState :: Lens' CreateInterconnectResponse (Maybe InterconnectState)
cirInterconnectState =
lens _cirInterconnectState (\s a -> s { _cirInterconnectState = a })
cirLocation :: Lens' CreateInterconnectResponse (Maybe Text)
cirLocation = lens _cirLocation (\s a -> s { _cirLocation = a })
cirRegion :: Lens' CreateInterconnectResponse (Maybe Text)
cirRegion = lens _cirRegion (\s a -> s { _cirRegion = a })
instance ToPath CreateInterconnect where
toPath = const "/"
instance ToQuery CreateInterconnect where
toQuery = const mempty
instance ToHeaders CreateInterconnect
instance ToJSON CreateInterconnect where
toJSON CreateInterconnect{..} = object
[ "interconnectName" .= _ciInterconnectName
, "bandwidth" .= _ciBandwidth
, "location" .= _ciLocation
]
instance AWSRequest CreateInterconnect where
type Sv CreateInterconnect = DirectConnect
type Rs CreateInterconnect = CreateInterconnectResponse
request = post "CreateInterconnect"
response = jsonResponse
instance FromJSON CreateInterconnectResponse where
parseJSON = withObject "CreateInterconnectResponse" $ \o -> CreateInterconnectResponse
<$> o .:? "bandwidth"
<*> o .:? "interconnectId"
<*> o .:? "interconnectName"
<*> o .:? "interconnectState"
<*> o .:? "location"
<*> o .:? "region"