{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# 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.Types.FleetLaunchTemplateOverridesRequest
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.EC2.Types.FleetLaunchTemplateOverridesRequest where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.InstanceRequirementsRequest
import Amazonka.EC2.Types.InstanceType
import Amazonka.EC2.Types.Placement
import qualified Amazonka.Prelude as Prelude

-- | Describes overrides for a launch template.
--
-- /See:/ 'newFleetLaunchTemplateOverridesRequest' smart constructor.
data FleetLaunchTemplateOverridesRequest = FleetLaunchTemplateOverridesRequest'
  { -- | The Availability Zone in which to launch the instances.
    FleetLaunchTemplateOverridesRequest -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The ID of the AMI. An AMI is required to launch an instance. The AMI ID
    -- must be specified here or in the launch template.
    FleetLaunchTemplateOverridesRequest -> Maybe Text
imageId :: Prelude.Maybe Prelude.Text,
    -- | The attributes for the instance types. When you specify instance
    -- attributes, Amazon EC2 will identify instance types with those
    -- attributes.
    --
    -- If you specify @InstanceRequirements@, you can\'t specify
    -- @InstanceType@.
    FleetLaunchTemplateOverridesRequest
-> Maybe InstanceRequirementsRequest
instanceRequirements :: Prelude.Maybe InstanceRequirementsRequest,
    -- | The instance type.
    --
    -- If you specify @InstanceType@, you can\'t specify
    -- @InstanceRequirements@.
    FleetLaunchTemplateOverridesRequest -> Maybe InstanceType
instanceType :: Prelude.Maybe InstanceType,
    -- | The maximum price per unit hour that you are willing to pay for a Spot
    -- Instance. We do not recommend using this parameter because it can lead
    -- to increased interruptions. If you do not specify this parameter, you
    -- will pay the current Spot price.
    --
    -- If you specify a maximum price, your instances will be interrupted more
    -- frequently than if you do not specify this parameter.
    FleetLaunchTemplateOverridesRequest -> Maybe Text
maxPrice :: Prelude.Maybe Prelude.Text,
    -- | The location where the instance launched, if applicable.
    FleetLaunchTemplateOverridesRequest -> Maybe Placement
placement :: Prelude.Maybe Placement,
    -- | The priority for the launch template override. The highest priority is
    -- launched first.
    --
    -- If the On-Demand @AllocationStrategy@ is set to @prioritized@, EC2 Fleet
    -- uses priority to determine which launch template override to use first
    -- in fulfilling On-Demand capacity.
    --
    -- If the Spot @AllocationStrategy@ is set to
    -- @capacity-optimized-prioritized@, EC2 Fleet uses priority on a
    -- best-effort basis to determine which launch template override to use in
    -- fulfilling Spot capacity, but optimizes for capacity first.
    --
    -- Valid values are whole numbers starting at @0@. The lower the number,
    -- the higher the priority. If no number is set, the launch template
    -- override has the lowest priority. You can set the same priority for
    -- different launch template overrides.
    FleetLaunchTemplateOverridesRequest -> Maybe Double
priority :: Prelude.Maybe Prelude.Double,
    -- | The IDs of the subnets in which to launch the instances. Separate
    -- multiple subnet IDs using commas (for example,
    -- @subnet-1234abcdeexample1, subnet-0987cdef6example2@). A request of type
    -- @instant@ can have only one subnet ID.
    FleetLaunchTemplateOverridesRequest -> Maybe Text
subnetId :: Prelude.Maybe Prelude.Text,
    -- | The number of units provided by the specified instance type.
    FleetLaunchTemplateOverridesRequest -> Maybe Double
weightedCapacity :: Prelude.Maybe Prelude.Double
  }
  deriving (FleetLaunchTemplateOverridesRequest
-> FleetLaunchTemplateOverridesRequest -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FleetLaunchTemplateOverridesRequest
-> FleetLaunchTemplateOverridesRequest -> Bool
$c/= :: FleetLaunchTemplateOverridesRequest
-> FleetLaunchTemplateOverridesRequest -> Bool
== :: FleetLaunchTemplateOverridesRequest
-> FleetLaunchTemplateOverridesRequest -> Bool
$c== :: FleetLaunchTemplateOverridesRequest
-> FleetLaunchTemplateOverridesRequest -> Bool
Prelude.Eq, ReadPrec [FleetLaunchTemplateOverridesRequest]
ReadPrec FleetLaunchTemplateOverridesRequest
Int -> ReadS FleetLaunchTemplateOverridesRequest
ReadS [FleetLaunchTemplateOverridesRequest]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [FleetLaunchTemplateOverridesRequest]
$creadListPrec :: ReadPrec [FleetLaunchTemplateOverridesRequest]
readPrec :: ReadPrec FleetLaunchTemplateOverridesRequest
$creadPrec :: ReadPrec FleetLaunchTemplateOverridesRequest
readList :: ReadS [FleetLaunchTemplateOverridesRequest]
$creadList :: ReadS [FleetLaunchTemplateOverridesRequest]
readsPrec :: Int -> ReadS FleetLaunchTemplateOverridesRequest
$creadsPrec :: Int -> ReadS FleetLaunchTemplateOverridesRequest
Prelude.Read, Int -> FleetLaunchTemplateOverridesRequest -> ShowS
[FleetLaunchTemplateOverridesRequest] -> ShowS
FleetLaunchTemplateOverridesRequest -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FleetLaunchTemplateOverridesRequest] -> ShowS
$cshowList :: [FleetLaunchTemplateOverridesRequest] -> ShowS
show :: FleetLaunchTemplateOverridesRequest -> String
$cshow :: FleetLaunchTemplateOverridesRequest -> String
showsPrec :: Int -> FleetLaunchTemplateOverridesRequest -> ShowS
$cshowsPrec :: Int -> FleetLaunchTemplateOverridesRequest -> ShowS
Prelude.Show, forall x.
Rep FleetLaunchTemplateOverridesRequest x
-> FleetLaunchTemplateOverridesRequest
forall x.
FleetLaunchTemplateOverridesRequest
-> Rep FleetLaunchTemplateOverridesRequest x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep FleetLaunchTemplateOverridesRequest x
-> FleetLaunchTemplateOverridesRequest
$cfrom :: forall x.
FleetLaunchTemplateOverridesRequest
-> Rep FleetLaunchTemplateOverridesRequest x
Prelude.Generic)

