{-# 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.GameLift.Types.FleetAttributes
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.GameLift.Types.FleetAttributes where

import qualified Amazonka.Core as Core
import Amazonka.GameLift.Types.CertificateConfiguration
import Amazonka.GameLift.Types.EC2InstanceType
import Amazonka.GameLift.Types.FleetAction
import Amazonka.GameLift.Types.FleetStatus
import Amazonka.GameLift.Types.FleetType
import Amazonka.GameLift.Types.OperatingSystem
import Amazonka.GameLift.Types.ProtectionPolicy
import Amazonka.GameLift.Types.ResourceCreationLimitPolicy
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Describes a GameLift fleet of game hosting resources.
--
-- __Related actions__
--
-- CreateFleet | DescribeFleetAttributes
--
-- /See:/ 'newFleetAttributes' smart constructor.
data FleetAttributes = FleetAttributes'
  { -- | A time stamp indicating when this data object was created. Format is a
    -- number expressed in Unix time as milliseconds (for example
    -- @\"1469498468.057\"@).
    FleetAttributes -> Maybe POSIX
creationTime :: Prelude.Maybe Core.POSIX,
    -- | Current status of the fleet. Possible fleet statuses include the
    -- following:
    --
    -- -   __NEW__ -- A new fleet has been defined and desired instances is set
    --     to 1.
    --
    -- -   __DOWNLOADING\/VALIDATING\/BUILDING\/ACTIVATING__ -- GameLift is
    --     setting up the new fleet, creating new instances with the game build
    --     or Realtime script and starting server processes.
    --
    -- -   __ACTIVE__ -- Hosts can now accept game sessions.
    --
    -- -   __ERROR__ -- An error occurred when downloading, validating,
    --     building, or activating the fleet.
    --
    -- -   __DELETING__ -- Hosts are responding to a delete fleet request.
    --
    -- -   __TERMINATED__ -- The fleet no longer exists.
    FleetAttributes -> Maybe FleetStatus
status :: Prelude.Maybe FleetStatus,
    -- | __This parameter is no longer used.__ Server launch parameters are now
    -- defined using the fleet\'s RuntimeConfiguration parameter. Requests that
    -- use this parameter instead continue to be valid.
    FleetAttributes -> Maybe Text
serverLaunchParameters :: Prelude.Maybe Prelude.Text,
    -- | __This parameter is no longer used.__ Game session log paths are now
    -- defined using the GameLift server API @ProcessReady()@ @logParameters@.
    -- See more information in the
    -- <https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api-ref.html#gamelift-sdk-server-api-ref-dataypes-process Server API Reference>.
    FleetAttributes -> Maybe [Text]
logPaths :: Prelude.Maybe [Prelude.Text],
    -- | The operating system of the fleet\'s computing resources. A fleet\'s
    -- operating system is determined by the OS of the build or script that is
    -- deployed on this fleet.
    FleetAttributes -> Maybe OperatingSystem
operatingSystem :: Prelude.Maybe OperatingSystem,
    -- | A unique identifier for the build resource that is deployed on instances
    -- in this fleet.
    FleetAttributes -> Maybe Text
buildId :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name
    -- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
    -- that is assigned to a GameLift fleet resource and uniquely identifies
    -- it. ARNs are unique across all Regions. Format is
    -- @arn:aws:gamelift:\<region>::fleet\/fleet-a1234567-b8c9-0d1e-2fa3-b45c6d7e8912@.
    -- In a GameLift fleet ARN, the resource ID matches the @FleetId@ value.
    FleetAttributes -> Maybe Text
fleetArn :: Prelude.Maybe Prelude.Text,
    -- | The kind of instances, On-Demand or Spot, that this fleet uses.
    FleetAttributes -> Maybe FleetType
fleetType :: Prelude.Maybe FleetType,
    -- | A time stamp indicating when this data object was terminated. Format is
    -- a number expressed in Unix time as milliseconds (for example
    -- @\"1469498468.057\"@).
    FleetAttributes -> Maybe POSIX
terminationTime :: Prelude.Maybe Core.POSIX,
    -- | The EC2 instance type that determines the computing resources of each
    -- instance in the fleet. Instance type defines the CPU, memory, storage,
    -- and networking capacity. See
    -- <http://aws.amazon.com/ec2/instance-types/ Amazon EC2 Instance Types>
    -- for detailed descriptions.
    FleetAttributes -> Maybe EC2InstanceType
instanceType :: Prelude.Maybe EC2InstanceType,
    -- | A list of fleet activity that has been suspended using StopFleetActions.
    -- This includes fleet auto-scaling.
    FleetAttributes -> Maybe (NonEmpty FleetAction)
stoppedActions :: Prelude.Maybe (Prelude.NonEmpty FleetAction),
    -- | The type of game session protection to set on all new instances that are
    -- started in the fleet.
    --
    -- -   __NoProtection__ -- The game session can be terminated during a
    --     scale-down event.
    --
    -- -   __FullProtection__ -- If the game session is in an @ACTIVE@ status,
    --     it cannot be terminated during a scale-down event.
    FleetAttributes -> Maybe ProtectionPolicy
newGameSessionProtectionPolicy' :: Prelude.Maybe ProtectionPolicy,
    -- | A descriptive label that is associated with a fleet. Fleet names do not
    -- need to be unique.
    FleetAttributes -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | A unique identifier for the Realtime script resource that is deployed on
    -- instances in this fleet.
    FleetAttributes -> Maybe Text
scriptId :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name
    -- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
    -- associated with the GameLift script resource that is deployed on
    -- instances in this fleet. In a GameLift script ARN, the resource ID
    -- matches the @ScriptId@ value.
    FleetAttributes -> Maybe Text
scriptArn :: Prelude.Maybe Prelude.Text,
    -- | Indicates whether a TLS\/SSL certificate was generated for the fleet.
    FleetAttributes -> Maybe CertificateConfiguration
certificateConfiguration :: Prelude.Maybe CertificateConfiguration,
    -- | __This parameter is no longer used.__ Server launch paths are now
    -- defined using the fleet\'s RuntimeConfiguration parameter. Requests that
    -- use this parameter instead continue to be valid.
    FleetAttributes -> Maybe Text
serverLaunchPath :: Prelude.Maybe Prelude.Text,
    -- | A unique identifier for an AWS IAM role that manages access to your AWS
    -- services. With an instance role ARN set, any application that runs on an
    -- instance in this fleet can assume the role, including install scripts,
    -- server processes, and daemons (background processes). Create a role or
    -- look up a role\'s ARN by using the
    -- <https://console.aws.amazon.com/iam/ IAM dashboard> in the AWS
    -- Management Console. Learn more about using on-box credentials for your
    -- game servers at
    -- <https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html Access external resources from a game server>.
    FleetAttributes -> Maybe Text
instanceRoleArn :: Prelude.Maybe Prelude.Text,
    -- | Name of a metric group that metrics for this fleet are added to. In
    -- Amazon CloudWatch, you can view aggregated metrics for fleets that are
    -- in a metric group. A fleet can be included in only one metric group at a
    -- time.
    FleetAttributes -> Maybe [Text]
metricGroups :: Prelude.Maybe [Prelude.Text],
    -- | The Amazon Resource Name
    -- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
    -- associated with the GameLift build resource that is deployed on
    -- instances in this fleet. In a GameLift build ARN, the resource ID
    -- matches the @BuildId@ value.
    FleetAttributes -> Maybe Text
buildArn :: Prelude.Maybe Prelude.Text,
    -- | A unique identifier for the fleet.
    FleetAttributes -> Maybe Text
fleetId :: Prelude.Maybe Prelude.Text,
    -- | A human-readable description of the fleet.
    FleetAttributes -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The fleet policy that limits the number of game sessions an individual
    -- player can create over a span of time.
    FleetAttributes -> Maybe ResourceCreationLimitPolicy
resourceCreationLimitPolicy :: Prelude.Maybe ResourceCreationLimitPolicy
  }
  deriving (FleetAttributes -> FleetAttributes -> Bool
(FleetAttributes -> FleetAttributes -> Bool)
-> (FleetAttributes -> FleetAttributes -> Bool)
-> Eq FleetAttributes
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: FleetAttributes -> FleetAttributes -> Bool
$c/= :: FleetAttributes -> FleetAttributes -> Bool
== :: FleetAttributes -> FleetAttributes -> Bool
$c== :: FleetAttributes -> FleetAttributes -> Bool
Prelude.Eq, ReadPrec [FleetAttributes]
ReadPrec FleetAttributes
Int -> ReadS FleetAttributes
ReadS [FleetAttributes]
(Int -> ReadS FleetAttributes)
-> ReadS [FleetAttributes]
-> ReadPrec FleetAttributes
-> ReadPrec [FleetAttributes]
-> Read FleetAttributes
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [FleetAttributes]
$creadListPrec :: ReadPrec [FleetAttributes]
readPrec :: ReadPrec FleetAttributes
$creadPrec :: ReadPrec FleetAttributes
readList :: ReadS [FleetAttributes]
$creadList :: ReadS [FleetAttributes]
readsPrec :: Int -> ReadS FleetAttributes
$creadsPrec :: Int -> ReadS FleetAttributes
Prelude.Read, Int -> FleetAttributes -> ShowS
[FleetAttributes] -> ShowS
FleetAttributes -> String
(Int -> FleetAttributes -> ShowS)
-> (FleetAttributes -> String)
-> ([FleetAttributes] -> ShowS)
-> Show FleetAttributes
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [FleetAttributes] -> ShowS
$cshowList :: [FleetAttributes] -> ShowS
show :: FleetAttributes -> String
$cshow :: FleetAttributes -> String
showsPrec :: Int -> FleetAttributes -> ShowS
$cshowsPrec :: Int -> FleetAttributes -> ShowS
Prelude.Show, (forall x. FleetAttributes -> Rep FleetAttributes x)
-> (forall x. Rep FleetAttributes x -> FleetAttributes)
-> Generic FleetAttributes
forall x. Rep FleetAttributes x -> FleetAttributes
forall x. FleetAttributes -> Rep FleetAttributes x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep FleetAttributes x -> FleetAttributes
$cfrom :: forall x. FleetAttributes -> Rep FleetAttributes x
Prelude.Generic)

-- |
-- Create a value of 'FleetAttributes' 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:
--
-- 'creationTime', 'fleetAttributes_creationTime' - A time stamp indicating when this data object was created. Format is a
-- number expressed in Unix time as milliseconds (for example
-- @\"1469498468.057\"@).
--
-- 'status', 'fleetAttributes_status' - Current status of the fleet. Possible fleet statuses include the
-- following:
--
-- -   __NEW__ -- A new fleet has been defined and desired instances is set
--     to 1.
--
-- -   __DOWNLOADING\/VALIDATING\/BUILDING\/ACTIVATING__ -- GameLift is
--     setting up the new fleet, creating new instances with the game build
--     or Realtime script and starting server processes.
--
-- -   __ACTIVE__ -- Hosts can now accept game sessions.
--
-- -   __ERROR__ -- An error occurred when downloading, validating,
--     building, or activating the fleet.
--
-- -   __DELETING__ -- Hosts are responding to a delete fleet request.
--
-- -   __TERMINATED__ -- The fleet no longer exists.
--
-- 'serverLaunchParameters', 'fleetAttributes_serverLaunchParameters' - __This parameter is no longer used.__ Server launch parameters are now
-- defined using the fleet\'s RuntimeConfiguration parameter. Requests that
-- use this parameter instead continue to be valid.
--
-- 'logPaths', 'fleetAttributes_logPaths' - __This parameter is no longer used.__ Game session log paths are now
-- defined using the GameLift server API @ProcessReady()@ @logParameters@.
-- See more information in the
-- <https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api-ref.html#gamelift-sdk-server-api-ref-dataypes-process Server API Reference>.
--
-- 'operatingSystem', 'fleetAttributes_operatingSystem' - The operating system of the fleet\'s computing resources. A fleet\'s
-- operating system is determined by the OS of the build or script that is
-- deployed on this fleet.
--
-- 'buildId', 'fleetAttributes_buildId' - A unique identifier for the build resource that is deployed on instances
-- in this fleet.
--
-- 'fleetArn', 'fleetAttributes_fleetArn' - The Amazon Resource Name
-- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
-- that is assigned to a GameLift fleet resource and uniquely identifies
-- it. ARNs are unique across all Regions. Format is
-- @arn:aws:gamelift:\<region>::fleet\/fleet-a1234567-b8c9-0d1e-2fa3-b45c6d7e8912@.
-- In a GameLift fleet ARN, the resource ID matches the @FleetId@ value.
--
-- 'fleetType', 'fleetAttributes_fleetType' - The kind of instances, On-Demand or Spot, that this fleet uses.
--
-- 'terminationTime', 'fleetAttributes_terminationTime' - A time stamp indicating when this data object was terminated. Format is
-- a number expressed in Unix time as milliseconds (for example
-- @\"1469498468.057\"@).
--
-- 'instanceType', 'fleetAttributes_instanceType' - The EC2 instance type that determines the computing resources of each
-- instance in the fleet. Instance type defines the CPU, memory, storage,
-- and networking capacity. See
-- <http://aws.amazon.com/ec2/instance-types/ Amazon EC2 Instance Types>
-- for detailed descriptions.
--
-- 'stoppedActions', 'fleetAttributes_stoppedActions' - A list of fleet activity that has been suspended using StopFleetActions.
-- This includes fleet auto-scaling.
--
-- 'newGameSessionProtectionPolicy'', 'fleetAttributes_newGameSessionProtectionPolicy' - The type of game session protection to set on all new instances that are
-- started in the fleet.
--
-- -   __NoProtection__ -- The game session can be terminated during a
--     scale-down event.
--
-- -   __FullProtection__ -- If the game session is in an @ACTIVE@ status,
--     it cannot be terminated during a scale-down event.
--
-- 'name', 'fleetAttributes_name' - A descriptive label that is associated with a fleet. Fleet names do not
-- need to be unique.
--
-- 'scriptId', 'fleetAttributes_scriptId' - A unique identifier for the Realtime script resource that is deployed on
-- instances in this fleet.
--
-- 'scriptArn', 'fleetAttributes_scriptArn' - The Amazon Resource Name
-- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
-- associated with the GameLift script resource that is deployed on
-- instances in this fleet. In a GameLift script ARN, the resource ID
-- matches the @ScriptId@ value.
--
-- 'certificateConfiguration', 'fleetAttributes_certificateConfiguration' - Indicates whether a TLS\/SSL certificate was generated for the fleet.
--
-- 'serverLaunchPath', 'fleetAttributes_serverLaunchPath' - __This parameter is no longer used.__ Server launch paths are now
-- defined using the fleet\'s RuntimeConfiguration parameter. Requests that
-- use this parameter instead continue to be valid.
--
-- 'instanceRoleArn', 'fleetAttributes_instanceRoleArn' - A unique identifier for an AWS IAM role that manages access to your AWS
-- services. With an instance role ARN set, any application that runs on an
-- instance in this fleet can assume the role, including install scripts,
-- server processes, and daemons (background processes). Create a role or
-- look up a role\'s ARN by using the
-- <https://console.aws.amazon.com/iam/ IAM dashboard> in the AWS
-- Management Console. Learn more about using on-box credentials for your
-- game servers at
-- <https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html Access external resources from a game server>.
--
-- 'metricGroups', 'fleetAttributes_metricGroups' - Name of a metric group that metrics for this fleet are added to. In
-- Amazon CloudWatch, you can view aggregated metrics for fleets that are
-- in a metric group. A fleet can be included in only one metric group at a
-- time.
--
-- 'buildArn', 'fleetAttributes_buildArn' - The Amazon Resource Name
-- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
-- associated with the GameLift build resource that is deployed on
-- instances in this fleet. In a GameLift build ARN, the resource ID
-- matches the @BuildId@ value.
--
-- 'fleetId', 'fleetAttributes_fleetId' - A unique identifier for the fleet.
--
-- 'description', 'fleetAttributes_description' - A human-readable description of the fleet.
--
-- 'resourceCreationLimitPolicy', 'fleetAttributes_resourceCreationLimitPolicy' - The fleet policy that limits the number of game sessions an individual
-- player can create over a span of time.
newFleetAttributes ::
  FleetAttributes
newFleetAttributes :: FleetAttributes
newFleetAttributes =
  FleetAttributes' :: Maybe POSIX
-> Maybe FleetStatus
-> Maybe Text
-> Maybe [Text]
-> Maybe OperatingSystem
-> Maybe Text
-> Maybe Text
-> Maybe FleetType
-> Maybe POSIX
-> Maybe EC2InstanceType
-> Maybe (NonEmpty FleetAction)
-> Maybe ProtectionPolicy
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe CertificateConfiguration
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ResourceCreationLimitPolicy
-> FleetAttributes
FleetAttributes'
    { $sel:creationTime:FleetAttributes' :: Maybe POSIX
creationTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:status:FleetAttributes' :: Maybe FleetStatus
status = Maybe FleetStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:serverLaunchParameters:FleetAttributes' :: Maybe Text
serverLaunchParameters = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:logPaths:FleetAttributes' :: Maybe [Text]
logPaths = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:operatingSystem:FleetAttributes' :: Maybe OperatingSystem
operatingSystem = Maybe OperatingSystem
forall a. Maybe a
Prelude.Nothing,
      $sel:buildId:FleetAttributes' :: Maybe Text
buildId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:fleetArn:FleetAttributes' :: Maybe Text
fleetArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:fleetType:FleetAttributes' :: Maybe FleetType
fleetType = Maybe FleetType
forall a. Maybe a
Prelude.Nothing,
      $sel:terminationTime:FleetAttributes' :: Maybe POSIX
terminationTime = Maybe POSIX
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:FleetAttributes' :: Maybe EC2InstanceType
instanceType = Maybe EC2InstanceType
forall a. Maybe a
Prelude.Nothing,
      $sel:stoppedActions:FleetAttributes' :: Maybe (NonEmpty FleetAction)
stoppedActions = Maybe (NonEmpty FleetAction)
forall a. Maybe a
Prelude.Nothing,
      $sel:newGameSessionProtectionPolicy':FleetAttributes' :: Maybe ProtectionPolicy
newGameSessionProtectionPolicy' = Maybe ProtectionPolicy
forall a. Maybe a
Prelude.Nothing,
      $sel:name:FleetAttributes' :: Maybe Text
name = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:scriptId:FleetAttributes' :: Maybe Text
scriptId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:scriptArn:FleetAttributes' :: Maybe Text
scriptArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:certificateConfiguration:FleetAttributes' :: Maybe CertificateConfiguration
certificateConfiguration = Maybe CertificateConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:serverLaunchPath:FleetAttributes' :: Maybe Text
serverLaunchPath = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceRoleArn:FleetAttributes' :: Maybe Text
instanceRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:metricGroups:FleetAttributes' :: Maybe [Text]
metricGroups = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:buildArn:FleetAttributes' :: Maybe Text
buildArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:fleetId:FleetAttributes' :: Maybe Text
fleetId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:description:FleetAttributes' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:resourceCreationLimitPolicy:FleetAttributes' :: Maybe ResourceCreationLimitPolicy
resourceCreationLimitPolicy = Maybe ResourceCreationLimitPolicy
forall a. Maybe a
Prelude.Nothing
    }

-- | A time stamp indicating when this data object was created. Format is a
-- number expressed in Unix time as milliseconds (for example
-- @\"1469498468.057\"@).
fleetAttributes_creationTime :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.UTCTime)
fleetAttributes_creationTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_creationTime = (FleetAttributes -> Maybe POSIX)
-> (FleetAttributes -> Maybe POSIX -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe POSIX
creationTime :: Maybe POSIX
$sel:creationTime:FleetAttributes' :: FleetAttributes -> Maybe POSIX
creationTime} -> Maybe POSIX
creationTime) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe POSIX
a -> FleetAttributes
s {$sel:creationTime:FleetAttributes' :: Maybe POSIX
creationTime = Maybe POSIX
a} :: FleetAttributes) ((Maybe POSIX -> f (Maybe POSIX))
 -> FleetAttributes -> f FleetAttributes)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> FleetAttributes
-> f FleetAttributes
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Current status of the fleet. Possible fleet statuses include the
-- following:
--
-- -   __NEW__ -- A new fleet has been defined and desired instances is set
--     to 1.
--
-- -   __DOWNLOADING\/VALIDATING\/BUILDING\/ACTIVATING__ -- GameLift is
--     setting up the new fleet, creating new instances with the game build
--     or Realtime script and starting server processes.
--
-- -   __ACTIVE__ -- Hosts can now accept game sessions.
--
-- -   __ERROR__ -- An error occurred when downloading, validating,
--     building, or activating the fleet.
--
-- -   __DELETING__ -- Hosts are responding to a delete fleet request.
--
-- -   __TERMINATED__ -- The fleet no longer exists.
fleetAttributes_status :: Lens.Lens' FleetAttributes (Prelude.Maybe FleetStatus)
fleetAttributes_status :: (Maybe FleetStatus -> f (Maybe FleetStatus))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_status = (FleetAttributes -> Maybe FleetStatus)
-> (FleetAttributes -> Maybe FleetStatus -> FleetAttributes)
-> Lens
     FleetAttributes
     FleetAttributes
     (Maybe FleetStatus)
     (Maybe FleetStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe FleetStatus
status :: Maybe FleetStatus
$sel:status:FleetAttributes' :: FleetAttributes -> Maybe FleetStatus
status} -> Maybe FleetStatus
status) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe FleetStatus
a -> FleetAttributes
s {$sel:status:FleetAttributes' :: Maybe FleetStatus
status = Maybe FleetStatus
a} :: FleetAttributes)

-- | __This parameter is no longer used.__ Server launch parameters are now
-- defined using the fleet\'s RuntimeConfiguration parameter. Requests that
-- use this parameter instead continue to be valid.
fleetAttributes_serverLaunchParameters :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_serverLaunchParameters :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_serverLaunchParameters = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
serverLaunchParameters :: Maybe Text
$sel:serverLaunchParameters:FleetAttributes' :: FleetAttributes -> Maybe Text
serverLaunchParameters} -> Maybe Text
serverLaunchParameters) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:serverLaunchParameters:FleetAttributes' :: Maybe Text
serverLaunchParameters = Maybe Text
a} :: FleetAttributes)

-- | __This parameter is no longer used.__ Game session log paths are now
-- defined using the GameLift server API @ProcessReady()@ @logParameters@.
-- See more information in the
-- <https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-api-ref.html#gamelift-sdk-server-api-ref-dataypes-process Server API Reference>.
fleetAttributes_logPaths :: Lens.Lens' FleetAttributes (Prelude.Maybe [Prelude.Text])
fleetAttributes_logPaths :: (Maybe [Text] -> f (Maybe [Text]))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_logPaths = (FleetAttributes -> Maybe [Text])
-> (FleetAttributes -> Maybe [Text] -> FleetAttributes)
-> Lens
     FleetAttributes FleetAttributes (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe [Text]
logPaths :: Maybe [Text]
$sel:logPaths:FleetAttributes' :: FleetAttributes -> Maybe [Text]
logPaths} -> Maybe [Text]
logPaths) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe [Text]
a -> FleetAttributes
s {$sel:logPaths:FleetAttributes' :: Maybe [Text]
logPaths = Maybe [Text]
a} :: FleetAttributes) ((Maybe [Text] -> f (Maybe [Text]))
 -> FleetAttributes -> f FleetAttributes)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> FleetAttributes
-> f FleetAttributes
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The operating system of the fleet\'s computing resources. A fleet\'s
-- operating system is determined by the OS of the build or script that is
-- deployed on this fleet.
fleetAttributes_operatingSystem :: Lens.Lens' FleetAttributes (Prelude.Maybe OperatingSystem)
fleetAttributes_operatingSystem :: (Maybe OperatingSystem -> f (Maybe OperatingSystem))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_operatingSystem = (FleetAttributes -> Maybe OperatingSystem)
-> (FleetAttributes -> Maybe OperatingSystem -> FleetAttributes)
-> Lens
     FleetAttributes
     FleetAttributes
     (Maybe OperatingSystem)
     (Maybe OperatingSystem)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe OperatingSystem
