{-# 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.ModifySpotFleetRequest
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Modifies the specified Spot Fleet request.
--
-- You can only modify a Spot Fleet request of type @maintain@.
--
-- While the Spot Fleet request is being modified, it is in the @modifying@
-- state.
--
-- To scale up your Spot Fleet, increase its target capacity. The Spot
-- Fleet launches the additional Spot Instances according to the allocation
-- strategy for the Spot Fleet request. If the allocation strategy is
-- @lowestPrice@, the Spot Fleet launches instances using the Spot Instance
-- pool with the lowest price. If the allocation strategy is @diversified@,
-- the Spot Fleet distributes the instances across the Spot Instance pools.
-- If the allocation strategy is @capacityOptimized@, Spot Fleet launches
-- instances from Spot Instance pools with optimal capacity for the number
-- of instances that are launching.
--
-- To scale down your Spot Fleet, decrease its target capacity. First, the
-- Spot Fleet cancels any open requests that exceed the new target
-- capacity. You can request that the Spot Fleet terminate Spot Instances
-- until the size of the fleet no longer exceeds the new target capacity.
-- If the allocation strategy is @lowestPrice@, the Spot Fleet terminates
-- the instances with the highest price per unit. If the allocation
-- strategy is @capacityOptimized@, the Spot Fleet terminates the instances
-- in the Spot Instance pools that have the least available Spot Instance
-- capacity. If the allocation strategy is @diversified@, the Spot Fleet
-- terminates instances across the Spot Instance pools. Alternatively, you
-- can request that the Spot Fleet keep the fleet at its current size, but
-- not replace any Spot Instances that are interrupted or that you
-- terminate manually.
--
-- If you are finished with your Spot Fleet for now, but will use it again
-- later, you can set the target capacity to 0.
module Amazonka.EC2.ModifySpotFleetRequest
  ( -- * Creating a Request
    ModifySpotFleetRequest (..),
    newModifySpotFleetRequest,

    -- * Request Lenses
    modifySpotFleetRequest_context,
    modifySpotFleetRequest_excessCapacityTerminationPolicy,
    modifySpotFleetRequest_launchTemplateConfigs,
    modifySpotFleetRequest_onDemandTargetCapacity,
    modifySpotFleetRequest_targetCapacity,
    modifySpotFleetRequest_spotFleetRequestId,

    -- * Destructuring the Response
    ModifySpotFleetRequestResponse (..),
    newModifySpotFleetRequestResponse,

    -- * Response Lenses
    modifySpotFleetRequestResponse_return,
    modifySpotFleetRequestResponse_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 ModifySpotFleetRequest.
--
-- /See:/ 'newModifySpotFleetRequest' smart constructor.
data ModifySpotFleetRequest = ModifySpotFleetRequest'
  { -- | Reserved.
    ModifySpotFleetRequest -> Maybe Text
context :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether running Spot Instances should be terminated if the
    -- target capacity of the Spot Fleet request is decreased below the current
    -- size of the Spot Fleet.
    ModifySpotFleetRequest -> Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy :: Prelude.Maybe ExcessCapacityTerminationPolicy,
    -- | The launch template and overrides. You can only use this parameter if
    -- you specified a launch template (@LaunchTemplateConfigs@) in your Spot
    -- Fleet request. If you specified @LaunchSpecifications@ in your Spot
    -- Fleet request, then omit this parameter.
    ModifySpotFleetRequest -> Maybe [LaunchTemplateConfig]
launchTemplateConfigs :: Prelude.Maybe [LaunchTemplateConfig],
    -- | The number of On-Demand Instances in the fleet.
    ModifySpotFleetRequest -> Maybe Int
onDemandTargetCapacity :: Prelude.Maybe Prelude.Int,
    -- | The size of the fleet.
    ModifySpotFleetRequest -> Maybe Int
targetCapacity :: Prelude.Maybe Prelude.Int,
    -- | The ID of the Spot Fleet request.
    ModifySpotFleetRequest -> Text
spotFleetRequestId :: Prelude.Text
  }
  deriving (ModifySpotFleetRequest -> ModifySpotFleetRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifySpotFleetRequest -> ModifySpotFleetRequest -> Bool
$c/= :: ModifySpotFleetRequest -> ModifySpotFleetRequest -> Bool
== :: ModifySpotFleetRequest -> ModifySpotFleetRequest -> Bool
$c== :: ModifySpotFleetRequest -> ModifySpotFleetRequest -> Bool
Prelude.Eq, ReadPrec [ModifySpotFleetRequest]
ReadPrec ModifySpotFleetRequest
Int -> ReadS ModifySpotFleetRequest
ReadS [ModifySpotFleetRequest]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifySpotFleetRequest]
$creadListPrec :: ReadPrec [ModifySpotFleetRequest]
readPrec :: ReadPrec ModifySpotFleetRequest
$creadPrec :: ReadPrec ModifySpotFleetRequest
readList :: ReadS [ModifySpotFleetRequest]
$creadList :: ReadS [ModifySpotFleetRequest]
readsPrec :: Int -> ReadS ModifySpotFleetRequest
$creadsPrec :: Int -> ReadS ModifySpotFleetRequest
Prelude.Read, Int -> ModifySpotFleetRequest -> ShowS
[ModifySpotFleetRequest] -> ShowS
ModifySpotFleetRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifySpotFleetRequest] -> ShowS
$cshowList :: [ModifySpotFleetRequest] -> ShowS
show :: ModifySpotFleetRequest -> String
$cshow :: ModifySpotFleetRequest -> String
showsPrec :: Int -> ModifySpotFleetRequest -> ShowS
$cshowsPrec :: Int -> ModifySpotFleetRequest -> ShowS
Prelude.Show, forall x. Rep ModifySpotFleetRequest x -> ModifySpotFleetRequest
forall x. ModifySpotFleetRequest -> Rep ModifySpotFleetRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ModifySpotFleetRequest x -> ModifySpotFleetRequest
$cfrom :: forall x. ModifySpotFleetRequest -> Rep ModifySpotFleetRequest x
Prelude.Generic)