-- |
-- Create a value of 'FleetLaunchTemplateOverridesRequest' 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:
--
-- 'availabilityZone', 'fleetLaunchTemplateOverridesRequest_availabilityZone' - The Availability Zone in which to launch the instances.
--
-- 'imageId', 'fleetLaunchTemplateOverridesRequest_imageId' - The ID of the AMI. An AMI is required to launch an instance. The AMI ID
-- must be specified here or in the launch template.
--
-- 'instanceRequirements', 'fleetLaunchTemplateOverridesRequest_instanceRequirements' - The attributes for the instance types. When you specify instance
-- attributes, Amazon EC2 will identify instance types with those
-- attributes.
--
-- If you specify @InstanceRequirements@, you can\'t specify
-- @InstanceType@.
--
-- 'instanceType', 'fleetLaunchTemplateOverridesRequest_instanceType' - The instance type.
--
-- If you specify @InstanceType@, you can\'t specify
-- @InstanceRequirements@.
--
-- 'maxPrice', 'fleetLaunchTemplateOverridesRequest_maxPrice' - The maximum price per unit hour that you are willing to pay for a Spot
-- Instance. We do not recommend using this parameter because it can lead
-- to increased interruptions. If you do not specify this parameter, you
-- will pay the current Spot price.
--
-- If you specify a maximum price, your instances will be interrupted more
-- frequently than if you do not specify this parameter.
--
-- 'placement', 'fleetLaunchTemplateOverridesRequest_placement' - The location where the instance launched, if applicable.
--
-- 'priority', 'fleetLaunchTemplateOverridesRequest_priority' - The priority for the launch template override. The highest priority is
-- launched first.
--
-- If the On-Demand @AllocationStrategy@ is set to @prioritized@, EC2 Fleet
-- uses priority to determine which launch template override to use first
-- in fulfilling On-Demand capacity.
--
-- If the Spot @AllocationStrategy@ is set to
-- @capacity-optimized-prioritized@, EC2 Fleet uses priority on a
-- best-effort basis to determine which launch template override to use in
-- fulfilling Spot capacity, but optimizes for capacity first.
--
-- Valid values are whole numbers starting at @0@. The lower the number,
-- the higher the priority. If no number is set, the launch template
-- override has the lowest priority. You can set the same priority for
-- different launch template overrides.
--
-- 'subnetId', 'fleetLaunchTemplateOverridesRequest_subnetId' - The IDs of the subnets in which to launch the instances. Separate
-- multiple subnet IDs using commas (for example,
-- @subnet-1234abcdeexample1, subnet-0987cdef6example2@). A request of type
-- @instant@ can have only one subnet ID.
--
-- 'weightedCapacity', 'fleetLaunchTemplateOverridesRequest_weightedCapacity' - The number of units provided by the specified instance type.
newFleetLaunchTemplateOverridesRequest ::
  FleetLaunchTemplateOverridesRequest
