amazonka-gamelift-1.4.3: gen/Network/AWS/GameLift/DescribeEC2InstanceLimits.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.DescribeEC2InstanceLimits
-- 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)
--
-- Retrieves the following information for the specified EC2 instance type:
--
-- - maximum number of instances allowed per AWS account (service limit)
-- - current usage level for the AWS account
--
-- Service limits vary depending on region. Available regions for GameLift can be found in the AWS Management Console for GameLift (see the drop-down list in the upper right corner).
module Network.AWS.GameLift.DescribeEC2InstanceLimits
(
-- * Creating a Request
describeEC2InstanceLimits
, DescribeEC2InstanceLimits
-- * Request Lenses
, deilEC2InstanceType
-- * Destructuring the Response
, describeEC2InstanceLimitsResponse
, DescribeEC2InstanceLimitsResponse
-- * Response Lenses
, deilrsEC2InstanceLimits
, deilrsResponseStatus
) 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:/ 'describeEC2InstanceLimits' smart constructor.
newtype DescribeEC2InstanceLimits = DescribeEC2InstanceLimits'
{ _deilEC2InstanceType :: Maybe EC2InstanceType
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'DescribeEC2InstanceLimits' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'deilEC2InstanceType'
describeEC2InstanceLimits
:: DescribeEC2InstanceLimits
describeEC2InstanceLimits =
DescribeEC2InstanceLimits'
{ _deilEC2InstanceType = Nothing
}
-- | Type of EC2 instances used in the fleet. EC2 instance types define the CPU, memory, storage, and networking capacity of the fleetaposs hosts. Amazon GameLift supports the EC2 instance types listed below. See <https://aws.amazon.com/ec2/instance-types/ Amazon EC2 Instance Types> for detailed descriptions of each. Leave this parameter blank to retrieve limits for all types.
deilEC2InstanceType :: Lens' DescribeEC2InstanceLimits (Maybe EC2InstanceType)
deilEC2InstanceType = lens _deilEC2InstanceType (\ s a -> s{_deilEC2InstanceType = a});
instance AWSRequest DescribeEC2InstanceLimits where
type Rs DescribeEC2InstanceLimits =
DescribeEC2InstanceLimitsResponse
request = postJSON gameLift
response
= receiveJSON
(\ s h x ->
DescribeEC2InstanceLimitsResponse' <$>
(x .?> "EC2InstanceLimits" .!@ mempty) <*>
(pure (fromEnum s)))
instance Hashable DescribeEC2InstanceLimits
instance NFData DescribeEC2InstanceLimits
instance ToHeaders DescribeEC2InstanceLimits where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("GameLift.DescribeEC2InstanceLimits" :: ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON DescribeEC2InstanceLimits where
toJSON DescribeEC2InstanceLimits'{..}
= object
(catMaybes
[("EC2InstanceType" .=) <$> _deilEC2InstanceType])
instance ToPath DescribeEC2InstanceLimits where
toPath = const "/"
instance ToQuery DescribeEC2InstanceLimits where
toQuery = const mempty
-- | Represents the returned data in response to a request action.
--
-- /See:/ 'describeEC2InstanceLimitsResponse' smart constructor.
data DescribeEC2InstanceLimitsResponse = DescribeEC2InstanceLimitsResponse'
{ _deilrsEC2InstanceLimits :: !(Maybe [EC2InstanceLimit])
, _deilrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'DescribeEC2InstanceLimitsResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'deilrsEC2InstanceLimits'
--
-- * 'deilrsResponseStatus'
describeEC2InstanceLimitsResponse
:: Int -- ^ 'deilrsResponseStatus'
-> DescribeEC2InstanceLimitsResponse
describeEC2InstanceLimitsResponse pResponseStatus_ =
DescribeEC2InstanceLimitsResponse'
{ _deilrsEC2InstanceLimits = Nothing
, _deilrsResponseStatus = pResponseStatus_
}
-- | Object containing the maximum number of instances for the specified instance type.
deilrsEC2InstanceLimits :: Lens' DescribeEC2InstanceLimitsResponse [EC2InstanceLimit]
deilrsEC2InstanceLimits = lens _deilrsEC2InstanceLimits (\ s a -> s{_deilrsEC2InstanceLimits = a}) . _Default . _Coerce;
-- | The response status code.
deilrsResponseStatus :: Lens' DescribeEC2InstanceLimitsResponse Int
deilrsResponseStatus = lens _deilrsResponseStatus (\ s a -> s{_deilrsResponseStatus = a});
instance NFData DescribeEC2InstanceLimitsResponse