{-# 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 -- 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 -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | 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 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'. -- -- 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 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) -- | '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 , toQuery _dsirFilters , toQuery _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 <$> parseXML x