newFleetLaunchTemplateOverridesRequest :: FleetLaunchTemplateOverridesRequest
newFleetLaunchTemplateOverridesRequest =
  FleetLaunchTemplateOverridesRequest'
    { $sel:availabilityZone:FleetLaunchTemplateOverridesRequest' :: Maybe Text
availabilityZone =
        forall a. Maybe a
Prelude.Nothing,
      $sel:imageId:FleetLaunchTemplateOverridesRequest' :: Maybe Text
imageId = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceRequirements:FleetLaunchTemplateOverridesRequest' :: Maybe InstanceRequirementsRequest
instanceRequirements = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:FleetLaunchTemplateOverridesRequest' :: Maybe InstanceType
instanceType = forall a. Maybe a
Prelude.Nothing,
      $sel:maxPrice:FleetLaunchTemplateOverridesRequest' :: Maybe Text
maxPrice = forall a. Maybe a
Prelude.Nothing,
      $sel:placement:FleetLaunchTemplateOverridesRequest' :: Maybe Placement
placement = forall a. Maybe a
Prelude.Nothing,
      $sel:priority:FleetLaunchTemplateOverridesRequest' :: Maybe Double
priority = forall a. Maybe a
Prelude.Nothing,
      $sel:subnetId:FleetLaunchTemplateOverridesRequest' :: Maybe Text
subnetId = forall a. Maybe a
Prelude.Nothing,
      $sel:weightedCapacity:FleetLaunchTemplateOverridesRequest' :: Maybe Double
weightedCapacity = forall a. Maybe a
Prelude.Nothing
    }

-- | The Availability Zone in which to launch the instances.
fleetLaunchTemplateOverridesRequest_availabilityZone :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe Prelude.Text)
fleetLaunchTemplateOverridesRequest_availabilityZone :: Lens' FleetLaunchTemplateOverridesRequest (Maybe Text)
fleetLaunchTemplateOverridesRequest_availabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe Text
a -> FleetLaunchTemplateOverridesRequest
s {$sel:availabilityZone:FleetLaunchTemplateOverridesRequest' :: Maybe Text
availabilityZone = Maybe Text
a} :: FleetLaunchTemplateOverridesRequest)