-- |
-- Create a value of 'ModifySpotFleetRequest' 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:
--
-- 'context', 'modifySpotFleetRequest_context' - Reserved.
--
-- 'excessCapacityTerminationPolicy', 'modifySpotFleetRequest_excessCapacityTerminationPolicy' - Indicates whether running Spot Instances should be terminated if the
-- target capacity of the Spot Fleet request is decreased below the current
-- size of the Spot Fleet.
--
-- 'launchTemplateConfigs', 'modifySpotFleetRequest_launchTemplateConfigs' - The launch template and overrides. You can only use this parameter if
-- you specified a launch template (@LaunchTemplateConfigs@) in your Spot
-- Fleet request. If you specified @LaunchSpecifications@ in your Spot
-- Fleet request, then omit this parameter.
--
-- 'onDemandTargetCapacity', 'modifySpotFleetRequest_onDemandTargetCapacity' - The number of On-Demand Instances in the fleet.
--
-- 'targetCapacity', 'modifySpotFleetRequest_targetCapacity' - The size of the fleet.
--
-- 'spotFleetRequestId', 'modifySpotFleetRequest_spotFleetRequestId' - The ID of the Spot Fleet request.
newModifySpotFleetRequest ::
  -- | 'spotFleetRequestId'
  Prelude.Text ->
  ModifySpotFleetRequest
