{-# 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.Redshift.RevokeClusterSecurityGroupIngress -- Copyright : (c) 2013-2014 Brendan Hay -- 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 -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | Revokes an ingress rule in an Amazon Redshift security group for a -- previously authorized IP range or Amazon EC2 security group. To add an -- ingress rule, see 'AuthorizeClusterSecurityGroupIngress'. For information about -- managing security groups, go to in -- the /Amazon Redshift Cluster Management Guide/. -- -- module Network.AWS.Redshift.RevokeClusterSecurityGroupIngress ( -- * Request RevokeClusterSecurityGroupIngress -- ** Request constructor , revokeClusterSecurityGroupIngress -- ** Request lenses , rcsgiCIDRIP , rcsgiClusterSecurityGroupName , rcsgiEC2SecurityGroupName , rcsgiEC2SecurityGroupOwnerId -- * Response , RevokeClusterSecurityGroupIngressResponse -- ** Response constructor , revokeClusterSecurityGroupIngressResponse -- ** Response lenses , rcsgirClusterSecurityGroup ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.Redshift.Types import qualified GHC.Exts data RevokeClusterSecurityGroupIngress = RevokeClusterSecurityGroupIngress { _rcsgiCIDRIP :: Maybe Text , _rcsgiClusterSecurityGroupName :: Text , _rcsgiEC2SecurityGroupName :: Maybe Text , _rcsgiEC2SecurityGroupOwnerId :: Maybe Text } deriving (Eq, Ord, Show) -- | 'RevokeClusterSecurityGroupIngress' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'rcsgiCIDRIP' @::@ 'Maybe' 'Text' -- -- * 'rcsgiClusterSecurityGroupName' @::@ 'Text' -- -- * 'rcsgiEC2SecurityGroupName' @::@ 'Maybe' 'Text' -- -- * 'rcsgiEC2SecurityGroupOwnerId' @::@ 'Maybe' 'Text' -- revokeClusterSecurityGroupIngress :: Text -- ^ 'rcsgiClusterSecurityGroupName' -> RevokeClusterSecurityGroupIngress revokeClusterSecurityGroupIngress p1 = RevokeClusterSecurityGroupIngress { _rcsgiClusterSecurityGroupName = p1 , _rcsgiCIDRIP = Nothing , _rcsgiEC2SecurityGroupName = Nothing , _rcsgiEC2SecurityGroupOwnerId = Nothing } -- | The IP range for which to revoke access. This range must be a valid -- Classless Inter-Domain Routing (CIDR) block of IP addresses. If 'CIDRIP' is -- specified, 'EC2SecurityGroupName' and 'EC2SecurityGroupOwnerId' cannot be -- provided. rcsgiCIDRIP :: Lens' RevokeClusterSecurityGroupIngress (Maybe Text) rcsgiCIDRIP = lens _rcsgiCIDRIP (\s a -> s { _rcsgiCIDRIP = a }) -- | The name of the security Group from which to revoke the ingress rule. rcsgiClusterSecurityGroupName :: Lens' RevokeClusterSecurityGroupIngress Text rcsgiClusterSecurityGroupName = lens _rcsgiClusterSecurityGroupName (\s a -> s { _rcsgiClusterSecurityGroupName = a }) -- | The name of the EC2 Security Group whose access is to be revoked. If 'EC2SecurityGroupName' is specified, 'EC2SecurityGroupOwnerId' must also be provided and 'CIDRIP' -- cannot be provided. rcsgiEC2SecurityGroupName :: Lens' RevokeClusterSecurityGroupIngress (Maybe Text) rcsgiEC2SecurityGroupName = lens _rcsgiEC2SecurityGroupName (\s a -> s { _rcsgiEC2SecurityGroupName = a }) -- | The AWS account number of the owner of the security group specified in the 'EC2SecurityGroupName' parameter. The AWS access key ID is not an acceptable value. If 'EC2SecurityGroupOwnerId' is specified, 'EC2SecurityGroupName' must also be provided. and 'CIDRIP' cannot -- be provided. -- -- Example: '111122223333' rcsgiEC2SecurityGroupOwnerId :: Lens' RevokeClusterSecurityGroupIngress (Maybe Text) rcsgiEC2SecurityGroupOwnerId = lens _rcsgiEC2SecurityGroupOwnerId (\s a -> s { _rcsgiEC2SecurityGroupOwnerId = a }) newtype RevokeClusterSecurityGroupIngressResponse = RevokeClusterSecurityGroupIngressResponse { _rcsgirClusterSecurityGroup :: Maybe ClusterSecurityGroup } deriving (Eq, Show) -- | 'RevokeClusterSecurityGroupIngressResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'rcsgirClusterSecurityGroup' @::@ 'Maybe' 'ClusterSecurityGroup' -- revokeClusterSecurityGroupIngressResponse :: RevokeClusterSecurityGroupIngressResponse revokeClusterSecurityGroupIngressResponse = RevokeClusterSecurityGroupIngressResponse { _rcsgirClusterSecurityGroup = Nothing } rcsgirClusterSecurityGroup :: Lens' RevokeClusterSecurityGroupIngressResponse (Maybe ClusterSecurityGroup) rcsgirClusterSecurityGroup = lens _rcsgirClusterSecurityGroup (\s a -> s { _rcsgirClusterSecurityGroup = a }) instance ToPath RevokeClusterSecurityGroupIngress where toPath = const "/" instance ToQuery RevokeClusterSecurityGroupIngress where toQuery RevokeClusterSecurityGroupIngress{..} = mconcat [ "CIDRIP" =? _rcsgiCIDRIP , "ClusterSecurityGroupName" =? _rcsgiClusterSecurityGroupName , "EC2SecurityGroupName" =? _rcsgiEC2SecurityGroupName , "EC2SecurityGroupOwnerId" =? _rcsgiEC2SecurityGroupOwnerId ] instance ToHeaders RevokeClusterSecurityGroupIngress instance AWSRequest RevokeClusterSecurityGroupIngress where type Sv RevokeClusterSecurityGroupIngress = Redshift type Rs RevokeClusterSecurityGroupIngress = RevokeClusterSecurityGroupIngressResponse request = post "RevokeClusterSecurityGroupIngress" response = xmlResponse instance FromXML RevokeClusterSecurityGroupIngressResponse where parseXML = withElement "RevokeClusterSecurityGroupIngressResult" $ \x -> RevokeClusterSecurityGroupIngressResponse <$> x .@? "ClusterSecurityGroup"