amazonka-autoscaling-1.4.4: gen/Network/AWS/AutoScaling/EnterStandby.hs
{-# 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 #-}
-- Derived from AWS service descriptions, licensed under Apache 2.0.
-- |
-- Module : Network.AWS.AutoScaling.EnterStandby
-- Copyright : (c) 2013-2016 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Moves the specified instances into 'Standby' mode.
--
-- For more information, see <http://docs.aws.amazon.com/AutoScaling/latest/DeveloperGuide/AutoScalingGroupLifecycle.html Auto Scaling Lifecycle> in the /Auto Scaling User Guide/.
module Network.AWS.AutoScaling.EnterStandby
(
-- * Creating a Request
enterStandby
, EnterStandby
-- * Request Lenses
, esInstanceIds
, esAutoScalingGroupName
, esShouldDecrementDesiredCapacity
-- * Destructuring the Response
, enterStandbyResponse
, EnterStandbyResponse
-- * Response Lenses
, ersActivities
, ersResponseStatus
) where
import Network.AWS.AutoScaling.Types
import Network.AWS.AutoScaling.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | Contains the parameters for EnteStandby.
--
-- /See:/ 'enterStandby' smart constructor.
data EnterStandby = EnterStandby'
{ _esInstanceIds :: !(Maybe [Text])
, _esAutoScalingGroupName :: !Text
, _esShouldDecrementDesiredCapacity :: !Bool
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'EnterStandby' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'esInstanceIds'
--
-- * 'esAutoScalingGroupName'
--
-- * 'esShouldDecrementDesiredCapacity'
enterStandby
:: Text -- ^ 'esAutoScalingGroupName'
-> Bool -- ^ 'esShouldDecrementDesiredCapacity'
-> EnterStandby
enterStandby pAutoScalingGroupName_ pShouldDecrementDesiredCapacity_ =
EnterStandby'
{ _esInstanceIds = Nothing
, _esAutoScalingGroupName = pAutoScalingGroupName_
, _esShouldDecrementDesiredCapacity = pShouldDecrementDesiredCapacity_
}
-- | One or more instances to move into 'Standby' mode. You must specify at least one instance ID.
esInstanceIds :: Lens' EnterStandby [Text]
esInstanceIds = lens _esInstanceIds (\ s a -> s{_esInstanceIds = a}) . _Default . _Coerce;
-- | The name of the Auto Scaling group.
esAutoScalingGroupName :: Lens' EnterStandby Text
esAutoScalingGroupName = lens _esAutoScalingGroupName (\ s a -> s{_esAutoScalingGroupName = a});
-- | Specifies whether the instances moved to 'Standby' mode count as part of the Auto Scaling group\'s desired capacity. If set, the desired capacity for the Auto Scaling group decrements by the number of instances moved to 'Standby' mode.
esShouldDecrementDesiredCapacity :: Lens' EnterStandby Bool
esShouldDecrementDesiredCapacity = lens _esShouldDecrementDesiredCapacity (\ s a -> s{_esShouldDecrementDesiredCapacity = a});
instance AWSRequest EnterStandby where
type Rs EnterStandby = EnterStandbyResponse
request = postQuery autoScaling
response
= receiveXMLWrapper "EnterStandbyResult"
(\ s h x ->
EnterStandbyResponse' <$>
(x .@? "Activities" .!@ mempty >>=
may (parseXMLList "member"))
<*> (pure (fromEnum s)))
instance Hashable EnterStandby
instance NFData EnterStandby
instance ToHeaders EnterStandby where
toHeaders = const mempty
instance ToPath EnterStandby where
toPath = const "/"
instance ToQuery EnterStandby where
toQuery EnterStandby'{..}
= mconcat
["Action" =: ("EnterStandby" :: ByteString),
"Version" =: ("2011-01-01" :: ByteString),
"InstanceIds" =:
toQuery (toQueryList "member" <$> _esInstanceIds),
"AutoScalingGroupName" =: _esAutoScalingGroupName,
"ShouldDecrementDesiredCapacity" =:
_esShouldDecrementDesiredCapacity]
-- | Contains the output of EnterStandby.
--
-- /See:/ 'enterStandbyResponse' smart constructor.
data EnterStandbyResponse = EnterStandbyResponse'
{ _ersActivities :: !(Maybe [Activity])
, _ersResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'EnterStandbyResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ersActivities'
--
-- * 'ersResponseStatus'
enterStandbyResponse
:: Int -- ^ 'ersResponseStatus'
-> EnterStandbyResponse
enterStandbyResponse pResponseStatus_ =
EnterStandbyResponse'
{ _ersActivities = Nothing
, _ersResponseStatus = pResponseStatus_
}
-- | The activities related to moving instances into 'Standby' mode.
ersActivities :: Lens' EnterStandbyResponse [Activity]
ersActivities = lens _ersActivities (\ s a -> s{_ersActivities = a}) . _Default . _Coerce;
-- | The response status code.
ersResponseStatus :: Lens' EnterStandbyResponse Int
ersResponseStatus = lens _ersResponseStatus (\ s a -> s{_ersResponseStatus = a});
instance NFData EnterStandbyResponse