newModifySpotFleetRequest :: Text -> ModifySpotFleetRequest
newModifySpotFleetRequest Text
pSpotFleetRequestId_ =
  ModifySpotFleetRequest'
    { $sel:context:ModifySpotFleetRequest' :: Maybe Text
context = forall a. Maybe a
Prelude.Nothing,
      $sel:excessCapacityTerminationPolicy:ModifySpotFleetRequest' :: Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy = forall a. Maybe a
Prelude.Nothing,
      $sel:launchTemplateConfigs:ModifySpotFleetRequest' :: Maybe [LaunchTemplateConfig]
launchTemplateConfigs = forall a. Maybe a
Prelude.Nothing,
      $sel:onDemandTargetCapacity:ModifySpotFleetRequest' :: Maybe Int
onDemandTargetCapacity = forall a. Maybe a
Prelude.Nothing,
      $sel:targetCapacity:ModifySpotFleetRequest' :: Maybe Int
targetCapacity = forall a. Maybe a
Prelude.Nothing,
      $sel:spotFleetRequestId:ModifySpotFleetRequest' :: Text
spotFleetRequestId = Text
pSpotFleetRequestId_
    }

-- | Reserved.
modifySpotFleetRequest_context :: Lens.Lens' ModifySpotFleetRequest (Prelude.Maybe Prelude.Text)
modifySpotFleetRequest_context :: Lens' ModifySpotFleetRequest (Maybe Text)
modifySpotFleetRequest_context = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifySpotFleetRequest' {Maybe Text
context :: Maybe Text
$sel:context:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Text
context} -> Maybe Text
context) (\s :: ModifySpotFleetRequest
s@ModifySpotFleetRequest' {} Maybe Text
a -> ModifySpotFleetRequest
s {$sel:context:ModifySpotFleetRequest' :: Maybe Text
context = Maybe Text
a} :: ModifySpotFleetRequest)

-- | Indicates whether running Spot Instances should be terminated if the
-- target capacity of the Spot Fleet request is decreased below the current
-- size of the Spot Fleet.
modifySpotFleetRequest_excessCapacityTerminationPolicy :: Lens.Lens' ModifySpotFleetRequest (Prelude.Maybe ExcessCapacityTerminationPolicy)
modifySpotFleetRequest_excessCapacityTerminationPolicy :: Lens'
  ModifySpotFleetRequest (Maybe ExcessCapacityTerminationPolicy)
modifySpotFleetRequest_excessCapacityTerminationPolicy = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifySpotFleetRequest' {Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy :: Maybe ExcessCapacityTerminationPolicy
$sel:excessCapacityTerminationPolicy:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy} -> Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy) (\s :: ModifySpotFleetRequest
s@ModifySpotFleetRequest' {} Maybe ExcessCapacityTerminationPolicy
a -> ModifySpotFleetRequest
s {$sel:excessCapacityTerminationPolicy:ModifySpotFleetRequest' :: Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy = Maybe ExcessCapacityTerminationPolicy
a} :: ModifySpotFleetRequest)

-- | The launch template and overrides. You can only use this parameter if
-- you specified a launch template (@LaunchTemplateConfigs@) in your Spot
-- Fleet request. If you specified @LaunchSpecifications@ in your Spot
-- Fleet request, then omit this parameter.
modifySpotFleetRequest_launchTemplateConfigs :: Lens.Lens' ModifySpotFleetRequest (Prelude.Maybe [LaunchTemplateConfig])
modifySpotFleetRequest_launchTemplateConfigs :: Lens' ModifySpotFleetRequest (Maybe [LaunchTemplateConfig])
modifySpotFleetRequest_launchTemplateConfigs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifySpotFleetRequest' {Maybe [LaunchTemplateConfig]
launchTemplateConfigs :: Maybe [LaunchTemplateConfig]
$sel:launchTemplateConfigs:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe [LaunchTemplateConfig]
launchTemplateConfigs} -> Maybe [LaunchTemplateConfig]
launchTemplateConfigs) (\s :: ModifySpotFleetRequest
s@ModifySpotFleetRequest' {} Maybe [LaunchTemplateConfig]
a -> ModifySpotFleetRequest
s {$sel:launchTemplateConfigs:ModifySpotFleetRequest' :: Maybe [LaunchTemplateConfig]
launchTemplateConfigs = Maybe [LaunchTemplateConfig]
a} :: ModifySpotFleetRequest) 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 number of On-Demand Instances in the fleet.
modifySpotFleetRequest_onDemandTargetCapacity :: Lens.Lens' ModifySpotFleetRequest (Prelude.Maybe Prelude.Int)
modifySpotFleetRequest_onDemandTargetCapacity :: Lens' ModifySpotFleetRequest (Maybe Int)
modifySpotFleetRequest_onDemandTargetCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifySpotFleetRequest' {Maybe Int
onDemandTargetCapacity :: Maybe Int
$sel:onDemandTargetCapacity:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Int
onDemandTargetCapacity} -> Maybe Int
onDemandTargetCapacity) (\s :: ModifySpotFleetRequest
s@ModifySpotFleetRequest' {} Maybe Int
a -> ModifySpotFleetRequest
s {$sel:onDemandTargetCapacity:ModifySpotFleetRequest' :: Maybe Int
onDemandTargetCapacity = Maybe Int
a} :: ModifySpotFleetRequest)

