{-# 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.Redshift.DescribeClusterSecurityGroups
(
describeClusterSecurityGroups
, DescribeClusterSecurityGroups
, dcsgTagValues
, dcsgTagKeys
, dcsgClusterSecurityGroupName
, dcsgMarker
, dcsgMaxRecords
, describeClusterSecurityGroupsResponse
, DescribeClusterSecurityGroupsResponse
, dcsgsrsClusterSecurityGroups
, dcsgsrsMarker
, dcsgsrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Pager
import Network.AWS.Prelude
import Network.AWS.Redshift.Types
import Network.AWS.Redshift.Types.Product
import Network.AWS.Request
import Network.AWS.Response
data DescribeClusterSecurityGroups = DescribeClusterSecurityGroups'
{ _dcsgTagValues :: !(Maybe [Text])
, _dcsgTagKeys :: !(Maybe [Text])
, _dcsgClusterSecurityGroupName :: !(Maybe Text)
, _dcsgMarker :: !(Maybe Text)
, _dcsgMaxRecords :: !(Maybe Int)
} deriving (Eq,Read,Show,Data,Typeable,Generic)
describeClusterSecurityGroups
:: DescribeClusterSecurityGroups
describeClusterSecurityGroups =
DescribeClusterSecurityGroups'
{ _dcsgTagValues = Nothing
, _dcsgTagKeys = Nothing
, _dcsgClusterSecurityGroupName = Nothing
, _dcsgMarker = Nothing
, _dcsgMaxRecords = Nothing
}
dcsgTagValues :: Lens' DescribeClusterSecurityGroups [Text]
dcsgTagValues = lens _dcsgTagValues (\ s a -> s{_dcsgTagValues = a}) . _Default . _Coerce;
dcsgTagKeys :: Lens' DescribeClusterSecurityGroups [Text]
dcsgTagKeys = lens _dcsgTagKeys (\ s a -> s{_dcsgTagKeys = a}) . _Default . _Coerce;
dcsgClusterSecurityGroupName :: Lens' DescribeClusterSecurityGroups (Maybe Text)
dcsgClusterSecurityGroupName = lens _dcsgClusterSecurityGroupName (\ s a -> s{_dcsgClusterSecurityGroupName = a});
dcsgMarker :: Lens' DescribeClusterSecurityGroups (Maybe Text)
dcsgMarker = lens _dcsgMarker (\ s a -> s{_dcsgMarker = a});
dcsgMaxRecords :: Lens' DescribeClusterSecurityGroups (Maybe Int)
dcsgMaxRecords = lens _dcsgMaxRecords (\ s a -> s{_dcsgMaxRecords = a});
instance AWSPager DescribeClusterSecurityGroups where
page rq rs
| stop (rs ^. dcsgsrsMarker) = Nothing
| stop (rs ^. dcsgsrsClusterSecurityGroups) = Nothing
| otherwise =
Just $ rq & dcsgMarker .~ rs ^. dcsgsrsMarker
instance AWSRequest DescribeClusterSecurityGroups
where
type Rs DescribeClusterSecurityGroups =
DescribeClusterSecurityGroupsResponse
request = postQuery redshift
response
= receiveXMLWrapper
"DescribeClusterSecurityGroupsResult"
(\ s h x ->
DescribeClusterSecurityGroupsResponse' <$>
(x .@? "ClusterSecurityGroups" .!@ mempty >>=
may (parseXMLList "ClusterSecurityGroup"))
<*> (x .@? "Marker")
<*> (pure (fromEnum s)))
instance Hashable DescribeClusterSecurityGroups
instance NFData DescribeClusterSecurityGroups
instance ToHeaders DescribeClusterSecurityGroups
where
toHeaders = const mempty
instance ToPath DescribeClusterSecurityGroups where
toPath = const "/"
instance ToQuery DescribeClusterSecurityGroups where
toQuery DescribeClusterSecurityGroups'{..}
= mconcat
["Action" =:
("DescribeClusterSecurityGroups" :: ByteString),
"Version" =: ("2012-12-01" :: ByteString),
"TagValues" =:
toQuery (toQueryList "TagValue" <$> _dcsgTagValues),
"TagKeys" =:
toQuery (toQueryList "TagKey" <$> _dcsgTagKeys),
"ClusterSecurityGroupName" =:
_dcsgClusterSecurityGroupName,
"Marker" =: _dcsgMarker,
"MaxRecords" =: _dcsgMaxRecords]
data DescribeClusterSecurityGroupsResponse = DescribeClusterSecurityGroupsResponse'
{ _dcsgsrsClusterSecurityGroups :: !(Maybe [ClusterSecurityGroup])
, _dcsgsrsMarker :: !(Maybe Text)
, _dcsgsrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
describeClusterSecurityGroupsResponse
:: Int
-> DescribeClusterSecurityGroupsResponse
describeClusterSecurityGroupsResponse pResponseStatus_ =
DescribeClusterSecurityGroupsResponse'
{ _dcsgsrsClusterSecurityGroups = Nothing
, _dcsgsrsMarker = Nothing
, _dcsgsrsResponseStatus = pResponseStatus_
}
dcsgsrsClusterSecurityGroups :: Lens' DescribeClusterSecurityGroupsResponse [ClusterSecurityGroup]
dcsgsrsClusterSecurityGroups = lens _dcsgsrsClusterSecurityGroups (\ s a -> s{_dcsgsrsClusterSecurityGroups = a}) . _Default . _Coerce;
dcsgsrsMarker :: Lens' DescribeClusterSecurityGroupsResponse (Maybe Text)
dcsgsrsMarker = lens _dcsgsrsMarker (\ s a -> s{_dcsgsrsMarker = a});
dcsgsrsResponseStatus :: Lens' DescribeClusterSecurityGroupsResponse Int
dcsgsrsResponseStatus = lens _dcsgsrsResponseStatus (\ s a -> s{_dcsgsrsResponseStatus = a});
instance NFData DescribeClusterSecurityGroupsResponse