{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.EC2.DescribeSpotFleetRequestHistory
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Describes the events for the specified Spot Fleet request during the
-- specified time.
--
-- Spot Fleet events are delayed by up to 30 seconds before they can be
-- described. This ensures that you can query by the last evaluated time
-- and not miss a recorded event. Spot Fleet events are available for 48
-- hours.
--
-- For more information, see
-- <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/fleet-monitor.html Monitor fleet events using Amazon EventBridge>
-- in the /Amazon EC2 User Guide/.
module Amazonka.EC2.DescribeSpotFleetRequestHistory
  ( -- * Creating a Request
    DescribeSpotFleetRequestHistory (..),
    newDescribeSpotFleetRequestHistory,

    -- * Request Lenses
    describeSpotFleetRequestHistory_dryRun,
    describeSpotFleetRequestHistory_eventType,
    describeSpotFleetRequestHistory_maxResults,
    describeSpotFleetRequestHistory_nextToken,
    describeSpotFleetRequestHistory_spotFleetRequestId,
    describeSpotFleetRequestHistory_startTime,

    -- * Destructuring the Response
    DescribeSpotFleetRequestHistoryResponse (..),
    newDescribeSpotFleetRequestHistoryResponse,

    -- * Response Lenses
    describeSpotFleetRequestHistoryResponse_historyRecords,
    describeSpotFleetRequestHistoryResponse_lastEvaluatedTime,
    describeSpotFleetRequestHistoryResponse_nextToken,
    describeSpotFleetRequestHistoryResponse_spotFleetRequestId,
    describeSpotFleetRequestHistoryResponse_startTime,
    describeSpotFleetRequestHistoryResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | Contains the parameters for DescribeSpotFleetRequestHistory.
--
-- /See:/ 'newDescribeSpotFleetRequestHistory' smart constructor.
data DescribeSpotFleetRequestHistory = DescribeSpotFleetRequestHistory'
  { -- | Checks whether you have the required permissions for the action, without
    -- actually making the request, and provides an error response. If you have
    -- the required permissions, the error response is @DryRunOperation@.
    -- Otherwise, it is @UnauthorizedOperation@.
    DescribeSpotFleetRequestHistory -> Maybe Bool
dryRun :: Prelude.Maybe Prelude.Bool,
    -- | The type of events to describe. By default, all events are described.
    DescribeSpotFleetRequestHistory -> Maybe EventType
eventType :: Prelude.Maybe EventType,
    -- | The maximum number of results to return in a single call. Specify a
    -- value between 1 and 1000. The default value is 1000. To retrieve the
    -- remaining results, make another call with the returned @NextToken@
    -- value.
    DescribeSpotFleetRequestHistory -> Maybe Natural
maxResults :: Prelude.Maybe Prelude.Natural,
    -- | The token for the next set of results.
    DescribeSpotFleetRequestHistory -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Spot Fleet request.
    DescribeSpotFleetRequestHistory -> Text
spotFleetRequestId :: Prelude.Text,
    -- | The starting date and time for the events, in UTC format (for example,
    -- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
    DescribeSpotFleetRequestHistory -> ISO8601
startTime :: Data.ISO8601
  }
  deriving (DescribeSpotFleetRequestHistory
-> DescribeSpotFleetRequestHistory -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSpotFleetRequestHistory
-> DescribeSpotFleetRequestHistory -> Bool
$c/= :: DescribeSpotFleetRequestHistory
-> DescribeSpotFleetRequestHistory -> Bool
== :: DescribeSpotFleetRequestHistory
-> DescribeSpotFleetRequestHistory -> Bool
$c== :: DescribeSpotFleetRequestHistory
-> DescribeSpotFleetRequestHistory -> Bool
Prelude.Eq, ReadPrec [DescribeSpotFleetRequestHistory]
ReadPrec DescribeSpotFleetRequestHistory
Int -> ReadS DescribeSpotFleetRequestHistory
ReadS [DescribeSpotFleetRequestHistory]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSpotFleetRequestHistory]
$creadListPrec :: ReadPrec [DescribeSpotFleetRequestHistory]
readPrec :: ReadPrec DescribeSpotFleetRequestHistory
$creadPrec :: ReadPrec DescribeSpotFleetRequestHistory
readList :: ReadS [DescribeSpotFleetRequestHistory]
$creadList :: ReadS [DescribeSpotFleetRequestHistory]
readsPrec :: Int -> ReadS DescribeSpotFleetRequestHistory
$creadsPrec :: Int -> ReadS DescribeSpotFleetRequestHistory
Prelude.Read, Int -> DescribeSpotFleetRequestHistory -> ShowS
[DescribeSpotFleetRequestHistory] -> ShowS
DescribeSpotFleetRequestHistory -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSpotFleetRequestHistory] -> ShowS
$cshowList :: [DescribeSpotFleetRequestHistory] -> ShowS
show :: DescribeSpotFleetRequestHistory -> String
$cshow :: DescribeSpotFleetRequestHistory -> String
showsPrec :: Int -> DescribeSpotFleetRequestHistory -> ShowS
$cshowsPrec :: Int -> DescribeSpotFleetRequestHistory -> ShowS
Prelude.Show, forall x.
Rep DescribeSpotFleetRequestHistory x
-> DescribeSpotFleetRequestHistory
forall x.
DescribeSpotFleetRequestHistory
-> Rep DescribeSpotFleetRequestHistory x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSpotFleetRequestHistory x
-> DescribeSpotFleetRequestHistory
$cfrom :: forall x.
DescribeSpotFleetRequestHistory
-> Rep DescribeSpotFleetRequestHistory x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSpotFleetRequestHistory' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'dryRun', 'describeSpotFleetRequestHistory_dryRun' - Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
--
-- 'eventType', 'describeSpotFleetRequestHistory_eventType' - The type of events to describe. By default, all events are described.
--
-- 'maxResults', 'describeSpotFleetRequestHistory_maxResults' - The maximum number of results to return in a single call. Specify a
-- value between 1 and 1000. The default value is 1000. To retrieve the
-- remaining results, make another call with the returned @NextToken@
-- value.
--
-- 'nextToken', 'describeSpotFleetRequestHistory_nextToken' - The token for the next set of results.
--
-- 'spotFleetRequestId', 'describeSpotFleetRequestHistory_spotFleetRequestId' - The ID of the Spot Fleet request.
--
-- 'startTime', 'describeSpotFleetRequestHistory_startTime' - The starting date and time for the events, in UTC format (for example,
-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
newDescribeSpotFleetRequestHistory ::
  -- | 'spotFleetRequestId'
  Prelude.Text ->
  -- | 'startTime'
  Prelude.UTCTime ->
  DescribeSpotFleetRequestHistory
newDescribeSpotFleetRequestHistory :: Text -> UTCTime -> DescribeSpotFleetRequestHistory
newDescribeSpotFleetRequestHistory
  Text
pSpotFleetRequestId_
  UTCTime
pStartTime_ =
    DescribeSpotFleetRequestHistory'
      { $sel:dryRun:DescribeSpotFleetRequestHistory' :: Maybe Bool
dryRun =
          forall a. Maybe a
Prelude.Nothing,
        $sel:eventType:DescribeSpotFleetRequestHistory' :: Maybe EventType
eventType = forall a. Maybe a
Prelude.Nothing,
        $sel:maxResults:DescribeSpotFleetRequestHistory' :: Maybe Natural
maxResults = forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:DescribeSpotFleetRequestHistory' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:spotFleetRequestId:DescribeSpotFleetRequestHistory' :: Text
spotFleetRequestId = Text
pSpotFleetRequestId_,
        $sel:startTime:DescribeSpotFleetRequestHistory' :: ISO8601
startTime = forall (a :: Format). Iso' (Time a) UTCTime
Data._Time forall t b. AReview t b -> b -> t
Lens.# UTCTime
pStartTime_
      }

-- | Checks whether you have the required permissions for the action, without
-- actually making the request, and provides an error response. If you have
-- the required permissions, the error response is @DryRunOperation@.
-- Otherwise, it is @UnauthorizedOperation@.
describeSpotFleetRequestHistory_dryRun :: Lens.Lens' DescribeSpotFleetRequestHistory (Prelude.Maybe Prelude.Bool)
describeSpotFleetRequestHistory_dryRun :: Lens' DescribeSpotFleetRequestHistory (Maybe Bool)
describeSpotFleetRequestHistory_dryRun = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistory' {Maybe Bool
dryRun :: Maybe Bool
$sel:dryRun:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Bool
dryRun} -> Maybe Bool
dryRun) (\s :: DescribeSpotFleetRequestHistory
s@DescribeSpotFleetRequestHistory' {} Maybe Bool
a -> DescribeSpotFleetRequestHistory
s {$sel:dryRun:DescribeSpotFleetRequestHistory' :: Maybe Bool
dryRun = Maybe Bool
a} :: DescribeSpotFleetRequestHistory)

-- | The type of events to describe. By default, all events are described.
describeSpotFleetRequestHistory_eventType :: Lens.Lens' DescribeSpotFleetRequestHistory (Prelude.Maybe EventType)
describeSpotFleetRequestHistory_eventType :: Lens' DescribeSpotFleetRequestHistory (Maybe EventType)
describeSpotFleetRequestHistory_eventType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistory' {Maybe EventType
eventType :: Maybe EventType
$sel:eventType:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe EventType
eventType} -> Maybe EventType
eventType) (\s :: DescribeSpotFleetRequestHistory
s@DescribeSpotFleetRequestHistory' {} Maybe EventType
a -> DescribeSpotFleetRequestHistory
s {$sel:eventType:DescribeSpotFleetRequestHistory' :: Maybe EventType
eventType = Maybe EventType
a} :: DescribeSpotFleetRequestHistory)

