amazonka-ec2-1.3.7: gen/Network/AWS/EC2/DescribeHosts.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.EC2.DescribeHosts
-- Copyright : (c) 2013-2015 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)
--
-- Describes one or more of your Dedicated hosts.
--
-- The results describe only the Dedicated hosts in the region you\'re
-- currently using. All listed instances consume capacity on your Dedicated
-- host. Dedicated hosts that have recently been released will be listed
-- with the state 'released'.
--
-- /See:/ <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeHosts.html AWS API Reference> for DescribeHosts.
module Network.AWS.EC2.DescribeHosts
(
-- * Creating a Request
describeHosts
, DescribeHosts
-- * Request Lenses
, dhNextToken
, dhFilter
, dhHostIds
, dhMaxResults
-- * Destructuring the Response
, describeHostsResponse
, DescribeHostsResponse
-- * Response Lenses
, dhrsHosts
, dhrsNextToken
, dhrsResponseStatus
) where
import Network.AWS.EC2.Types
import Network.AWS.EC2.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'describeHosts' smart constructor.
data DescribeHosts = DescribeHosts'
{ _dhNextToken :: !(Maybe Text)
, _dhFilter :: !(Maybe [Filter])
, _dhHostIds :: !(Maybe [Text])
, _dhMaxResults :: !(Maybe Int)
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'DescribeHosts' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'dhNextToken'
--
-- * 'dhFilter'
--
-- * 'dhHostIds'
--
-- * 'dhMaxResults'
describeHosts
:: DescribeHosts
describeHosts =
DescribeHosts'
{ _dhNextToken = Nothing
, _dhFilter = Nothing
, _dhHostIds = Nothing
, _dhMaxResults = Nothing
}
-- | The token to retrieve the next page of results.
dhNextToken :: Lens' DescribeHosts (Maybe Text)
dhNextToken = lens _dhNextToken (\ s a -> s{_dhNextToken = a});
-- | One or more filters.
--
-- - 'instance-type' - The instance type size that the Dedicated host is
-- configured to support.
--
-- - 'auto-placement' - Whether auto-placement is enabled or disabled
-- ('on' | 'off').
--
-- - 'host-reservation-id' - The ID of the reservation associated with
-- this host.
--
-- - 'client-token' - The idempotency token you provided when you
-- launched the instance
--
-- - 'state'- The allocation state of the Dedicated host ('available' |
-- 'under-assessment' | 'permanent-failure' | 'released' |
-- 'released-permanent-failure').
--
-- - 'availability-zone' - The Availability Zone of the host.
--
dhFilter :: Lens' DescribeHosts [Filter]
dhFilter = lens _dhFilter (\ s a -> s{_dhFilter = a}) . _Default . _Coerce;
-- | The IDs of the Dedicated hosts. The IDs are used for targeted instance
-- launches.
dhHostIds :: Lens' DescribeHosts [Text]
dhHostIds = lens _dhHostIds (\ s a -> s{_dhHostIds = a}) . _Default . _Coerce;
-- | The maximum number of results to return for the request in a single
-- page. The remaining results can be seen by sending another request with
-- the returned 'nextToken' value. This value can be between 5 and 500; if
-- 'maxResults' is given a larger value than 500, you will receive an
-- error. You cannot specify this parameter and the host IDs parameter in
-- the same request.
dhMaxResults :: Lens' DescribeHosts (Maybe Int)
dhMaxResults = lens _dhMaxResults (\ s a -> s{_dhMaxResults = a});
instance AWSRequest DescribeHosts where
type Rs DescribeHosts = DescribeHostsResponse
request = postQuery eC2
response
= receiveXML
(\ s h x ->
DescribeHostsResponse' <$>
(x .@? "hostSet" .!@ mempty >>=
may (parseXMLList "item"))
<*> (x .@? "nextToken")
<*> (pure (fromEnum s)))
instance ToHeaders DescribeHosts where
toHeaders = const mempty
instance ToPath DescribeHosts where
toPath = const "/"
instance ToQuery DescribeHosts where
toQuery DescribeHosts'{..}
= mconcat
["Action" =: ("DescribeHosts" :: ByteString),
"Version" =: ("2015-10-01" :: ByteString),
"NextToken" =: _dhNextToken,
toQuery (toQueryList "Filter" <$> _dhFilter),
toQuery (toQueryList "HostId" <$> _dhHostIds),
"MaxResults" =: _dhMaxResults]
-- | /See:/ 'describeHostsResponse' smart constructor.
data DescribeHostsResponse = DescribeHostsResponse'
{ _dhrsHosts :: !(Maybe [Host])
, _dhrsNextToken :: !(Maybe Text)
, _dhrsResponseStatus :: !Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'DescribeHostsResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'dhrsHosts'
--
-- * 'dhrsNextToken'
--
-- * 'dhrsResponseStatus'
describeHostsResponse
:: Int -- ^ 'dhrsResponseStatus'
-> DescribeHostsResponse
describeHostsResponse pResponseStatus_ =
DescribeHostsResponse'
{ _dhrsHosts = Nothing
, _dhrsNextToken = Nothing
, _dhrsResponseStatus = pResponseStatus_
}
-- | Information about the Dedicated hosts.
dhrsHosts :: Lens' DescribeHostsResponse [Host]
dhrsHosts = lens _dhrsHosts (\ s a -> s{_dhrsHosts = a}) . _Default . _Coerce;
-- | The token to use to retrieve the next page of results. This value is
-- 'null' when there are no more results to return.
dhrsNextToken :: Lens' DescribeHostsResponse (Maybe Text)
dhrsNextToken = lens _dhrsNextToken (\ s a -> s{_dhrsNextToken = a});
-- | The response status code.
dhrsResponseStatus :: Lens' DescribeHostsResponse Int
dhrsResponseStatus = lens _dhrsResponseStatus (\ s a -> s{_dhrsResponseStatus = a});