amazonka-gamelift-1.4.0: gen/Network/AWS/GameLift/UpdateFleetCapacity.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.GameLift.UpdateFleetCapacity
-- 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)
--
-- Updates capacity settings for a fleet. Use this action to specify the
-- number of EC2 instances (hosts) you want this fleet to contain. Before
-- calling this action, you may want to call < DescribeEC2InstanceLimits>
-- to get the maximum capacity based on the fleet\'s EC2 instance type.
--
-- If you\'re using auto-scaling (see < PutScalingPolicy>), you may want to
-- specify a minimum and\/or maximum capacity. If you don\'t provide these
-- boundaries, auto-scaling can set capacity anywhere between zero and the
-- <http://docs.aws.amazon.com/general/latest/gr/aws_service_limits.html#limits_gamelift service limits>.
--
-- To update fleet capacity, specify the fleet ID and the desired number of
-- instances. If successful, Amazon GameLift starts or terminates instances
-- so that the fleet\'s active instance count matches the desired instance
-- count. You can view a fleet\'s current capacity information by calling
-- < DescribeFleetCapacity>. If the desired instance count is higher than
-- the instance type\'s limit, the \"Limit Exceeded\" exception will occur.
module Network.AWS.GameLift.UpdateFleetCapacity
(
-- * Creating a Request
updateFleetCapacity
, UpdateFleetCapacity
-- * Request Lenses
, ufcMaxSize
, ufcMinSize
, ufcDesiredInstances
, ufcFleetId
-- * Destructuring the Response
, updateFleetCapacityResponse
, UpdateFleetCapacityResponse
-- * Response Lenses
, ufcrsFleetId
, ufcrsResponseStatus
) where
import Network.AWS.GameLift.Types
import Network.AWS.GameLift.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | Represents the input for a request action.
--
-- /See:/ 'updateFleetCapacity' smart constructor.
data UpdateFleetCapacity = UpdateFleetCapacity'
{ _ufcMaxSize :: !(Maybe Nat)
, _ufcMinSize :: !(Maybe Nat)
, _ufcDesiredInstances :: !(Maybe Nat)
, _ufcFleetId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'UpdateFleetCapacity' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ufcMaxSize'
--
-- * 'ufcMinSize'
--
-- * 'ufcDesiredInstances'
--
-- * 'ufcFleetId'
updateFleetCapacity
:: Text -- ^ 'ufcFleetId'
-> UpdateFleetCapacity
updateFleetCapacity pFleetId_ =
UpdateFleetCapacity'
{ _ufcMaxSize = Nothing
, _ufcMinSize = Nothing
, _ufcDesiredInstances = Nothing
, _ufcFleetId = pFleetId_
}
-- | Maximum value allowed for the fleet\'s instance count. Default if not
-- set is 1.
ufcMaxSize :: Lens' UpdateFleetCapacity (Maybe Natural)
ufcMaxSize = lens _ufcMaxSize (\ s a -> s{_ufcMaxSize = a}) . mapping _Nat;
-- | Minimum value allowed for the fleet\'s instance count. Default if not
-- set is 0.
ufcMinSize :: Lens' UpdateFleetCapacity (Maybe Natural)
ufcMinSize = lens _ufcMinSize (\ s a -> s{_ufcMinSize = a}) . mapping _Nat;
-- | Number of EC2 instances you want this fleet to host.
ufcDesiredInstances :: Lens' UpdateFleetCapacity (Maybe Natural)
ufcDesiredInstances = lens _ufcDesiredInstances (\ s a -> s{_ufcDesiredInstances = a}) . mapping _Nat;
-- | Unique identifier for the fleet you want to update capacity for.
ufcFleetId :: Lens' UpdateFleetCapacity Text
ufcFleetId = lens _ufcFleetId (\ s a -> s{_ufcFleetId = a});
instance AWSRequest UpdateFleetCapacity where
type Rs UpdateFleetCapacity =
UpdateFleetCapacityResponse
request = postJSON gameLift
response
= receiveJSON
(\ s h x ->
UpdateFleetCapacityResponse' <$>
(x .?> "FleetId") <*> (pure (fromEnum s)))
instance Hashable UpdateFleetCapacity
instance ToHeaders UpdateFleetCapacity where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("GameLift.UpdateFleetCapacity" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON UpdateFleetCapacity where
toJSON UpdateFleetCapacity'{..}
= object
(catMaybes
[("MaxSize" .=) <$> _ufcMaxSize,
("MinSize" .=) <$> _ufcMinSize,
("DesiredInstances" .=) <$> _ufcDesiredInstances,
Just ("FleetId" .= _ufcFleetId)])
instance ToPath UpdateFleetCapacity where
toPath = const "/"
instance ToQuery UpdateFleetCapacity where
toQuery = const mempty
-- | Represents the returned data in response to a request action.
--
-- /See:/ 'updateFleetCapacityResponse' smart constructor.
data UpdateFleetCapacityResponse = UpdateFleetCapacityResponse'
{ _ufcrsFleetId :: !(Maybe Text)
, _ufcrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'UpdateFleetCapacityResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ufcrsFleetId'
--
-- * 'ufcrsResponseStatus'
updateFleetCapacityResponse
:: Int -- ^ 'ufcrsResponseStatus'
-> UpdateFleetCapacityResponse
updateFleetCapacityResponse pResponseStatus_ =
UpdateFleetCapacityResponse'
{ _ufcrsFleetId = Nothing
, _ufcrsResponseStatus = pResponseStatus_
}
-- | Unique identifier for the updated fleet.
ufcrsFleetId :: Lens' UpdateFleetCapacityResponse (Maybe Text)
ufcrsFleetId = lens _ufcrsFleetId (\ s a -> s{_ufcrsFleetId = a});
-- | The response status code.
ufcrsResponseStatus :: Lens' UpdateFleetCapacityResponse Int
ufcrsResponseStatus = lens _ufcrsResponseStatus (\ s a -> s{_ufcrsResponseStatus = a});