-- | The maximum number of results to return in a single call. Specify a
-- value between 1 and 1000. The default value is 1000. To retrieve the
-- remaining results, make another call with the returned @NextToken@
-- value.
describeSpotFleetRequestHistory_maxResults :: Lens.Lens' DescribeSpotFleetRequestHistory (Prelude.Maybe Prelude.Natural)
describeSpotFleetRequestHistory_maxResults :: Lens' DescribeSpotFleetRequestHistory (Maybe Natural)
describeSpotFleetRequestHistory_maxResults = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistory' {Maybe Natural
maxResults :: Maybe Natural
$sel:maxResults:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Natural
maxResults} -> Maybe Natural
maxResults) (\s :: DescribeSpotFleetRequestHistory
s@DescribeSpotFleetRequestHistory' {} Maybe Natural
a -> DescribeSpotFleetRequestHistory
s {$sel:maxResults:DescribeSpotFleetRequestHistory' :: Maybe Natural
maxResults = Maybe Natural
a} :: DescribeSpotFleetRequestHistory)

-- | The token for the next set of results.
describeSpotFleetRequestHistory_nextToken :: Lens.Lens' DescribeSpotFleetRequestHistory (Prelude.Maybe Prelude.Text)
describeSpotFleetRequestHistory_nextToken :: Lens' DescribeSpotFleetRequestHistory (Maybe Text)
describeSpotFleetRequestHistory_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistory' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeSpotFleetRequestHistory
s@DescribeSpotFleetRequestHistory' {} Maybe Text
a -> DescribeSpotFleetRequestHistory
s {$sel:nextToken:DescribeSpotFleetRequestHistory' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeSpotFleetRequestHistory)

-- | The ID of the Spot Fleet request.
describeSpotFleetRequestHistory_spotFleetRequestId :: Lens.Lens' DescribeSpotFleetRequestHistory Prelude.Text
describeSpotFleetRequestHistory_spotFleetRequestId :: Lens' DescribeSpotFleetRequestHistory Text
describeSpotFleetRequestHistory_spotFleetRequestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistory' {Text
spotFleetRequestId :: Text
$sel:spotFleetRequestId:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Text
spotFleetRequestId} -> Text
spotFleetRequestId) (\s :: DescribeSpotFleetRequestHistory
s@DescribeSpotFleetRequestHistory' {} Text
a -> DescribeSpotFleetRequestHistory
s {$sel:spotFleetRequestId:DescribeSpotFleetRequestHistory' :: Text
spotFleetRequestId = Text
a} :: DescribeSpotFleetRequestHistory)