-- | The size of the fleet.
modifySpotFleetRequest_targetCapacity :: Lens.Lens' ModifySpotFleetRequest (Prelude.Maybe Prelude.Int)
modifySpotFleetRequest_targetCapacity :: Lens' ModifySpotFleetRequest (Maybe Int)
modifySpotFleetRequest_targetCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifySpotFleetRequest' {Maybe Int
targetCapacity :: Maybe Int
$sel:targetCapacity:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Int
targetCapacity} -> Maybe Int
targetCapacity) (\s :: ModifySpotFleetRequest
s@ModifySpotFleetRequest' {} Maybe Int
a -> ModifySpotFleetRequest
s {$sel:targetCapacity:ModifySpotFleetRequest' :: Maybe Int
targetCapacity = Maybe Int
a} :: ModifySpotFleetRequest)

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

instance Core.AWSRequest ModifySpotFleetRequest where
  type
    AWSResponse ModifySpotFleetRequest =
      ModifySpotFleetRequestResponse
  request :: (Service -> Service)
-> ModifySpotFleetRequest -> Request ModifySpotFleetRequest
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 ModifySpotFleetRequest
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse ModifySpotFleetRequest)))
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 Bool -> Int -> ModifySpotFleetRequestResponse
ModifySpotFleetRequestResponse'
            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
"return")
            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 ModifySpotFleetRequest where
  hashWithSalt :: Int -> ModifySpotFleetRequest -> Int
hashWithSalt Int
_salt ModifySpotFleetRequest' {Maybe Int
Maybe [LaunchTemplateConfig]
Maybe Text
Maybe ExcessCapacityTerminationPolicy
Text
spotFleetRequestId :: Text
targetCapacity :: Maybe Int
onDemandTargetCapacity :: Maybe Int
launchTemplateConfigs :: Maybe [LaunchTemplateConfig]
excessCapacityTerminationPolicy :: Maybe ExcessCapacityTerminationPolicy
context :: Maybe Text
$sel:spotFleetRequestId:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Text
$sel:targetCapacity:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Int
$sel:onDemandTargetCapacity:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Int
$sel:launchTemplateConfigs:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe [LaunchTemplateConfig]
$sel:excessCapacityTerminationPolicy:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe ExcessCapacityTerminationPolicy
$sel:context:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
context
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [LaunchTemplateConfig]
launchTemplateConfigs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
onDemandTargetCapacity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
targetCapacity
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
spotFleetRequestId

instance Prelude.NFData ModifySpotFleetRequest where
  rnf :: ModifySpotFleetRequest -> ()
rnf ModifySpotFleetRequest' {Maybe Int
Maybe [LaunchTemplateConfig]
Maybe Text
Maybe ExcessCapacityTerminationPolicy
Text
spotFleetRequestId :: Text
targetCapacity :: Maybe Int
onDemandTargetCapacity :: Maybe Int
launchTemplateConfigs :: Maybe [LaunchTemplateConfig]
excessCapacityTerminationPolicy :: Maybe ExcessCapacityTerminationPolicy
context :: Maybe Text
$sel:spotFleetRequestId:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Text
$sel:targetCapacity:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Int
$sel:onDemandTargetCapacity:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Int
$sel:launchTemplateConfigs:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe [LaunchTemplateConfig]
$sel:excessCapacityTerminationPolicy:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe ExcessCapacityTerminationPolicy
$sel:context:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
context
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [LaunchTemplateConfig]
launchTemplateConfigs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
onDemandTargetCapacity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
targetCapacity
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
spotFleetRequestId

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

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

instance Data.ToQuery ModifySpotFleetRequest where
  toQuery :: ModifySpotFleetRequest -> QueryString
toQuery ModifySpotFleetRequest' {Maybe Int
Maybe [LaunchTemplateConfig]
Maybe Text
Maybe ExcessCapacityTerminationPolicy
Text
spotFleetRequestId :: Text
targetCapacity :: Maybe Int
onDemandTargetCapacity :: Maybe Int
launchTemplateConfigs :: Maybe [LaunchTemplateConfig]
excessCapacityTerminationPolicy :: Maybe ExcessCapacityTerminationPolicy
context :: Maybe Text
$sel:spotFleetRequestId:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Text
$sel:targetCapacity:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Int
$sel:onDemandTargetCapacity:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Int
$sel:launchTemplateConfigs:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe [LaunchTemplateConfig]
$sel:excessCapacityTerminationPolicy:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe ExcessCapacityTerminationPolicy
$sel:context:ModifySpotFleetRequest' :: ModifySpotFleetRequest -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"ModifySpotFleetRequest" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"Context" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
context,
        ByteString
"ExcessCapacityTerminationPolicy"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe ExcessCapacityTerminationPolicy
excessCapacityTerminationPolicy,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"LaunchTemplateConfig"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [LaunchTemplateConfig]
launchTemplateConfigs
          ),
        ByteString
"OnDemandTargetCapacity"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
onDemandTargetCapacity,
        ByteString
"TargetCapacity" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Int
targetCapacity,
        ByteString
"SpotFleetRequestId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
spotFleetRequestId
      ]

-- | Contains the output of ModifySpotFleetRequest.
--
-- /See:/ 'newModifySpotFleetRequestResponse' smart constructor.
data ModifySpotFleetRequestResponse = ModifySpotFleetRequestResponse'
  { -- | If the request succeeds, the response returns @true@. If the request
    -- fails, no response is returned, and instead an error message is
    -- returned.
    ModifySpotFleetRequestResponse -> Maybe Bool
return' :: Prelude.Maybe Prelude.Bool,
    -- | The response's http status code.
    ModifySpotFleetRequestResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (ModifySpotFleetRequestResponse
-> ModifySpotFleetRequestResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModifySpotFleetRequestResponse
-> ModifySpotFleetRequestResponse -> Bool
$c/= :: ModifySpotFleetRequestResponse
-> ModifySpotFleetRequestResponse -> Bool
== :: ModifySpotFleetRequestResponse
-> ModifySpotFleetRequestResponse -> Bool
$c== :: ModifySpotFleetRequestResponse
-> ModifySpotFleetRequestResponse -> Bool
Prelude.Eq, ReadPrec [ModifySpotFleetRequestResponse]
ReadPrec ModifySpotFleetRequestResponse
Int -> ReadS ModifySpotFleetRequestResponse
ReadS [ModifySpotFleetRequestResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModifySpotFleetRequestResponse]
$creadListPrec :: ReadPrec [ModifySpotFleetRequestResponse]
readPrec :: ReadPrec ModifySpotFleetRequestResponse
$creadPrec :: ReadPrec ModifySpotFleetRequestResponse
readList :: ReadS [ModifySpotFleetRequestResponse]
$creadList :: ReadS [ModifySpotFleetRequestResponse]
readsPrec :: Int -> ReadS ModifySpotFleetRequestResponse
$creadsPrec :: Int -> ReadS ModifySpotFleetRequestResponse
Prelude.Read, Int -> ModifySpotFleetRequestResponse -> ShowS
[ModifySpotFleetRequestResponse] -> ShowS
ModifySpotFleetRequestResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModifySpotFleetRequestResponse] -> ShowS
$cshowList :: [ModifySpotFleetRequestResponse] -> ShowS
show :: ModifySpotFleetRequestResponse -> String
$cshow :: ModifySpotFleetRequestResponse -> String
showsPrec :: Int -> ModifySpotFleetRequestResponse -> ShowS
$cshowsPrec :: Int -> ModifySpotFleetRequestResponse -> ShowS
Prelude.Show, forall x.
Rep ModifySpotFleetRequestResponse x
-> ModifySpotFleetRequestResponse
forall x.
ModifySpotFleetRequestResponse
-> Rep ModifySpotFleetRequestResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModifySpotFleetRequestResponse x
-> ModifySpotFleetRequestResponse
$cfrom :: forall x.
ModifySpotFleetRequestResponse
-> Rep ModifySpotFleetRequestResponse x
Prelude.Generic)

-- |
-- Create a value of 'ModifySpotFleetRequestResponse' 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:
--
-- 'return'', 'modifySpotFleetRequestResponse_return' - If the request succeeds, the response returns @true@. If the request
-- fails, no response is returned, and instead an error message is
-- returned.
--
-- 'httpStatus', 'modifySpotFleetRequestResponse_httpStatus' - The response's http status code.
newModifySpotFleetRequestResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  ModifySpotFleetRequestResponse
newModifySpotFleetRequestResponse :: Int -> ModifySpotFleetRequestResponse
newModifySpotFleetRequestResponse Int
pHttpStatus_ =
  ModifySpotFleetRequestResponse'
    { $sel:return':ModifySpotFleetRequestResponse' :: Maybe Bool
return' =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:ModifySpotFleetRequestResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | If the request succeeds, the response returns @true@. If the request
-- fails, no response is returned, and instead an error message is
-- returned.
modifySpotFleetRequestResponse_return :: Lens.Lens' ModifySpotFleetRequestResponse (Prelude.Maybe Prelude.Bool)
modifySpotFleetRequestResponse_return :: Lens' ModifySpotFleetRequestResponse (Maybe Bool)
modifySpotFleetRequestResponse_return = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModifySpotFleetRequestResponse' {Maybe Bool
return' :: Maybe Bool
$sel:return':ModifySpotFleetRequestResponse' :: ModifySpotFleetRequestResponse -> Maybe Bool
return'} -> Maybe Bool
return') (\s :: ModifySpotFleetRequestResponse
s@ModifySpotFleetRequestResponse' {} Maybe Bool
a -> ModifySpotFleetRequestResponse
s {$sel:return':ModifySpotFleetRequestResponse' :: Maybe Bool
return' = Maybe Bool
a} :: ModifySpotFleetRequestResponse)

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

instance
  Prelude.NFData
    ModifySpotFleetRequestResponse
  where
  rnf :: ModifySpotFleetRequestResponse -> ()
rnf ModifySpotFleetRequestResponse' {Int
Maybe Bool
httpStatus :: Int
return' :: Maybe Bool
$sel:httpStatus:ModifySpotFleetRequestResponse' :: ModifySpotFleetRequestResponse -> Int
$sel:return':ModifySpotFleetRequestResponse' :: ModifySpotFleetRequestResponse -> Maybe Bool
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
return'
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus