{-# 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.FleetLaunchTemplateOverrides
-- 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.FleetLaunchTemplateOverrides 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.InstanceRequirements
import Amazonka.EC2.Types.InstanceType
import Amazonka.EC2.Types.PlacementResponse
import qualified Amazonka.Prelude as Prelude

-- | Describes overrides for a launch template.
--
-- /See:/ 'newFleetLaunchTemplateOverrides' smart constructor.
data FleetLaunchTemplateOverrides = FleetLaunchTemplateOverrides'
  { -- | The Availability Zone in which to launch the instances.
    FleetLaunchTemplateOverrides -> 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.
    FleetLaunchTemplateOverrides -> 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@.
    FleetLaunchTemplateOverrides -> Maybe InstanceRequirements
instanceRequirements :: Prelude.Maybe InstanceRequirements,
    -- | The instance type.
    --
    -- If you specify @InstanceType@, you can\'t specify
    -- @InstanceRequirements@.
    FleetLaunchTemplateOverrides -> 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.
    FleetLaunchTemplateOverrides -> Maybe Text
maxPrice :: Prelude.Maybe Prelude.Text,
    -- | The location where the instance launched, if applicable.
    FleetLaunchTemplateOverrides -> Maybe PlacementResponse
placement :: Prelude.Maybe PlacementResponse,
    -- | 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 override has the
    -- lowest priority. You can set the same priority for different launch
    -- template overrides.
    FleetLaunchTemplateOverrides -> Maybe Double
priority :: Prelude.Maybe Prelude.Double,
    -- | The ID of the subnet in which to launch the instances.
    FleetLaunchTemplateOverrides -> Maybe Text
subnetId :: Prelude.Maybe Prelude.Text,
    -- | The number of units provided by the specified instance type.
    FleetLaunchTemplateOverrides -> Maybe Double
weightedCapacity :: Prelude.Maybe Prelude.Double
  }
  deriving (FleetLaunchTemplateOverrides
-> FleetLaunchTemplateOverrides -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FleetLaunchTemplateOverrides
-> FleetLaunchTemplateOverrides -> Bool
$c/= :: FleetLaunchTemplateOverrides
-> FleetLaunchTemplateOverrides -> Bool
== :: FleetLaunchTemplateOverrides
-> FleetLaunchTemplateOverrides -> Bool
$c== :: FleetLaunchTemplateOverrides
-> FleetLaunchTemplateOverrides -> Bool
Prelude.Eq, ReadPrec [FleetLaunchTemplateOverrides]
ReadPrec FleetLaunchTemplateOverrides
Int -> ReadS FleetLaunchTemplateOverrides
ReadS [FleetLaunchTemplateOverrides]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [FleetLaunchTemplateOverrides]
$creadListPrec :: ReadPrec [FleetLaunchTemplateOverrides]
readPrec :: ReadPrec FleetLaunchTemplateOverrides
$creadPrec :: ReadPrec FleetLaunchTemplateOverrides
readList :: ReadS [FleetLaunchTemplateOverrides]
$creadList :: ReadS [FleetLaunchTemplateOverrides]
readsPrec :: Int -> ReadS FleetLaunchTemplateOverrides
$creadsPrec :: Int -> ReadS FleetLaunchTemplateOverrides
Prelude.Read, Int -> FleetLaunchTemplateOverrides -> ShowS
[FleetLaunchTemplateOverrides] -> ShowS
FleetLaunchTemplateOverrides -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FleetLaunchTemplateOverrides] -> ShowS
$cshowList :: [FleetLaunchTemplateOverrides] -> ShowS
show :: FleetLaunchTemplateOverrides -> String
$cshow :: FleetLaunchTemplateOverrides -> String
showsPrec :: Int -> FleetLaunchTemplateOverrides -> ShowS
$cshowsPrec :: Int -> FleetLaunchTemplateOverrides -> ShowS
Prelude.Show, forall x.
Rep FleetLaunchTemplateOverrides x -> FleetLaunchTemplateOverrides
forall x.
FleetLaunchTemplateOverrides -> Rep FleetLaunchTemplateOverrides x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep FleetLaunchTemplateOverrides x -> FleetLaunchTemplateOverrides
$cfrom :: forall x.
FleetLaunchTemplateOverrides -> Rep FleetLaunchTemplateOverrides x
Prelude.Generic)

-- |
-- Create a value of 'FleetLaunchTemplateOverrides' 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', 'fleetLaunchTemplateOverrides_availabilityZone' - The Availability Zone in which to launch the instances.
--
-- 'imageId', 'fleetLaunchTemplateOverrides_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', 'fleetLaunchTemplateOverrides_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', 'fleetLaunchTemplateOverrides_instanceType' - The instance type.
--
-- If you specify @InstanceType@, you can\'t specify
-- @InstanceRequirements@.
--
-- 'maxPrice', 'fleetLaunchTemplateOverrides_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', 'fleetLaunchTemplateOverrides_placement' - The location where the instance launched, if applicable.
--
-- 'priority', 'fleetLaunchTemplateOverrides_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 override has the
-- lowest priority. You can set the same priority for different launch
-- template overrides.
--
-- 'subnetId', 'fleetLaunchTemplateOverrides_subnetId' - The ID of the subnet in which to launch the instances.
--
-- 'weightedCapacity', 'fleetLaunchTemplateOverrides_weightedCapacity' - The number of units provided by the specified instance type.
newFleetLaunchTemplateOverrides ::
  FleetLaunchTemplateOverrides
newFleetLaunchTemplateOverrides :: FleetLaunchTemplateOverrides
newFleetLaunchTemplateOverrides =
  FleetLaunchTemplateOverrides'
    { $sel:availabilityZone:FleetLaunchTemplateOverrides' :: Maybe Text
availabilityZone =
        forall a. Maybe a
Prelude.Nothing,
      $sel:imageId:FleetLaunchTemplateOverrides' :: Maybe Text
imageId = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceRequirements:FleetLaunchTemplateOverrides' :: Maybe InstanceRequirements
instanceRequirements = forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:FleetLaunchTemplateOverrides' :: Maybe InstanceType
instanceType = forall a. Maybe a
Prelude.Nothing,
      $sel:maxPrice:FleetLaunchTemplateOverrides' :: Maybe Text
maxPrice = forall a. Maybe a
Prelude.Nothing,
      $sel:placement:FleetLaunchTemplateOverrides' :: Maybe PlacementResponse
placement = forall a. Maybe a
Prelude.Nothing,
      $sel:priority:FleetLaunchTemplateOverrides' :: Maybe Double
priority = forall a. Maybe a
Prelude.Nothing,
      $sel:subnetId:FleetLaunchTemplateOverrides' :: Maybe Text
subnetId = forall a. Maybe a
Prelude.Nothing,
      $sel:weightedCapacity:FleetLaunchTemplateOverrides' :: Maybe Double
weightedCapacity = forall a. Maybe a
Prelude.Nothing
    }

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

-- | 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.
fleetLaunchTemplateOverrides_imageId :: Lens.Lens' FleetLaunchTemplateOverrides (Prelude.Maybe Prelude.Text)
fleetLaunchTemplateOverrides_imageId :: Lens' FleetLaunchTemplateOverrides (Maybe Text)
fleetLaunchTemplateOverrides_imageId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverrides' {Maybe Text
imageId :: Maybe Text
$sel:imageId:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
imageId} -> Maybe Text
imageId) (\s :: FleetLaunchTemplateOverrides
s@FleetLaunchTemplateOverrides' {} Maybe Text
a -> FleetLaunchTemplateOverrides
s {$sel:imageId:FleetLaunchTemplateOverrides' :: Maybe Text
imageId = Maybe Text
a} :: FleetLaunchTemplateOverrides)

-- | 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@.
fleetLaunchTemplateOverrides_instanceRequirements :: Lens.Lens' FleetLaunchTemplateOverrides (Prelude.Maybe InstanceRequirements)
fleetLaunchTemplateOverrides_instanceRequirements :: Lens' FleetLaunchTemplateOverrides (Maybe InstanceRequirements)
fleetLaunchTemplateOverrides_instanceRequirements = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverrides' {Maybe InstanceRequirements
instanceRequirements :: Maybe InstanceRequirements
$sel:instanceRequirements:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe InstanceRequirements
instanceRequirements} -> Maybe InstanceRequirements
instanceRequirements) (\s :: FleetLaunchTemplateOverrides
s@FleetLaunchTemplateOverrides' {} Maybe InstanceRequirements
a -> FleetLaunchTemplateOverrides
s {$sel:instanceRequirements:FleetLaunchTemplateOverrides' :: Maybe InstanceRequirements
instanceRequirements = Maybe InstanceRequirements
a} :: FleetLaunchTemplateOverrides)

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

-- | 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.
fleetLaunchTemplateOverrides_maxPrice :: Lens.Lens' FleetLaunchTemplateOverrides (Prelude.Maybe Prelude.Text)
fleetLaunchTemplateOverrides_maxPrice :: Lens' FleetLaunchTemplateOverrides (Maybe Text)
fleetLaunchTemplateOverrides_maxPrice = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverrides' {Maybe Text
maxPrice :: Maybe Text
$sel:maxPrice:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
maxPrice} -> Maybe Text
maxPrice) (\s :: FleetLaunchTemplateOverrides
s@FleetLaunchTemplateOverrides' {} Maybe Text
a -> FleetLaunchTemplateOverrides
s {$sel:maxPrice:FleetLaunchTemplateOverrides' :: Maybe Text
maxPrice = Maybe Text
a} :: FleetLaunchTemplateOverrides)

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

-- | 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 override has the
-- lowest priority. You can set the same priority for different launch
-- template overrides.
fleetLaunchTemplateOverrides_priority :: Lens.Lens' FleetLaunchTemplateOverrides (Prelude.Maybe Prelude.Double)
fleetLaunchTemplateOverrides_priority :: Lens' FleetLaunchTemplateOverrides (Maybe Double)
fleetLaunchTemplateOverrides_priority = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverrides' {Maybe Double
priority :: Maybe Double
$sel:priority:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Double
priority} -> Maybe Double
priority) (\s :: FleetLaunchTemplateOverrides
s@FleetLaunchTemplateOverrides' {} Maybe Double
a -> FleetLaunchTemplateOverrides
s {$sel:priority:FleetLaunchTemplateOverrides' :: Maybe Double
priority = Maybe Double
a} :: FleetLaunchTemplateOverrides)

-- | The ID of the subnet in which to launch the instances.
fleetLaunchTemplateOverrides_subnetId :: Lens.Lens' FleetLaunchTemplateOverrides (Prelude.Maybe Prelude.Text)
fleetLaunchTemplateOverrides_subnetId :: Lens' FleetLaunchTemplateOverrides (Maybe Text)
fleetLaunchTemplateOverrides_subnetId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetLaunchTemplateOverrides' {Maybe Text
subnetId :: Maybe Text
$sel:subnetId:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
subnetId} -> Maybe Text
subnetId) (\s :: FleetLaunchTemplateOverrides
s@FleetLaunchTemplateOverrides' {} Maybe Text
a -> FleetLaunchTemplateOverrides
s {$sel:subnetId:FleetLaunchTemplateOverrides' :: Maybe Text
subnetId = Maybe Text
a} :: FleetLaunchTemplateOverrides)

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

instance Data.FromXML FleetLaunchTemplateOverrides where
  parseXML :: [Node] -> Either String FleetLaunchTemplateOverrides
parseXML [Node]
x =
    Maybe Text
-> Maybe Text
-> Maybe InstanceRequirements
-> Maybe InstanceType
-> Maybe Text
-> Maybe PlacementResponse
-> Maybe Double
-> Maybe Text
-> Maybe Double
-> FleetLaunchTemplateOverrides
FleetLaunchTemplateOverrides'
      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
"availabilityZone")
      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
"imageId")
      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
"instanceRequirements")
      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
"instanceType")
      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
"maxPrice")
      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
"placement")
      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
"priority")
      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
"subnetId")
      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
"weightedCapacity")

instance
  Prelude.Hashable
    FleetLaunchTemplateOverrides
  where
  hashWithSalt :: Int -> FleetLaunchTemplateOverrides -> Int
hashWithSalt Int
_salt FleetLaunchTemplateOverrides' {Maybe Double
Maybe Text
Maybe InstanceType
Maybe PlacementResponse
Maybe InstanceRequirements
weightedCapacity :: Maybe Double
subnetId :: Maybe Text
priority :: Maybe Double
placement :: Maybe PlacementResponse
maxPrice :: Maybe Text
instanceType :: Maybe InstanceType
instanceRequirements :: Maybe InstanceRequirements
imageId :: Maybe Text
availabilityZone :: Maybe Text
$sel:weightedCapacity:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Double
$sel:subnetId:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
$sel:priority:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Double
$sel:placement:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe PlacementResponse
$sel:maxPrice:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
$sel:instanceType:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe InstanceType
$sel:instanceRequirements:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe InstanceRequirements
$sel:imageId:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
$sel:availabilityZone:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> 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 InstanceRequirements
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 PlacementResponse
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 FleetLaunchTemplateOverrides where
  rnf :: FleetLaunchTemplateOverrides -> ()
rnf FleetLaunchTemplateOverrides' {Maybe Double
Maybe Text
Maybe InstanceType
Maybe PlacementResponse
Maybe InstanceRequirements
weightedCapacity :: Maybe Double
subnetId :: Maybe Text
priority :: Maybe Double
placement :: Maybe PlacementResponse
maxPrice :: Maybe Text
instanceType :: Maybe InstanceType
instanceRequirements :: Maybe InstanceRequirements
imageId :: Maybe Text
availabilityZone :: Maybe Text
$sel:weightedCapacity:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Double
$sel:subnetId:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
$sel:priority:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Double
$sel:placement:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe PlacementResponse
$sel:maxPrice:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
$sel:instanceType:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe InstanceType
$sel:instanceRequirements:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe InstanceRequirements
$sel:imageId:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> Maybe Text
$sel:availabilityZone:FleetLaunchTemplateOverrides' :: FleetLaunchTemplateOverrides -> 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 InstanceRequirements
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 PlacementResponse
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