-- | The starting date and time for the events, in UTC format (for example,
-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
describeSpotFleetRequestHistory_startTime :: Lens.Lens' DescribeSpotFleetRequestHistory Prelude.UTCTime
describeSpotFleetRequestHistory_startTime :: Lens' DescribeSpotFleetRequestHistory UTCTime
describeSpotFleetRequestHistory_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistory' {ISO8601
startTime :: ISO8601
$sel:startTime:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> ISO8601
startTime} -> ISO8601
startTime) (\s :: DescribeSpotFleetRequestHistory
s@DescribeSpotFleetRequestHistory' {} ISO8601
a -> DescribeSpotFleetRequestHistory
s {$sel:startTime:DescribeSpotFleetRequestHistory' :: ISO8601
startTime = ISO8601
a} :: DescribeSpotFleetRequestHistory) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

instance
  Core.AWSRequest
    DescribeSpotFleetRequestHistory
  where
  type
    AWSResponse DescribeSpotFleetRequestHistory =
      DescribeSpotFleetRequestHistoryResponse
  request :: (Service -> Service)
-> DescribeSpotFleetRequestHistory
-> Request DescribeSpotFleetRequestHistory
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy DescribeSpotFleetRequestHistory
-> ClientResponse ClientBody
-> m (Either
        Error
        (ClientResponse (AWSResponse DescribeSpotFleetRequestHistory)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe [HistoryRecord]
-> Maybe ISO8601
-> Maybe Text
-> Maybe Text
-> Maybe ISO8601
-> Int
-> DescribeSpotFleetRequestHistoryResponse
DescribeSpotFleetRequestHistoryResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x
                            forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"historyRecordSet"
                            forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                            forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"item")
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"lastEvaluatedTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"nextToken")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"spotFleetRequestId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"startTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
      )

instance
  Prelude.Hashable
    DescribeSpotFleetRequestHistory
  where
  hashWithSalt :: Int -> DescribeSpotFleetRequestHistory -> Int
hashWithSalt
    Int
_salt
    DescribeSpotFleetRequestHistory' {Maybe Bool
Maybe Natural
Maybe Text
Maybe EventType
Text
ISO8601
startTime :: ISO8601
spotFleetRequestId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
eventType :: Maybe EventType
dryRun :: Maybe Bool
$sel:startTime:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> ISO8601
$sel:spotFleetRequestId:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Text
$sel:nextToken:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Text
$sel:maxResults:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Natural
$sel:eventType:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe EventType
$sel:dryRun:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Bool
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
dryRun
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe EventType
eventType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Natural
maxResults
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nextToken
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
spotFleetRequestId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ISO8601
startTime

instance
  Prelude.NFData
    DescribeSpotFleetRequestHistory
  where
  rnf :: DescribeSpotFleetRequestHistory -> ()
rnf DescribeSpotFleetRequestHistory' {Maybe Bool
Maybe Natural
Maybe Text
Maybe EventType
Text
ISO8601
startTime :: ISO8601
spotFleetRequestId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
eventType :: Maybe EventType
dryRun :: Maybe Bool
$sel:startTime:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> ISO8601
$sel:spotFleetRequestId:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Text
$sel:nextToken:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Text
$sel:maxResults:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Natural
$sel:eventType:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe EventType
$sel:dryRun:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
dryRun
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe EventType
eventType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Natural
maxResults
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
spotFleetRequestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ISO8601
startTime

instance
  Data.ToHeaders
    DescribeSpotFleetRequestHistory
  where
  toHeaders :: DescribeSpotFleetRequestHistory -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

