{-# 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.ELBv2.CreateLoadBalancer
(
createLoadBalancer
, CreateLoadBalancer
, clbSecurityGroups
, clbScheme
, clbTags
, clbName
, clbSubnets
, createLoadBalancerResponse
, CreateLoadBalancerResponse
, clbrsLoadBalancers
, clbrsResponseStatus
) where
import Network.AWS.ELBv2.Types
import Network.AWS.ELBv2.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
data CreateLoadBalancer = CreateLoadBalancer'
{ _clbSecurityGroups :: !(Maybe [Text])
, _clbScheme :: !(Maybe LoadBalancerSchemeEnum)
, _clbTags :: !(Maybe (List1 Tag))
, _clbName :: !Text
, _clbSubnets :: ![Text]
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createLoadBalancer
:: Text
-> CreateLoadBalancer
createLoadBalancer pName_ =
CreateLoadBalancer'
{ _clbSecurityGroups = Nothing
, _clbScheme = Nothing
, _clbTags = Nothing
, _clbName = pName_
, _clbSubnets = mempty
}
clbSecurityGroups :: Lens' CreateLoadBalancer [Text]
clbSecurityGroups = lens _clbSecurityGroups (\ s a -> s{_clbSecurityGroups = a}) . _Default . _Coerce;
clbScheme :: Lens' CreateLoadBalancer (Maybe LoadBalancerSchemeEnum)
clbScheme = lens _clbScheme (\ s a -> s{_clbScheme = a});
clbTags :: Lens' CreateLoadBalancer (Maybe (NonEmpty Tag))
clbTags = lens _clbTags (\ s a -> s{_clbTags = a}) . mapping _List1;
clbName :: Lens' CreateLoadBalancer Text
clbName = lens _clbName (\ s a -> s{_clbName = a});
clbSubnets :: Lens' CreateLoadBalancer [Text]
clbSubnets = lens _clbSubnets (\ s a -> s{_clbSubnets = a}) . _Coerce;
instance AWSRequest CreateLoadBalancer where
type Rs CreateLoadBalancer =
CreateLoadBalancerResponse
request = postQuery eLBv2
response
= receiveXMLWrapper "CreateLoadBalancerResult"
(\ s h x ->
CreateLoadBalancerResponse' <$>
(x .@? "LoadBalancers" .!@ mempty >>=
may (parseXMLList "member"))
<*> (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" =: ("2015-12-01" :: ByteString),
"SecurityGroups" =:
toQuery
(toQueryList "member" <$> _clbSecurityGroups),
"Scheme" =: _clbScheme,
"Tags" =:
toQuery (toQueryList "member" <$> _clbTags),
"Name" =: _clbName,
"Subnets" =: toQueryList "member" _clbSubnets]
data CreateLoadBalancerResponse = CreateLoadBalancerResponse'
{ _clbrsLoadBalancers :: !(Maybe [LoadBalancer])
, _clbrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
createLoadBalancerResponse
:: Int
-> CreateLoadBalancerResponse
createLoadBalancerResponse pResponseStatus_ =
CreateLoadBalancerResponse'
{ _clbrsLoadBalancers = Nothing
, _clbrsResponseStatus = pResponseStatus_
}
clbrsLoadBalancers :: Lens' CreateLoadBalancerResponse [LoadBalancer]
clbrsLoadBalancers = lens _clbrsLoadBalancers (\ s a -> s{_clbrsLoadBalancers = a}) . _Default . _Coerce;
clbrsResponseStatus :: Lens' CreateLoadBalancerResponse Int
clbrsResponseStatus = lens _clbrsResponseStatus (\ s a -> s{_clbrsResponseStatus = a});
instance NFData CreateLoadBalancerResponse