operatingSystem :: Maybe OperatingSystem
$sel:operatingSystem:FleetAttributes' :: FleetAttributes -> Maybe OperatingSystem
operatingSystem} -> Maybe OperatingSystem
operatingSystem) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe OperatingSystem
a -> FleetAttributes
s {$sel:operatingSystem:FleetAttributes' :: Maybe OperatingSystem
operatingSystem = Maybe OperatingSystem
a} :: FleetAttributes)

-- | A unique identifier for the build resource that is deployed on instances
-- in this fleet.
fleetAttributes_buildId :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_buildId :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_buildId = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
buildId :: Maybe Text
$sel:buildId:FleetAttributes' :: FleetAttributes -> Maybe Text
buildId} -> Maybe Text
buildId) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:buildId:FleetAttributes' :: Maybe Text
buildId = Maybe Text
a} :: FleetAttributes)

-- | The Amazon Resource Name
-- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
-- that is assigned to a GameLift fleet resource and uniquely identifies
-- it. ARNs are unique across all Regions. Format is
-- @arn:aws:gamelift:\<region>::fleet\/fleet-a1234567-b8c9-0d1e-2fa3-b45c6d7e8912@.
-- In a GameLift fleet ARN, the resource ID matches the @FleetId@ value.
fleetAttributes_fleetArn :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_fleetArn :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_fleetArn = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
fleetArn :: Maybe Text
$sel:fleetArn:FleetAttributes' :: FleetAttributes -> Maybe Text
fleetArn} -> Maybe Text
fleetArn) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:fleetArn:FleetAttributes' :: Maybe Text
fleetArn = Maybe Text
a} :: FleetAttributes)

-- | The kind of instances, On-Demand or Spot, that this fleet uses.
fleetAttributes_fleetType :: Lens.Lens' FleetAttributes (Prelude.Maybe FleetType)
fleetAttributes_fleetType :: (Maybe FleetType -> f (Maybe FleetType))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_fleetType = (FleetAttributes -> Maybe FleetType)
-> (FleetAttributes -> Maybe FleetType -> FleetAttributes)
-> Lens
     FleetAttributes FleetAttributes (Maybe FleetType) (Maybe FleetType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe FleetType
fleetType :: Maybe FleetType
$sel:fleetType:FleetAttributes' :: FleetAttributes -> Maybe FleetType
fleetType} -> Maybe FleetType
fleetType) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe FleetType
a -> FleetAttributes
s {$sel:fleetType:FleetAttributes' :: Maybe FleetType
fleetType = Maybe FleetType
a} :: FleetAttributes)

-- | A time stamp indicating when this data object was terminated. Format is
-- a number expressed in Unix time as milliseconds (for example
-- @\"1469498468.057\"@).
fleetAttributes_terminationTime :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.UTCTime)
fleetAttributes_terminationTime :: (Maybe UTCTime -> f (Maybe UTCTime))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_terminationTime = (FleetAttributes -> Maybe POSIX)
-> (FleetAttributes -> Maybe POSIX -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe POSIX) (Maybe POSIX)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe POSIX
terminationTime :: Maybe POSIX
$sel:terminationTime:FleetAttributes' :: FleetAttributes -> Maybe POSIX
terminationTime} -> Maybe POSIX
terminationTime) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe POSIX
a -> FleetAttributes
s {$sel:terminationTime:FleetAttributes' :: Maybe POSIX
terminationTime = Maybe POSIX
a} :: FleetAttributes) ((Maybe POSIX -> f (Maybe POSIX))
 -> FleetAttributes -> f FleetAttributes)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe POSIX -> f (Maybe POSIX))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> FleetAttributes
-> f FleetAttributes
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso POSIX POSIX UTCTime UTCTime
-> Iso (Maybe POSIX) (Maybe POSIX) (Maybe UTCTime) (Maybe UTCTime)
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 AnIso POSIX POSIX UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The EC2 instance type that determines the computing resources of each
-- instance in the fleet. Instance type defines the CPU, memory, storage,
-- and networking capacity. See
-- <http://aws.amazon.com/ec2/instance-types/ Amazon EC2 Instance Types>
-- for detailed descriptions.
fleetAttributes_instanceType :: Lens.Lens' FleetAttributes (Prelude.Maybe EC2InstanceType)
fleetAttributes_instanceType :: (Maybe EC2InstanceType -> f (Maybe EC2InstanceType))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_instanceType = (FleetAttributes -> Maybe EC2InstanceType)
-> (FleetAttributes -> Maybe EC2InstanceType -> FleetAttributes)
-> Lens
     FleetAttributes
     FleetAttributes
     (Maybe EC2InstanceType)
     (Maybe EC2InstanceType)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe EC2InstanceType
instanceType :: Maybe EC2InstanceType
$sel:instanceType:FleetAttributes' :: FleetAttributes -> Maybe EC2InstanceType
instanceType} -> Maybe EC2InstanceType
instanceType) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe EC2InstanceType
a -> FleetAttributes
s {$sel:instanceType:FleetAttributes' :: Maybe EC2InstanceType
instanceType = Maybe EC2InstanceType
a} :: FleetAttributes)

-- | A list of fleet activity that has been suspended using StopFleetActions.
-- This includes fleet auto-scaling.
fleetAttributes_stoppedActions :: Lens.Lens' FleetAttributes (Prelude.Maybe (Prelude.NonEmpty FleetAction))
fleetAttributes_stoppedActions :: (Maybe (NonEmpty FleetAction) -> f (Maybe (NonEmpty FleetAction)))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_stoppedActions = (FleetAttributes -> Maybe (NonEmpty FleetAction))
-> (FleetAttributes
    -> Maybe (NonEmpty FleetAction) -> FleetAttributes)
-> Lens
     FleetAttributes
     FleetAttributes
     (Maybe (NonEmpty FleetAction))
     (Maybe (NonEmpty FleetAction))
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe (NonEmpty FleetAction)
stoppedActions :: Maybe (NonEmpty FleetAction)
$sel:stoppedActions:FleetAttributes' :: FleetAttributes -> Maybe (NonEmpty FleetAction)
stoppedActions} -> Maybe (NonEmpty FleetAction)
stoppedActions) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe (NonEmpty FleetAction)
a -> FleetAttributes
s {$sel:stoppedActions:FleetAttributes' :: Maybe (NonEmpty FleetAction)
stoppedActions = Maybe (NonEmpty FleetAction)
a} :: FleetAttributes) ((Maybe (NonEmpty FleetAction) -> f (Maybe (NonEmpty FleetAction)))
 -> FleetAttributes -> f FleetAttributes)
-> ((Maybe (NonEmpty FleetAction)
     -> f (Maybe (NonEmpty FleetAction)))
    -> Maybe (NonEmpty FleetAction)
    -> f (Maybe (NonEmpty FleetAction)))
-> (Maybe (NonEmpty FleetAction)
    -> f (Maybe (NonEmpty FleetAction)))
-> FleetAttributes
-> f FleetAttributes
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  (NonEmpty FleetAction)
  (NonEmpty FleetAction)
  (NonEmpty FleetAction)
  (NonEmpty FleetAction)
-> Iso
     (Maybe (NonEmpty FleetAction))
     (Maybe (NonEmpty FleetAction))
     (Maybe (NonEmpty FleetAction))
     (Maybe (NonEmpty FleetAction))
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 AnIso
  (NonEmpty FleetAction)
  (NonEmpty FleetAction)
  (NonEmpty FleetAction)
  (NonEmpty FleetAction)
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The type of game session protection to set on all new instances that are
-- started in the fleet.
--
-- -   __NoProtection__ -- The game session can be terminated during a
--     scale-down event.
--
-- -   __FullProtection__ -- If the game session is in an @ACTIVE@ status,
--     it cannot be terminated during a scale-down event.
fleetAttributes_newGameSessionProtectionPolicy :: Lens.Lens' FleetAttributes (Prelude.Maybe ProtectionPolicy)
fleetAttributes_newGameSessionProtectionPolicy :: (Maybe ProtectionPolicy -> f (Maybe ProtectionPolicy))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_newGameSessionProtectionPolicy = (FleetAttributes -> Maybe ProtectionPolicy)
-> (FleetAttributes -> Maybe ProtectionPolicy -> FleetAttributes)
-> Lens
     FleetAttributes
     FleetAttributes
     (Maybe ProtectionPolicy)
     (Maybe ProtectionPolicy)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe ProtectionPolicy
newGameSessionProtectionPolicy' :: Maybe ProtectionPolicy
$sel:newGameSessionProtectionPolicy':FleetAttributes' :: FleetAttributes -> Maybe ProtectionPolicy
newGameSessionProtectionPolicy'} -> Maybe ProtectionPolicy
newGameSessionProtectionPolicy') (\s :: FleetAttributes
s@FleetAttributes' {} Maybe ProtectionPolicy
a -> FleetAttributes
s {$sel:newGameSessionProtectionPolicy':FleetAttributes' :: Maybe ProtectionPolicy
newGameSessionProtectionPolicy' = Maybe ProtectionPolicy
a} :: FleetAttributes)

-- | A descriptive label that is associated with a fleet. Fleet names do not
-- need to be unique.
fleetAttributes_name :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_name :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_name = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
name :: Maybe Text
$sel:name:FleetAttributes' :: FleetAttributes -> Maybe Text
name} -> Maybe Text
name) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:name:FleetAttributes' :: Maybe Text
name = Maybe Text
a} :: FleetAttributes)

-- | A unique identifier for the Realtime script resource that is deployed on
-- instances in this fleet.
fleetAttributes_scriptId :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_scriptId :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_scriptId = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
scriptId :: Maybe Text
$sel:scriptId:FleetAttributes' :: FleetAttributes -> Maybe Text
scriptId} -> Maybe Text
scriptId) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:scriptId:FleetAttributes' :: Maybe Text
scriptId = Maybe Text
a} :: FleetAttributes)

-- | The Amazon Resource Name
-- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
-- associated with the GameLift script resource that is deployed on
-- instances in this fleet. In a GameLift script ARN, the resource ID
-- matches the @ScriptId@ value.
fleetAttributes_scriptArn :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_scriptArn :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_scriptArn = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
scriptArn :: Maybe Text
$sel:scriptArn:FleetAttributes' :: FleetAttributes -> Maybe Text
scriptArn} -> Maybe Text
scriptArn) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:scriptArn:FleetAttributes' :: Maybe Text
scriptArn = Maybe Text
a} :: FleetAttributes)

-- | Indicates whether a TLS\/SSL certificate was generated for the fleet.
fleetAttributes_certificateConfiguration :: Lens.Lens' FleetAttributes (Prelude.Maybe CertificateConfiguration)
fleetAttributes_certificateConfiguration :: (Maybe CertificateConfiguration
 -> f (Maybe CertificateConfiguration))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_certificateConfiguration = (FleetAttributes -> Maybe CertificateConfiguration)
-> (FleetAttributes
    -> Maybe CertificateConfiguration -> FleetAttributes)
-> Lens
     FleetAttributes
     FleetAttributes
     (Maybe CertificateConfiguration)
     (Maybe CertificateConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe CertificateConfiguration
certificateConfiguration :: Maybe CertificateConfiguration
$sel:certificateConfiguration:FleetAttributes' :: FleetAttributes -> Maybe CertificateConfiguration
certificateConfiguration} -> Maybe CertificateConfiguration
certificateConfiguration) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe CertificateConfiguration
a -> FleetAttributes
s {$sel:certificateConfiguration:FleetAttributes' :: Maybe CertificateConfiguration
certificateConfiguration = Maybe CertificateConfiguration
a} :: FleetAttributes)

-- | __This parameter is no longer used.__ Server launch paths are now
-- defined using the fleet\'s RuntimeConfiguration parameter. Requests that
-- use this parameter instead continue to be valid.
fleetAttributes_serverLaunchPath :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_serverLaunchPath :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_serverLaunchPath = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
serverLaunchPath :: Maybe Text
$sel:serverLaunchPath:FleetAttributes' :: FleetAttributes -> Maybe Text
serverLaunchPath} -> Maybe Text
serverLaunchPath) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:serverLaunchPath:FleetAttributes' :: Maybe Text
serverLaunchPath = Maybe Text
a} :: FleetAttributes)

-- | A unique identifier for an AWS IAM role that manages access to your AWS
-- services. With an instance role ARN set, any application that runs on an
-- instance in this fleet can assume the role, including install scripts,
-- server processes, and daemons (background processes). Create a role or
-- look up a role\'s ARN by using the
-- <https://console.aws.amazon.com/iam/ IAM dashboard> in the AWS
-- Management Console. Learn more about using on-box credentials for your
-- game servers at
-- <https://docs.aws.amazon.com/gamelift/latest/developerguide/gamelift-sdk-server-resources.html Access external resources from a game server>.
fleetAttributes_instanceRoleArn :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_instanceRoleArn :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_instanceRoleArn = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
instanceRoleArn :: Maybe Text
$sel:instanceRoleArn:FleetAttributes' :: FleetAttributes -> Maybe Text
instanceRoleArn} -> Maybe Text
instanceRoleArn) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:instanceRoleArn:FleetAttributes' :: Maybe Text
instanceRoleArn = Maybe Text
a} :: FleetAttributes)

-- | Name of a metric group that metrics for this fleet are added to. In
-- Amazon CloudWatch, you can view aggregated metrics for fleets that are
-- in a metric group. A fleet can be included in only one metric group at a
-- time.
fleetAttributes_metricGroups :: Lens.Lens' FleetAttributes (Prelude.Maybe [Prelude.Text])
fleetAttributes_metricGroups :: (Maybe [Text] -> f (Maybe [Text]))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_metricGroups = (FleetAttributes -> Maybe [Text])
-> (FleetAttributes -> Maybe [Text] -> FleetAttributes)
-> Lens
     FleetAttributes FleetAttributes (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe [Text]
metricGroups :: Maybe [Text]
$sel:metricGroups:FleetAttributes' :: FleetAttributes -> Maybe [Text]
metricGroups} -> Maybe [Text]
metricGroups) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe [Text]
a -> FleetAttributes
s {$sel:metricGroups:FleetAttributes' :: Maybe [Text]
metricGroups = Maybe [Text]
a} :: FleetAttributes) ((Maybe [Text] -> f (Maybe [Text]))
 -> FleetAttributes -> f FleetAttributes)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> FleetAttributes
-> f FleetAttributes
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Text] [Text] [Text] [Text]
-> Iso (Maybe [Text]) (Maybe [Text]) (Maybe [Text]) (Maybe [Text])
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 AnIso [Text] [Text] [Text] [Text]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon Resource Name
-- (<https://docs.aws.amazon.com/AmazonS3/latest/dev/s3-arn-format.html ARN>)
-- associated with the GameLift build resource that is deployed on
-- instances in this fleet. In a GameLift build ARN, the resource ID
-- matches the @BuildId@ value.
fleetAttributes_buildArn :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_buildArn :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_buildArn = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
buildArn :: Maybe Text
$sel:buildArn:FleetAttributes' :: FleetAttributes -> Maybe Text
buildArn} -> Maybe Text
buildArn) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:buildArn:FleetAttributes' :: Maybe Text
buildArn = Maybe Text
a} :: FleetAttributes)

-- | A unique identifier for the fleet.
fleetAttributes_fleetId :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_fleetId :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_fleetId = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
fleetId :: Maybe Text
$sel:fleetId:FleetAttributes' :: FleetAttributes -> Maybe Text
fleetId} -> Maybe Text
fleetId) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:fleetId:FleetAttributes' :: Maybe Text
fleetId = Maybe Text
a} :: FleetAttributes)

-- | A human-readable description of the fleet.
fleetAttributes_description :: Lens.Lens' FleetAttributes (Prelude.Maybe Prelude.Text)
fleetAttributes_description :: (Maybe Text -> f (Maybe Text))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_description = (FleetAttributes -> Maybe Text)
-> (FleetAttributes -> Maybe Text -> FleetAttributes)
-> Lens FleetAttributes FleetAttributes (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe Text
description :: Maybe Text
$sel:description:FleetAttributes' :: FleetAttributes -> Maybe Text
description} -> Maybe Text
description) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe Text
a -> FleetAttributes
s {$sel:description:FleetAttributes' :: Maybe Text
description = Maybe Text
a} :: FleetAttributes)

-- | The fleet policy that limits the number of game sessions an individual
-- player can create over a span of time.
fleetAttributes_resourceCreationLimitPolicy :: Lens.Lens' FleetAttributes (Prelude.Maybe ResourceCreationLimitPolicy)
fleetAttributes_resourceCreationLimitPolicy :: (Maybe ResourceCreationLimitPolicy
 -> f (Maybe ResourceCreationLimitPolicy))
-> FleetAttributes -> f FleetAttributes
fleetAttributes_resourceCreationLimitPolicy = (FleetAttributes -> Maybe ResourceCreationLimitPolicy)
-> (FleetAttributes
    -> Maybe ResourceCreationLimitPolicy -> FleetAttributes)
-> Lens
     FleetAttributes
     FleetAttributes
     (Maybe ResourceCreationLimitPolicy)
     (Maybe ResourceCreationLimitPolicy)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\FleetAttributes' {Maybe ResourceCreationLimitPolicy
resourceCreationLimitPolicy :: Maybe ResourceCreationLimitPolicy
$sel:resourceCreationLimitPolicy:FleetAttributes' :: FleetAttributes -> Maybe ResourceCreationLimitPolicy
resourceCreationLimitPolicy} -> Maybe ResourceCreationLimitPolicy
resourceCreationLimitPolicy) (\s :: FleetAttributes
s@FleetAttributes' {} Maybe ResourceCreationLimitPolicy
a -> FleetAttributes
s {$sel:resourceCreationLimitPolicy:FleetAttributes' :: Maybe ResourceCreationLimitPolicy
resourceCreationLimitPolicy = Maybe ResourceCreationLimitPolicy
a} :: FleetAttributes)

instance Core.FromJSON FleetAttributes where
  parseJSON :: Value -> Parser FleetAttributes
parseJSON =
    String
-> (Object -> Parser FleetAttributes)
-> Value
-> Parser FleetAttributes
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"FleetAttributes"
      ( \Object
x ->
          Maybe POSIX
-> Maybe FleetStatus
-> Maybe Text
-> Maybe [Text]
-> Maybe OperatingSystem
-> Maybe Text
-> Maybe Text
-> Maybe FleetType
-> Maybe POSIX
-> Maybe EC2InstanceType
-> Maybe (NonEmpty FleetAction)
-> Maybe ProtectionPolicy
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe CertificateConfiguration
-> Maybe Text
-> Maybe Text
-> Maybe [Text]
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ResourceCreationLimitPolicy
-> FleetAttributes
FleetAttributes'
            (Maybe POSIX
 -> Maybe FleetStatus
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe OperatingSystem
 -> Maybe Text
 -> Maybe Text
 -> Maybe FleetType
 -> Maybe POSIX
 -> Maybe EC2InstanceType
 -> Maybe (NonEmpty FleetAction)
 -> Maybe ProtectionPolicy
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe CertificateConfiguration
 -> Maybe Text
 -> Maybe Text
 -> Maybe [Text]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe ResourceCreationLimitPolicy
 -> FleetAttributes)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe FleetStatus
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe OperatingSystem
      -> Maybe Text
      -> Maybe Text
      -> Maybe FleetType
      -> Maybe POSIX
      -> Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CreationTime")
            Parser
  (Maybe FleetStatus
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe OperatingSystem
   -> Maybe Text
   -> Maybe Text
   -> Maybe FleetType
   -> Maybe POSIX
   -> Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe FleetStatus)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe OperatingSystem
      -> Maybe Text
      -> Maybe Text
      -> Maybe FleetType
      -> Maybe POSIX
      -> Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe FleetStatus)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Status")
            Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe OperatingSystem
   -> Maybe Text
   -> Maybe Text
   -> Maybe FleetType
   -> Maybe POSIX
   -> Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe OperatingSystem
      -> Maybe Text
      -> Maybe Text
      -> Maybe FleetType
      -> Maybe POSIX
      -> Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ServerLaunchParameters")
            Parser
  (Maybe [Text]
   -> Maybe OperatingSystem
   -> Maybe Text
   -> Maybe Text
   -> Maybe FleetType
   -> Maybe POSIX
   -> Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe [Text])
-> Parser
     (Maybe OperatingSystem
      -> Maybe Text
      -> Maybe Text
      -> Maybe FleetType
      -> Maybe POSIX
      -> Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"LogPaths" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe OperatingSystem
   -> Maybe Text
   -> Maybe Text
   -> Maybe FleetType
   -> Maybe POSIX
   -> Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe OperatingSystem)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe FleetType
      -> Maybe POSIX
      -> Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe OperatingSystem)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"OperatingSystem")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe FleetType
   -> Maybe POSIX
   -> Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe FleetType
      -> Maybe POSIX
      -> Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"BuildId")
            Parser
  (Maybe Text
   -> Maybe FleetType
   -> Maybe POSIX
   -> Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe FleetType
      -> Maybe POSIX
      -> Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FleetArn")
            Parser
  (Maybe FleetType
   -> Maybe POSIX
   -> Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe FleetType)
-> Parser
     (Maybe POSIX
      -> Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe FleetType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FleetType")
            Parser
  (Maybe POSIX
   -> Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe POSIX)
-> Parser
     (Maybe EC2InstanceType
      -> Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe POSIX)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"TerminationTime")
            Parser
  (Maybe EC2InstanceType
   -> Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe EC2InstanceType)
-> Parser
     (Maybe (NonEmpty FleetAction)
      -> Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe EC2InstanceType)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InstanceType")
            Parser
  (Maybe (NonEmpty FleetAction)
   -> Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe (NonEmpty FleetAction))
-> Parser
     (Maybe ProtectionPolicy
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (NonEmpty FleetAction))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"StoppedActions")
            Parser
  (Maybe ProtectionPolicy
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe ProtectionPolicy)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ProtectionPolicy)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"NewGameSessionProtectionPolicy")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Name")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ScriptId")
            Parser
  (Maybe Text
   -> Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe CertificateConfiguration
      -> Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ScriptArn")
            Parser
  (Maybe CertificateConfiguration
   -> Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe CertificateConfiguration)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe CertificateConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"CertificateConfiguration")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ServerLaunchPath")
            Parser
  (Maybe Text
   -> Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"InstanceRoleArn")
            Parser
  (Maybe [Text]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe [Text])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Text]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"MetricGroups" Parser (Maybe (Maybe [Text]))
-> Maybe [Text] -> Parser (Maybe [Text])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Text]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe ResourceCreationLimitPolicy
      -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"BuildArn")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe ResourceCreationLimitPolicy
   -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe ResourceCreationLimitPolicy -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"FleetId")
            Parser
  (Maybe Text
   -> Maybe ResourceCreationLimitPolicy -> FleetAttributes)
-> Parser (Maybe Text)
-> Parser (Maybe ResourceCreationLimitPolicy -> FleetAttributes)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Text)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Description")
            Parser (Maybe ResourceCreationLimitPolicy -> FleetAttributes)
-> Parser (Maybe ResourceCreationLimitPolicy)
-> Parser FleetAttributes
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe ResourceCreationLimitPolicy)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ResourceCreationLimitPolicy")
      )

instance Prelude.Hashable FleetAttributes

instance Prelude.NFData FleetAttributes