instance Data.ToPath DescribeSpotFleetRequestHistory where
  toPath :: DescribeSpotFleetRequestHistory -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery DescribeSpotFleetRequestHistory where
  toQuery :: DescribeSpotFleetRequestHistory -> QueryString
toQuery DescribeSpotFleetRequestHistory' {Maybe Bool
Maybe Natural
Maybe Text
Maybe EventType
Text
ISO8601
startTime :: ISO8601
spotFleetRequestId :: Text
nextToken :: Maybe Text
maxResults :: Maybe Natural
eventType :: Maybe EventType
dryRun :: Maybe Bool
$sel:startTime:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> ISO8601
$sel:spotFleetRequestId:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Text
$sel:nextToken:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Text
$sel:maxResults:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Natural
$sel:eventType:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe EventType
$sel:dryRun:DescribeSpotFleetRequestHistory' :: DescribeSpotFleetRequestHistory -> Maybe Bool
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ( ByteString
"DescribeSpotFleetRequestHistory" ::
                      Prelude.ByteString
                  ),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"DryRun" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Bool
dryRun,
        ByteString
"EventType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe EventType
eventType,
        ByteString
"MaxResults" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Natural
maxResults,
        ByteString
"NextToken" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
nextToken,
        ByteString
"SpotFleetRequestId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
spotFleetRequestId,
        ByteString
"StartTime" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ISO8601
startTime
      ]

-- | Contains the output of DescribeSpotFleetRequestHistory.
--
-- /See:/ 'newDescribeSpotFleetRequestHistoryResponse' smart constructor.
data DescribeSpotFleetRequestHistoryResponse = DescribeSpotFleetRequestHistoryResponse'
  { -- | Information about the events in the history of the Spot Fleet request.
    DescribeSpotFleetRequestHistoryResponse -> Maybe [HistoryRecord]
historyRecords :: Prelude.Maybe [HistoryRecord],
    -- | The last date and time for the events, in UTC format (for example,
    -- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). All records up to this time were
    -- retrieved.
    --
    -- If @nextToken@ indicates that there are more results, this value is not
    -- present.
    DescribeSpotFleetRequestHistoryResponse -> Maybe ISO8601
lastEvaluatedTime :: Prelude.Maybe Data.ISO8601,
    -- | The token required to retrieve the next set of results. This value is
    -- @null@ when there are no more results to return.
    DescribeSpotFleetRequestHistoryResponse -> Maybe Text
nextToken :: Prelude.Maybe Prelude.Text,
    -- | The ID of the Spot Fleet request.
    DescribeSpotFleetRequestHistoryResponse -> Maybe Text
spotFleetRequestId :: Prelude.Maybe Prelude.Text,
    -- | The starting date and time for the events, in UTC format (for example,
    -- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
    DescribeSpotFleetRequestHistoryResponse -> Maybe ISO8601
startTime :: Prelude.Maybe Data.ISO8601,
    -- | The response's http status code.
    DescribeSpotFleetRequestHistoryResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (DescribeSpotFleetRequestHistoryResponse
-> DescribeSpotFleetRequestHistoryResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DescribeSpotFleetRequestHistoryResponse
-> DescribeSpotFleetRequestHistoryResponse -> Bool
$c/= :: DescribeSpotFleetRequestHistoryResponse
-> DescribeSpotFleetRequestHistoryResponse -> Bool
== :: DescribeSpotFleetRequestHistoryResponse
-> DescribeSpotFleetRequestHistoryResponse -> Bool
$c== :: DescribeSpotFleetRequestHistoryResponse
-> DescribeSpotFleetRequestHistoryResponse -> Bool
Prelude.Eq, ReadPrec [DescribeSpotFleetRequestHistoryResponse]
ReadPrec DescribeSpotFleetRequestHistoryResponse
Int -> ReadS DescribeSpotFleetRequestHistoryResponse
ReadS [DescribeSpotFleetRequestHistoryResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [DescribeSpotFleetRequestHistoryResponse]
$creadListPrec :: ReadPrec [DescribeSpotFleetRequestHistoryResponse]
readPrec :: ReadPrec DescribeSpotFleetRequestHistoryResponse
$creadPrec :: ReadPrec DescribeSpotFleetRequestHistoryResponse
readList :: ReadS [DescribeSpotFleetRequestHistoryResponse]
$creadList :: ReadS [DescribeSpotFleetRequestHistoryResponse]
readsPrec :: Int -> ReadS DescribeSpotFleetRequestHistoryResponse
$creadsPrec :: Int -> ReadS DescribeSpotFleetRequestHistoryResponse
Prelude.Read, Int -> DescribeSpotFleetRequestHistoryResponse -> ShowS
[DescribeSpotFleetRequestHistoryResponse] -> ShowS
DescribeSpotFleetRequestHistoryResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DescribeSpotFleetRequestHistoryResponse] -> ShowS
$cshowList :: [DescribeSpotFleetRequestHistoryResponse] -> ShowS
show :: DescribeSpotFleetRequestHistoryResponse -> String
$cshow :: DescribeSpotFleetRequestHistoryResponse -> String
showsPrec :: Int -> DescribeSpotFleetRequestHistoryResponse -> ShowS
$cshowsPrec :: Int -> DescribeSpotFleetRequestHistoryResponse -> ShowS
Prelude.Show, forall x.
Rep DescribeSpotFleetRequestHistoryResponse x
-> DescribeSpotFleetRequestHistoryResponse
forall x.
DescribeSpotFleetRequestHistoryResponse
-> Rep DescribeSpotFleetRequestHistoryResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep DescribeSpotFleetRequestHistoryResponse x
-> DescribeSpotFleetRequestHistoryResponse
$cfrom :: forall x.
DescribeSpotFleetRequestHistoryResponse
-> Rep DescribeSpotFleetRequestHistoryResponse x
Prelude.Generic)

-- |
-- Create a value of 'DescribeSpotFleetRequestHistoryResponse' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'historyRecords', 'describeSpotFleetRequestHistoryResponse_historyRecords' - Information about the events in the history of the Spot Fleet request.
--
-- 'lastEvaluatedTime', 'describeSpotFleetRequestHistoryResponse_lastEvaluatedTime' - The last date and time for the events, in UTC format (for example,
-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). All records up to this time were
-- retrieved.
--
-- If @nextToken@ indicates that there are more results, this value is not
-- present.
--
-- 'nextToken', 'describeSpotFleetRequestHistoryResponse_nextToken' - The token required to retrieve the next set of results. This value is
-- @null@ when there are no more results to return.
--
-- 'spotFleetRequestId', 'describeSpotFleetRequestHistoryResponse_spotFleetRequestId' - The ID of the Spot Fleet request.
--
-- 'startTime', 'describeSpotFleetRequestHistoryResponse_startTime' - The starting date and time for the events, in UTC format (for example,
-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
--
-- 'httpStatus', 'describeSpotFleetRequestHistoryResponse_httpStatus' - The response's http status code.
newDescribeSpotFleetRequestHistoryResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  DescribeSpotFleetRequestHistoryResponse
newDescribeSpotFleetRequestHistoryResponse :: Int -> DescribeSpotFleetRequestHistoryResponse
newDescribeSpotFleetRequestHistoryResponse
  Int
pHttpStatus_ =
    DescribeSpotFleetRequestHistoryResponse'
      { $sel:historyRecords:DescribeSpotFleetRequestHistoryResponse' :: Maybe [HistoryRecord]
historyRecords =
          forall a. Maybe a
Prelude.Nothing,
        $sel:lastEvaluatedTime:DescribeSpotFleetRequestHistoryResponse' :: Maybe ISO8601
lastEvaluatedTime =
          forall a. Maybe a
Prelude.Nothing,
        $sel:nextToken:DescribeSpotFleetRequestHistoryResponse' :: Maybe Text
nextToken = forall a. Maybe a
Prelude.Nothing,
        $sel:spotFleetRequestId:DescribeSpotFleetRequestHistoryResponse' :: Maybe Text
spotFleetRequestId =
          forall a. Maybe a
Prelude.Nothing,
        $sel:startTime:DescribeSpotFleetRequestHistoryResponse' :: Maybe ISO8601
startTime = forall a. Maybe a
Prelude.Nothing,
        $sel:httpStatus:DescribeSpotFleetRequestHistoryResponse' :: Int
httpStatus = Int
pHttpStatus_
      }

-- | Information about the events in the history of the Spot Fleet request.
describeSpotFleetRequestHistoryResponse_historyRecords :: Lens.Lens' DescribeSpotFleetRequestHistoryResponse (Prelude.Maybe [HistoryRecord])
describeSpotFleetRequestHistoryResponse_historyRecords :: Lens'
  DescribeSpotFleetRequestHistoryResponse (Maybe [HistoryRecord])
describeSpotFleetRequestHistoryResponse_historyRecords = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistoryResponse' {Maybe [HistoryRecord]
historyRecords :: Maybe [HistoryRecord]
$sel:historyRecords:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe [HistoryRecord]
historyRecords} -> Maybe [HistoryRecord]
historyRecords) (\s :: DescribeSpotFleetRequestHistoryResponse
s@DescribeSpotFleetRequestHistoryResponse' {} Maybe [HistoryRecord]
a -> DescribeSpotFleetRequestHistoryResponse
s {$sel:historyRecords:DescribeSpotFleetRequestHistoryResponse' :: Maybe [HistoryRecord]
historyRecords = Maybe [HistoryRecord]
a} :: DescribeSpotFleetRequestHistoryResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The last date and time for the events, in UTC format (for example,
-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z). All records up to this time were
-- retrieved.
--
-- If @nextToken@ indicates that there are more results, this value is not
-- present.
describeSpotFleetRequestHistoryResponse_lastEvaluatedTime :: Lens.Lens' DescribeSpotFleetRequestHistoryResponse (Prelude.Maybe Prelude.UTCTime)
describeSpotFleetRequestHistoryResponse_lastEvaluatedTime :: Lens' DescribeSpotFleetRequestHistoryResponse (Maybe UTCTime)
describeSpotFleetRequestHistoryResponse_lastEvaluatedTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistoryResponse' {Maybe ISO8601
lastEvaluatedTime :: Maybe ISO8601
$sel:lastEvaluatedTime:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe ISO8601
lastEvaluatedTime} -> Maybe ISO8601
lastEvaluatedTime) (\s :: DescribeSpotFleetRequestHistoryResponse
s@DescribeSpotFleetRequestHistoryResponse' {} Maybe ISO8601
a -> DescribeSpotFleetRequestHistoryResponse
s {$sel:lastEvaluatedTime:DescribeSpotFleetRequestHistoryResponse' :: Maybe ISO8601
lastEvaluatedTime = Maybe ISO8601
a} :: DescribeSpotFleetRequestHistoryResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The token required to retrieve the next set of results. This value is
-- @null@ when there are no more results to return.
describeSpotFleetRequestHistoryResponse_nextToken :: Lens.Lens' DescribeSpotFleetRequestHistoryResponse (Prelude.Maybe Prelude.Text)
describeSpotFleetRequestHistoryResponse_nextToken :: Lens' DescribeSpotFleetRequestHistoryResponse (Maybe Text)
describeSpotFleetRequestHistoryResponse_nextToken = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistoryResponse' {Maybe Text
nextToken :: Maybe Text
$sel:nextToken:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe Text
nextToken} -> Maybe Text
nextToken) (\s :: DescribeSpotFleetRequestHistoryResponse
s@DescribeSpotFleetRequestHistoryResponse' {} Maybe Text
a -> DescribeSpotFleetRequestHistoryResponse
s {$sel:nextToken:DescribeSpotFleetRequestHistoryResponse' :: Maybe Text
nextToken = Maybe Text
a} :: DescribeSpotFleetRequestHistoryResponse)

-- | The ID of the Spot Fleet request.
describeSpotFleetRequestHistoryResponse_spotFleetRequestId :: Lens.Lens' DescribeSpotFleetRequestHistoryResponse (Prelude.Maybe Prelude.Text)
describeSpotFleetRequestHistoryResponse_spotFleetRequestId :: Lens' DescribeSpotFleetRequestHistoryResponse (Maybe Text)
describeSpotFleetRequestHistoryResponse_spotFleetRequestId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistoryResponse' {Maybe Text
spotFleetRequestId :: Maybe Text
$sel:spotFleetRequestId:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe Text
spotFleetRequestId} -> Maybe Text
spotFleetRequestId) (\s :: DescribeSpotFleetRequestHistoryResponse
s@DescribeSpotFleetRequestHistoryResponse' {} Maybe Text
a -> DescribeSpotFleetRequestHistoryResponse
s {$sel:spotFleetRequestId:DescribeSpotFleetRequestHistoryResponse' :: Maybe Text
spotFleetRequestId = Maybe Text
a} :: DescribeSpotFleetRequestHistoryResponse)

-- | The starting date and time for the events, in UTC format (for example,
-- /YYYY/-/MM/-/DD/T/HH/:/MM/:/SS/Z).
describeSpotFleetRequestHistoryResponse_startTime :: Lens.Lens' DescribeSpotFleetRequestHistoryResponse (Prelude.Maybe Prelude.UTCTime)
describeSpotFleetRequestHistoryResponse_startTime :: Lens' DescribeSpotFleetRequestHistoryResponse (Maybe UTCTime)
describeSpotFleetRequestHistoryResponse_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistoryResponse' {Maybe ISO8601
startTime :: Maybe ISO8601
$sel:startTime:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe ISO8601
startTime} -> Maybe ISO8601
startTime) (\s :: DescribeSpotFleetRequestHistoryResponse
s@DescribeSpotFleetRequestHistoryResponse' {} Maybe ISO8601
a -> DescribeSpotFleetRequestHistoryResponse
s {$sel:startTime:DescribeSpotFleetRequestHistoryResponse' :: Maybe ISO8601
startTime = Maybe ISO8601
a} :: DescribeSpotFleetRequestHistoryResponse) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The response's http status code.
describeSpotFleetRequestHistoryResponse_httpStatus :: Lens.Lens' DescribeSpotFleetRequestHistoryResponse Prelude.Int
describeSpotFleetRequestHistoryResponse_httpStatus :: Lens' DescribeSpotFleetRequestHistoryResponse Int
describeSpotFleetRequestHistoryResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DescribeSpotFleetRequestHistoryResponse' {Int
httpStatus :: Int
$sel:httpStatus:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: DescribeSpotFleetRequestHistoryResponse
s@DescribeSpotFleetRequestHistoryResponse' {} Int
a -> DescribeSpotFleetRequestHistoryResponse
s {$sel:httpStatus:DescribeSpotFleetRequestHistoryResponse' :: Int
httpStatus = Int
a} :: DescribeSpotFleetRequestHistoryResponse)

instance
  Prelude.NFData
    DescribeSpotFleetRequestHistoryResponse
  where
  rnf :: DescribeSpotFleetRequestHistoryResponse -> ()
rnf DescribeSpotFleetRequestHistoryResponse' {Int
Maybe [HistoryRecord]
Maybe Text
Maybe ISO8601
httpStatus :: Int
startTime :: Maybe ISO8601
spotFleetRequestId :: Maybe Text
nextToken :: Maybe Text
lastEvaluatedTime :: Maybe ISO8601
historyRecords :: Maybe [HistoryRecord]
$sel:httpStatus:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Int
$sel:startTime:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe ISO8601
$sel:spotFleetRequestId:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe Text
$sel:nextToken:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe Text
$sel:lastEvaluatedTime:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe ISO8601
$sel:historyRecords:DescribeSpotFleetRequestHistoryResponse' :: DescribeSpotFleetRequestHistoryResponse -> Maybe [HistoryRecord]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [HistoryRecord]
historyRecords
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
lastEvaluatedTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nextToken
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
spotFleetRequestId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus