amazonka-ec2-0.0.0: gen/Network/AWS/EC2/DescribeSpotInstanceRequests.hs
{-# 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.EC2.DescribeSpotInstanceRequests
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- 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 <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
-- | Describes the Spot Instance requests that belong to your account. Spot
-- Instances are instances that Amazon EC2 starts on your behalf when the
-- maximum price that you specify exceeds the current Spot Price. Amazon EC2
-- periodically sets the Spot Price based on available Spot Instance capacity
-- and current Spot Instance requests. For more information about Spot
-- Instances, see Spot Instances in the Amazon Elastic Compute Cloud User
-- Guide. You can use DescribeSpotInstanceRequests to find a running Spot
-- Instance by examining the response. If the status of the Spot Instance is
-- fulfilled, the instance ID appears in the response and contains the
-- identifier of the instance. Alternatively, you can use DescribeInstances
-- with a filter to look for instances where the instance lifecycle is spot.
--
-- <http://docs.aws.amazon.com/AWSEC2/latest/APIReference/ApiReference-query-DescribeSpotInstanceRequests.html>
module Network.AWS.EC2.DescribeSpotInstanceRequests
(
-- * Request
DescribeSpotInstanceRequests
-- ** Request constructor
, describeSpotInstanceRequests
-- ** Request lenses
, dsirDryRun
, dsirFilters
, dsirSpotInstanceRequestIds
-- * Response
, DescribeSpotInstanceRequestsResponse
-- ** Response constructor
, describeSpotInstanceRequestsResponse
-- ** Response lenses
, dsirrSpotInstanceRequests
) where
import Network.AWS.Prelude
import Network.AWS.Request.Query
import Network.AWS.EC2.Types
import qualified GHC.Exts
data DescribeSpotInstanceRequests = DescribeSpotInstanceRequests
{ _dsirDryRun :: Maybe Bool
, _dsirFilters :: List "Filter" Filter
, _dsirSpotInstanceRequestIds :: List "SpotInstanceRequestId" Text
} deriving (Eq, Show)
-- | 'DescribeSpotInstanceRequests' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'dsirDryRun' @::@ 'Maybe' 'Bool'
--
-- * 'dsirFilters' @::@ ['Filter']
--
-- * 'dsirSpotInstanceRequestIds' @::@ ['Text']
--
describeSpotInstanceRequests :: DescribeSpotInstanceRequests
describeSpotInstanceRequests = DescribeSpotInstanceRequests
{ _dsirDryRun = Nothing
, _dsirSpotInstanceRequestIds = mempty
, _dsirFilters = mempty
}
dsirDryRun :: Lens' DescribeSpotInstanceRequests (Maybe Bool)
dsirDryRun = lens _dsirDryRun (\s a -> s { _dsirDryRun = a })
-- | One or more filters. availability-zone-group - The Availability Zone
-- group. create-time - The time stamp when the Spot Instance request was
-- created. fault-code - The fault code related to the request.
-- fault-message - The fault message related to the request. instance-id -
-- The ID of the instance that fulfilled the request. launch-group - The
-- Spot Instance launch group.
-- launch.block-device-mapping.delete-on-termination - Indicates whether the
-- Amazon EBS volume is deleted on instance termination.
-- launch.block-device-mapping.device-name - The device name for the Amazon
-- EBS volume (for example, /dev/sdh).
-- launch.block-device-mapping.snapshot-id - The ID of the snapshot used for
-- the Amazon EBS volume. launch.block-device-mapping.volume-size - The size
-- of the Amazon EBS volume, in GiB. launch.block-device-mapping.volume-type
-- - The type of the Amazon EBS volume (gp2 | standard | io1).
-- launch.group-id - The security group for the instance. launch.image-id -
-- The ID of the AMI. launch.instance-type - The type of instance (for
-- example, m1.small). launch.kernel-id - The kernel ID. launch.key-name -
-- The name of the key pair the instance launched with.
-- launch.monitoring-enabled - Whether monitoring is enabled for the Spot
-- Instance. launch.ramdisk-id - The RAM disk ID.
-- network-interface.network-interface-id - The ID of the network interface.
-- network-interface.device-index - The index of the device for the network
-- interface attachment on the instance. network-interface.subnet-id - The
-- ID of the subnet for the instance. network-interface.description - A
-- description of the network interface.
-- network-interface.private-ip-address - The primary private IP address of
-- the network interface. network-interface.delete-on-termination -
-- Indicates whether the network interface is deleted when the instance is
-- terminated. network-interface.group-id - The ID of the security group
-- associated with the network interface. network-interface.group-name - The
-- name of the security group associated with the network interface.
-- network-interface.addresses.primary - Indicates whether the IP address is
-- the primary private IP address. product-description - The product
-- description associated with the instance (Linux/UNIX | Windows).
-- spot-instance-request-id - The Spot Instance request ID. spot-price - The
-- maximum hourly price for any Spot Instance launched to fulfill the
-- request. state - The state of the Spot Instance request (open | active |
-- closed | cancelled | failed). Spot bid status information can help you
-- track your Amazon EC2 Spot Instance requests. For information, see
-- Tracking Spot Requests with Bid Status Codes in the Amazon Elastic
-- Compute Cloud User Guide. status-code - The short code describing the
-- most recent evaluation of your Spot Instance request. status-message -
-- The message explaining the status of the Spot Instance request.
-- tag:key=value - The key/value combination of a tag assigned to the
-- resource. tag-key - The key of a tag assigned to the resource. This
-- filter is independent of the tag-value filter. For example, if you use
-- both the filter "tag-key=Purpose" and the filter "tag-value=X", you get
-- any resources assigned both the tag key Purpose (regardless of what the
-- tag's value is), and the tag value X (regardless of what the tag's key
-- is). If you want to list only resources where Purpose is X, see the
-- tag:key=value filter. tag-value - The value of a tag assigned to the
-- resource. This filter is independent of the tag-key filter. type - The
-- type of Spot Instance request (one-time | persistent).
-- launched-availability-zone - The Availability Zone in which the bid is
-- launched. valid-from - The start date of the request. valid-until - The
-- end date of the request.
dsirFilters :: Lens' DescribeSpotInstanceRequests [Filter]
dsirFilters = lens _dsirFilters (\s a -> s { _dsirFilters = a }) . _List
-- | One or more Spot Instance request IDs.
dsirSpotInstanceRequestIds :: Lens' DescribeSpotInstanceRequests [Text]
dsirSpotInstanceRequestIds =
lens _dsirSpotInstanceRequestIds
(\s a -> s { _dsirSpotInstanceRequestIds = a })
. _List
newtype DescribeSpotInstanceRequestsResponse = DescribeSpotInstanceRequestsResponse
{ _dsirrSpotInstanceRequests :: List "item" SpotInstanceRequest
} deriving (Eq, Show, Monoid, Semigroup)
instance GHC.Exts.IsList DescribeSpotInstanceRequestsResponse where
type Item DescribeSpotInstanceRequestsResponse = SpotInstanceRequest
fromList = DescribeSpotInstanceRequestsResponse . GHC.Exts.fromList
toList = GHC.Exts.toList . _dsirrSpotInstanceRequests
-- | 'DescribeSpotInstanceRequestsResponse' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'dsirrSpotInstanceRequests' @::@ ['SpotInstanceRequest']
--
describeSpotInstanceRequestsResponse :: DescribeSpotInstanceRequestsResponse
describeSpotInstanceRequestsResponse = DescribeSpotInstanceRequestsResponse
{ _dsirrSpotInstanceRequests = mempty
}
-- | One or more Spot Instance requests.
dsirrSpotInstanceRequests :: Lens' DescribeSpotInstanceRequestsResponse [SpotInstanceRequest]
dsirrSpotInstanceRequests =
lens _dsirrSpotInstanceRequests
(\s a -> s { _dsirrSpotInstanceRequests = a })
. _List
instance ToPath DescribeSpotInstanceRequests where
toPath = const "/"
instance ToQuery DescribeSpotInstanceRequests where
toQuery DescribeSpotInstanceRequests{..} = mconcat
[ "dryRun" =? _dsirDryRun
, "Filter" =? _dsirFilters
, "SpotInstanceRequestId" =? _dsirSpotInstanceRequestIds
]
instance ToHeaders DescribeSpotInstanceRequests
instance AWSRequest DescribeSpotInstanceRequests where
type Sv DescribeSpotInstanceRequests = EC2
type Rs DescribeSpotInstanceRequests = DescribeSpotInstanceRequestsResponse
request = post "DescribeSpotInstanceRequests"
response = xmlResponse
instance FromXML DescribeSpotInstanceRequestsResponse where
parseXML x = DescribeSpotInstanceRequestsResponse
<$> x .@ "spotInstanceRequestSet"