{-# 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 #-}
module Network.AWS.ELB.CreateLoadBalancer
(
createLoadBalancer
, CreateLoadBalancer
, clbSecurityGroups
, clbSubnets
, clbAvailabilityZones
, clbScheme
, clbTags
, clbLoadBalancerName
, clbListeners
, createLoadBalancerResponse
, CreateLoadBalancerResponse
, clbrsDNSName
, clbrsResponseStatus
) where
import Network.AWS.ELB.Types
import Network.AWS.ELB.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateLoadBalancer = CreateLoadBalancer'
{ _clbSecurityGroups :: !(Maybe [Text])
, _clbSubnets :: !(Maybe [Text])
, _clbAvailabilityZones :: !(Maybe [Text])
, _clbScheme :: !(Maybe Text)
, _clbTags :: !(Maybe (List1 Tag))
, _clbLoadBalancerName :: !Text
, _clbListeners :: ![Listener]
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createLoadBalancer
:: Text
-> CreateLoadBalancer
createLoadBalancer pLoadBalancerName_ =
CreateLoadBalancer'
{ _clbSecurityGroups = Nothing
, _clbSubnets = Nothing
, _clbAvailabilityZones = Nothing
, _clbScheme = Nothing
, _clbTags = Nothing
, _clbLoadBalancerName = pLoadBalancerName_
, _clbListeners = mempty
}
clbSecurityGroups :: Lens' CreateLoadBalancer [Text]
clbSecurityGroups = lens _clbSecurityGroups (\ s a -> s{_clbSecurityGroups = a}) . _Default . _Coerce;
clbSubnets :: Lens' CreateLoadBalancer [Text]
clbSubnets = lens _clbSubnets (\ s a -> s{_clbSubnets = a}) . _Default . _Coerce;
clbAvailabilityZones :: Lens' CreateLoadBalancer [Text]
clbAvailabilityZones = lens _clbAvailabilityZones (\ s a -> s{_clbAvailabilityZones = a}) . _Default . _Coerce;
clbScheme :: Lens' CreateLoadBalancer (Maybe Text)
clbScheme = lens _clbScheme (\ s a -> s{_clbScheme = a});
clbTags :: Lens' CreateLoadBalancer (Maybe (NonEmpty Tag))
clbTags = lens _clbTags (\ s a -> s{_clbTags = a}) . mapping _List1;
clbLoadBalancerName :: Lens' CreateLoadBalancer Text
clbLoadBalancerName = lens _clbLoadBalancerName (\ s a -> s{_clbLoadBalancerName = a});
clbListeners :: Lens' CreateLoadBalancer [Listener]
clbListeners = lens _clbListeners (\ s a -> s{_clbListeners = a}) . _Coerce;
instance AWSRequest CreateLoadBalancer where
type Rs CreateLoadBalancer =
CreateLoadBalancerResponse
request = postQuery elb
response
= receiveXMLWrapper "CreateLoadBalancerResult"
(\ s h x ->
CreateLoadBalancerResponse' <$>
(x .@? "DNSName") <*> (pure (fromEnum s)))
instance Hashable CreateLoadBalancer
instance NFData CreateLoadBalancer
instance ToHeaders CreateLoadBalancer where
toHeaders = const mempty
instance ToPath CreateLoadBalancer where
toPath = const "/"
instance ToQuery CreateLoadBalancer where
toQuery CreateLoadBalancer'{..}
= mconcat
["Action" =: ("CreateLoadBalancer" :: ByteString),
"Version" =: ("2012-06-01" :: ByteString),
"SecurityGroups" =:
toQuery
(toQueryList "member" <$> _clbSecurityGroups),
"Subnets" =:
toQuery (toQueryList "member" <$> _clbSubnets),
"AvailabilityZones" =:
toQuery
(toQueryList "member" <$> _clbAvailabilityZones),
"Scheme" =: _clbScheme,
"Tags" =:
toQuery (toQueryList "member" <$> _clbTags),
"LoadBalancerName" =: _clbLoadBalancerName,
"Listeners" =: toQueryList "member" _clbListeners]
data CreateLoadBalancerResponse = CreateLoadBalancerResponse'
{ _clbrsDNSName :: !(Maybe Text)
, _clbrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createLoadBalancerResponse
:: Int
-> CreateLoadBalancerResponse
createLoadBalancerResponse pResponseStatus_ =
CreateLoadBalancerResponse'
{ _clbrsDNSName = Nothing
, _clbrsResponseStatus = pResponseStatus_
}
clbrsDNSName :: Lens' CreateLoadBalancerResponse (Maybe Text)
clbrsDNSName = lens _clbrsDNSName (\ s a -> s{_clbrsDNSName = a});
clbrsResponseStatus :: Lens' CreateLoadBalancerResponse Int
clbrsResponseStatus = lens _clbrsResponseStatus (\ s a -> s{_clbrsResponseStatus = a});
instance NFData CreateLoadBalancerResponse