-- | The ID of the AMI. An AMI is required to launch an instance. The AMI ID
-- must be specified here or in the launch template.
fleetLaunchTemplateOverridesRequest_imageId :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe Prelude.Text)
fleetLaunchTemplateOverridesRequest_imageId :: Lens' FleetLaunchTemplateOverridesRequest (Maybe Text)
fleetLaunchTemplateOverridesRequest_imageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe Text
imageId :: Maybe Text
$sel:imageId:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
imageId} -> Maybe Text
imageId) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe Text
a -> FleetLaunchTemplateOverridesRequest
s {$sel:imageId:FleetLaunchTemplateOverridesRequest' :: Maybe Text
imageId = Maybe Text
a} :: FleetLaunchTemplateOverridesRequest)

-- | The attributes for the instance types. When you specify instance
-- attributes, Amazon EC2 will identify instance types with those
-- attributes.
--
-- If you specify @InstanceRequirements@, you can\'t specify
-- @InstanceType@.
fleetLaunchTemplateOverridesRequest_instanceRequirements :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe InstanceRequirementsRequest)
fleetLaunchTemplateOverridesRequest_instanceRequirements :: Lens'
  FleetLaunchTemplateOverridesRequest
  (Maybe InstanceRequirementsRequest)
fleetLaunchTemplateOverridesRequest_instanceRequirements = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe InstanceRequirementsRequest
instanceRequirements :: Maybe InstanceRequirementsRequest
$sel:instanceRequirements:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest
-> Maybe InstanceRequirementsRequest
instanceRequirements} -> Maybe InstanceRequirementsRequest
instanceRequirements) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe InstanceRequirementsRequest
a -> FleetLaunchTemplateOverridesRequest
s {$sel:instanceRequirements:FleetLaunchTemplateOverridesRequest' :: Maybe InstanceRequirementsRequest
instanceRequirements = Maybe InstanceRequirementsRequest
a} :: FleetLaunchTemplateOverridesRequest)

-- | The instance type.
--
-- If you specify @InstanceType@, you can\'t specify
-- @InstanceRequirements@.
fleetLaunchTemplateOverridesRequest_instanceType :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe InstanceType)
fleetLaunchTemplateOverridesRequest_instanceType :: Lens' FleetLaunchTemplateOverridesRequest (Maybe InstanceType)
fleetLaunchTemplateOverridesRequest_instanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe InstanceType
instanceType :: Maybe InstanceType
$sel:instanceType:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe InstanceType
instanceType} -> Maybe InstanceType
instanceType) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe InstanceType
a -> FleetLaunchTemplateOverridesRequest
s {$sel:instanceType:FleetLaunchTemplateOverridesRequest' :: Maybe InstanceType
instanceType = Maybe InstanceType
a} :: FleetLaunchTemplateOverridesRequest)

-- | The maximum price per unit hour that you are willing to pay for a Spot
-- Instance. We do not recommend using this parameter because it can lead
-- to increased interruptions. If you do not specify this parameter, you
-- will pay the current Spot price.
--
-- If you specify a maximum price, your instances will be interrupted more
-- frequently than if you do not specify this parameter.
fleetLaunchTemplateOverridesRequest_maxPrice :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe Prelude.Text)
fleetLaunchTemplateOverridesRequest_maxPrice :: Lens' FleetLaunchTemplateOverridesRequest (Maybe Text)
fleetLaunchTemplateOverridesRequest_maxPrice = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe Text
maxPrice :: Maybe Text
$sel:maxPrice:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
maxPrice} -> Maybe Text
maxPrice) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe Text
a -> FleetLaunchTemplateOverridesRequest
s {$sel:maxPrice:FleetLaunchTemplateOverridesRequest' :: Maybe Text
maxPrice = Maybe Text
a} :: FleetLaunchTemplateOverridesRequest)

-- | The location where the instance launched, if applicable.
fleetLaunchTemplateOverridesRequest_placement :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe Placement)
fleetLaunchTemplateOverridesRequest_placement :: Lens' FleetLaunchTemplateOverridesRequest (Maybe Placement)
fleetLaunchTemplateOverridesRequest_placement = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe Placement
placement :: Maybe Placement
$sel:placement:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Placement
placement} -> Maybe Placement
placement) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe Placement
a -> FleetLaunchTemplateOverridesRequest
s {$sel:placement:FleetLaunchTemplateOverridesRequest' :: Maybe Placement
placement = Maybe Placement
a} :: FleetLaunchTemplateOverridesRequest)

-- | The priority for the launch template override. The highest priority is
-- launched first.
--
-- If the On-Demand @AllocationStrategy@ is set to @prioritized@, EC2 Fleet
-- uses priority to determine which launch template override to use first
-- in fulfilling On-Demand capacity.
--
-- If the Spot @AllocationStrategy@ is set to
-- @capacity-optimized-prioritized@, EC2 Fleet uses priority on a
-- best-effort basis to determine which launch template override to use in
-- fulfilling Spot capacity, but optimizes for capacity first.
--
-- Valid values are whole numbers starting at @0@. The lower the number,
-- the higher the priority. If no number is set, the launch template
-- override has the lowest priority. You can set the same priority for
-- different launch template overrides.
fleetLaunchTemplateOverridesRequest_priority :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe Prelude.Double)
fleetLaunchTemplateOverridesRequest_priority :: Lens' FleetLaunchTemplateOverridesRequest (Maybe Double)
fleetLaunchTemplateOverridesRequest_priority = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe Double
priority :: Maybe Double
$sel:priority:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Double
priority} -> Maybe Double
priority) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe Double
a -> FleetLaunchTemplateOverridesRequest
s {$sel:priority:FleetLaunchTemplateOverridesRequest' :: Maybe Double
priority = Maybe Double
a} :: FleetLaunchTemplateOverridesRequest)

-- | The IDs of the subnets in which to launch the instances. Separate
-- multiple subnet IDs using commas (for example,
-- @subnet-1234abcdeexample1, subnet-0987cdef6example2@). A request of type
-- @instant@ can have only one subnet ID.
fleetLaunchTemplateOverridesRequest_subnetId :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe Prelude.Text)
fleetLaunchTemplateOverridesRequest_subnetId :: Lens' FleetLaunchTemplateOverridesRequest (Maybe Text)
fleetLaunchTemplateOverridesRequest_subnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe Text
subnetId :: Maybe Text
$sel:subnetId:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
subnetId} -> Maybe Text
subnetId) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe Text
a -> FleetLaunchTemplateOverridesRequest
s {$sel:subnetId:FleetLaunchTemplateOverridesRequest' :: Maybe Text
subnetId = Maybe Text
a} :: FleetLaunchTemplateOverridesRequest)

-- | The number of units provided by the specified instance type.
fleetLaunchTemplateOverridesRequest_weightedCapacity :: Lens.Lens' FleetLaunchTemplateOverridesRequest (Prelude.Maybe Prelude.Double)
fleetLaunchTemplateOverridesRequest_weightedCapacity :: Lens' FleetLaunchTemplateOverridesRequest (Maybe Double)
fleetLaunchTemplateOverridesRequest_weightedCapacity = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverridesRequest' {Maybe Double
weightedCapacity :: Maybe Double
$sel:weightedCapacity:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Double
weightedCapacity} -> Maybe Double
weightedCapacity) (\s :: FleetLaunchTemplateOverridesRequest
s@FleetLaunchTemplateOverridesRequest' {} Maybe Double
a -> FleetLaunchTemplateOverridesRequest
s {$sel:weightedCapacity:FleetLaunchTemplateOverridesRequest' :: Maybe Double
weightedCapacity = Maybe Double
a} :: FleetLaunchTemplateOverridesRequest)

instance
  Prelude.Hashable
    FleetLaunchTemplateOverridesRequest
  where
  hashWithSalt :: Int -> FleetLaunchTemplateOverridesRequest -> Int
hashWithSalt
    Int
_salt
    FleetLaunchTemplateOverridesRequest' {Maybe Double
Maybe Text
Maybe InstanceType
Maybe Placement
Maybe InstanceRequirementsRequest
weightedCapacity :: Maybe Double
subnetId :: Maybe Text
priority :: Maybe Double
placement :: Maybe Placement
maxPrice :: Maybe Text
instanceType :: Maybe InstanceType
instanceRequirements :: Maybe InstanceRequirementsRequest
imageId :: Maybe Text
availabilityZone :: Maybe Text
$sel:weightedCapacity:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Double
$sel:subnetId:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:priority:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Double
$sel:placement:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Placement
$sel:maxPrice:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:instanceType:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe InstanceType
$sel:instanceRequirements:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest
-> Maybe InstanceRequirementsRequest
$sel:imageId:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:availabilityZone:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
imageId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceRequirementsRequest
instanceRequirements
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InstanceType
instanceType
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
maxPrice
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Placement
placement
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
priority
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
subnetId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
weightedCapacity

instance
  Prelude.NFData
    FleetLaunchTemplateOverridesRequest
  where
  rnf :: FleetLaunchTemplateOverridesRequest -> ()
rnf FleetLaunchTemplateOverridesRequest' {Maybe Double
Maybe Text
Maybe InstanceType
Maybe Placement
Maybe InstanceRequirementsRequest
weightedCapacity :: Maybe Double
subnetId :: Maybe Text
priority :: Maybe Double
placement :: Maybe Placement
maxPrice :: Maybe Text
instanceType :: Maybe InstanceType
instanceRequirements :: Maybe InstanceRequirementsRequest
imageId :: Maybe Text
availabilityZone :: Maybe Text
$sel:weightedCapacity:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Double
$sel:subnetId:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:priority:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Double
$sel:placement:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Placement
$sel:maxPrice:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:instanceType:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe InstanceType
$sel:instanceRequirements:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest
-> Maybe InstanceRequirementsRequest
$sel:imageId:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:availabilityZone:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
imageId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceRequirementsRequest
instanceRequirements
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InstanceType
instanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
maxPrice
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Placement
placement
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
priority
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
subnetId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
weightedCapacity

instance
  Data.ToQuery
    FleetLaunchTemplateOverridesRequest
  where
  toQuery :: FleetLaunchTemplateOverridesRequest -> QueryString
toQuery FleetLaunchTemplateOverridesRequest' {Maybe Double
Maybe Text
Maybe InstanceType
Maybe Placement
Maybe InstanceRequirementsRequest
weightedCapacity :: Maybe Double
subnetId :: Maybe Text
priority :: Maybe Double
placement :: Maybe Placement
maxPrice :: Maybe Text
instanceType :: Maybe InstanceType
instanceRequirements :: Maybe InstanceRequirementsRequest
imageId :: Maybe Text
availabilityZone :: Maybe Text
$sel:weightedCapacity:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Double
$sel:subnetId:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:priority:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Double
$sel:placement:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Placement
$sel:maxPrice:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:instanceType:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe InstanceType
$sel:instanceRequirements:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest
-> Maybe InstanceRequirementsRequest
$sel:imageId:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
$sel:availabilityZone:FleetLaunchTemplateOverridesRequest' :: FleetLaunchTemplateOverridesRequest -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"AvailabilityZone" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
availabilityZone,
        ByteString
"ImageId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
imageId,
        ByteString
"InstanceRequirements" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe InstanceRequirementsRequest
instanceRequirements,
        ByteString
"InstanceType" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe InstanceType
instanceType,
        ByteString
"MaxPrice" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
maxPrice,
        ByteString
"Placement" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Placement
placement,
        ByteString
"Priority" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Double
priority,
        ByteString
"SubnetId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
subnetId,
        ByteString
"WeightedCapacity" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Double
weightedCapacity
      ]