{-# 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.AppStream.Types.Fleet
-- 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.AppStream.Types.Fleet where

import Amazonka.AppStream.Types.ComputeCapacityStatus
import Amazonka.AppStream.Types.DomainJoinInfo
import Amazonka.AppStream.Types.FleetError
import Amazonka.AppStream.Types.FleetState
import Amazonka.AppStream.Types.FleetType
import Amazonka.AppStream.Types.PlatformType
import Amazonka.AppStream.Types.S3Location
import Amazonka.AppStream.Types.StreamView
import Amazonka.AppStream.Types.VpcConfig
import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude

-- | Describes a fleet.
--
-- /See:/ 'newFleet' smart constructor.
data Fleet = Fleet'
  { -- | The time the fleet was created.
    Fleet -> Maybe POSIX
createdTime :: Prelude.Maybe Data.POSIX,
    -- | The description to display.
    Fleet -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The amount of time that a streaming session remains active after users
    -- disconnect. If they try to reconnect to the streaming session after a
    -- disconnection or network interruption within this time interval, they
    -- are connected to their previous session. Otherwise, they are connected
    -- to a new session with a new streaming instance.
    --
    -- Specify a value between 60 and 360000.
    Fleet -> Maybe Int
disconnectTimeoutInSeconds :: Prelude.Maybe Prelude.Int,
    -- | The fleet name to display.
    Fleet -> Maybe Text
displayName :: Prelude.Maybe Prelude.Text,
    -- | The name of the directory and organizational unit (OU) to use to join
    -- the fleet to a Microsoft Active Directory domain.
    Fleet -> Maybe DomainJoinInfo
domainJoinInfo :: Prelude.Maybe DomainJoinInfo,
    -- | Indicates whether default internet access is enabled for the fleet.
    Fleet -> Maybe Bool
enableDefaultInternetAccess :: Prelude.Maybe Prelude.Bool,
    -- | The fleet errors.
    Fleet -> Maybe [FleetError]
fleetErrors :: Prelude.Maybe [FleetError],
    -- | The fleet type.
    --
    -- [ALWAYS_ON]
    --     Provides users with instant-on access to their apps. You are charged
    --     for all running instances in your fleet, even if no users are
    --     streaming apps.
    --
    -- [ON_DEMAND]
    --     Provide users with access to applications after they connect, which
    --     takes one to two minutes. You are charged for instance streaming
    --     when users are connected and a small hourly fee for instances that
    --     are not streaming apps.
    Fleet -> Maybe FleetType
fleetType :: Prelude.Maybe FleetType,
    -- | The ARN of the IAM role that is applied to the fleet. To assume a role,
    -- the fleet instance calls the AWS Security Token Service (STS)
    -- @AssumeRole@ API operation and passes the ARN of the role to use. The
    -- operation creates a new session with temporary credentials. AppStream
    -- 2.0 retrieves the temporary credentials and creates the
    -- __appstream_machine_role__ credential profile on the instance.
    --
    -- For more information, see
    -- <https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances>
    -- in the /Amazon AppStream 2.0 Administration Guide/.
    Fleet -> Maybe Text
iamRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The amount of time that users can be idle (inactive) before they are
    -- disconnected from their streaming session and the
    -- @DisconnectTimeoutInSeconds@ time interval begins. Users are notified
    -- before they are disconnected due to inactivity. If users try to
    -- reconnect to the streaming session before the time interval specified in
    -- @DisconnectTimeoutInSeconds@ elapses, they are connected to their
    -- previous session. Users are considered idle when they stop providing
    -- keyboard or mouse input during their streaming session. File uploads and
    -- downloads, audio in, audio out, and pixels changing do not qualify as
    -- user activity. If users continue to be idle after the time interval in
    -- @IdleDisconnectTimeoutInSeconds@ elapses, they are disconnected.
    --
    -- To prevent users from being disconnected due to inactivity, specify a
    -- value of 0. Otherwise, specify a value between 60 and 3600. The default
    -- value is 0.
    --
    -- If you enable this feature, we recommend that you specify a value that
    -- corresponds exactly to a whole number of minutes (for example, 60, 120,
    -- and 180). If you don\'t do this, the value is rounded to the nearest
    -- minute. For example, if you specify a value of 70, users are
    -- disconnected after 1 minute of inactivity. If you specify a value that
    -- is at the midpoint between two different minutes, the value is rounded
    -- up. For example, if you specify a value of 90, users are disconnected
    -- after 2 minutes of inactivity.
    Fleet -> Maybe Int
idleDisconnectTimeoutInSeconds :: Prelude.Maybe Prelude.Int,
    -- | The ARN for the public, private, or shared image.
    Fleet -> Maybe Text
imageArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the image used to create the fleet.
    Fleet -> Maybe Text
imageName :: Prelude.Maybe Prelude.Text,
    -- | The maximum number of concurrent sessions for the fleet.
    Fleet -> Maybe Int
maxConcurrentSessions :: Prelude.Maybe Prelude.Int,
    -- | The maximum amount of time that a streaming session can remain active,
    -- in seconds. If users are still connected to a streaming instance five
    -- minutes before this limit is reached, they are prompted to save any open
    -- documents before being disconnected. After this time elapses, the
    -- instance is terminated and replaced by a new instance.
    --
    -- Specify a value between 600 and 360000.
    Fleet -> Maybe Int
maxUserDurationInSeconds :: Prelude.Maybe Prelude.Int,
    -- | The platform of the fleet.
    Fleet -> Maybe PlatformType
platform :: Prelude.Maybe PlatformType,
    -- | The S3 location of the session scripts configuration zip file. This only
    -- applies to Elastic fleets.
    Fleet -> Maybe S3Location
sessionScriptS3Location :: Prelude.Maybe S3Location,
    -- | The AppStream 2.0 view that is displayed to your users when they stream
    -- from the fleet. When @APP@ is specified, only the windows of
    -- applications opened by users display. When @DESKTOP@ is specified, the
    -- standard desktop that is provided by the operating system displays.
    --
    -- The default value is @APP@.
    Fleet -> Maybe StreamView
streamView :: Prelude.Maybe StreamView,
    -- | The USB device filter strings associated with the fleet.
    Fleet -> Maybe [Text]
usbDeviceFilterStrings :: Prelude.Maybe [Prelude.Text],
    -- | The VPC configuration for the fleet.
    Fleet -> Maybe VpcConfig
vpcConfig :: Prelude.Maybe VpcConfig,
    -- | The Amazon Resource Name (ARN) for the fleet.
    Fleet -> Text
arn :: Prelude.Text,
    -- | The name of the fleet.
    Fleet -> Text
name :: Prelude.Text,
    -- | The instance type to use when launching fleet instances. The following
    -- instance types are available:
    --
    -- -   stream.standard.small
    --
    -- -   stream.standard.medium
    --
    -- -   stream.standard.large
    --
    -- -   stream.compute.large
    --
    -- -   stream.compute.xlarge
    --
    -- -   stream.compute.2xlarge
    --
    -- -   stream.compute.4xlarge
    --
    -- -   stream.compute.8xlarge
    --
    -- -   stream.memory.large
    --
    -- -   stream.memory.xlarge
    --
    -- -   stream.memory.2xlarge
    --
    -- -   stream.memory.4xlarge
    --
    -- -   stream.memory.8xlarge
    --
    -- -   stream.memory.z1d.large
    --
    -- -   stream.memory.z1d.xlarge
    --
    -- -   stream.memory.z1d.2xlarge
    --
    -- -   stream.memory.z1d.3xlarge
    --
    -- -   stream.memory.z1d.6xlarge
    --
    -- -   stream.memory.z1d.12xlarge
    --
    -- -   stream.graphics-design.large
    --
    -- -   stream.graphics-design.xlarge
    --
    -- -   stream.graphics-design.2xlarge
    --
    -- -   stream.graphics-design.4xlarge
    --
    -- -   stream.graphics-desktop.2xlarge
    --
    -- -   stream.graphics.g4dn.xlarge
    --
    -- -   stream.graphics.g4dn.2xlarge
    --
    -- -   stream.graphics.g4dn.4xlarge
    --
    -- -   stream.graphics.g4dn.8xlarge
    --
    -- -   stream.graphics.g4dn.12xlarge
    --
    -- -   stream.graphics.g4dn.16xlarge
    --
    -- -   stream.graphics-pro.4xlarge
    --
    -- -   stream.graphics-pro.8xlarge
    --
    -- -   stream.graphics-pro.16xlarge
    Fleet -> Text
instanceType :: Prelude.Text,
    -- | The capacity status for the fleet.
    Fleet -> ComputeCapacityStatus
computeCapacityStatus :: ComputeCapacityStatus,
    -- | The current state for the fleet.
    Fleet -> FleetState
state :: FleetState
  }
  deriving (Fleet -> Fleet -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: Fleet -> Fleet -> Bool
$c/= :: Fleet -> Fleet -> Bool
== :: Fleet -> Fleet -> Bool
$c== :: Fleet -> Fleet -> Bool
Prelude.Eq, ReadPrec [Fleet]
ReadPrec Fleet
Int -> ReadS Fleet
ReadS [Fleet]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [Fleet]
$creadListPrec :: ReadPrec [Fleet]
readPrec :: ReadPrec Fleet
$creadPrec :: ReadPrec Fleet
readList :: ReadS [Fleet]
$creadList :: ReadS [Fleet]
readsPrec :: Int -> ReadS Fleet
$creadsPrec :: Int -> ReadS Fleet
Prelude.Read, Int -> Fleet -> ShowS
[Fleet] -> ShowS
Fleet -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [Fleet] -> ShowS
$cshowList :: [Fleet] -> ShowS
show :: Fleet -> String
$cshow :: Fleet -> String
showsPrec :: Int -> Fleet -> ShowS
$cshowsPrec :: Int -> Fleet -> ShowS
Prelude.Show, forall x. Rep Fleet x -> Fleet
forall x. Fleet -> Rep Fleet x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep Fleet x -> Fleet
$cfrom :: forall x. Fleet -> Rep Fleet x
Prelude.Generic)

-- |
-- Create a value of 'Fleet' 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:
--
-- 'createdTime', 'fleet_createdTime' - The time the fleet was created.
--
-- 'description', 'fleet_description' - The description to display.
--
-- 'disconnectTimeoutInSeconds', 'fleet_disconnectTimeoutInSeconds' - The amount of time that a streaming session remains active after users
-- disconnect. If they try to reconnect to the streaming session after a
-- disconnection or network interruption within this time interval, they
-- are connected to their previous session. Otherwise, they are connected
-- to a new session with a new streaming instance.
--
-- Specify a value between 60 and 360000.
--
-- 'displayName', 'fleet_displayName' - The fleet name to display.
--
-- 'domainJoinInfo', 'fleet_domainJoinInfo' - The name of the directory and organizational unit (OU) to use to join
-- the fleet to a Microsoft Active Directory domain.
--
-- 'enableDefaultInternetAccess', 'fleet_enableDefaultInternetAccess' - Indicates whether default internet access is enabled for the fleet.
--
-- 'fleetErrors', 'fleet_fleetErrors' - The fleet errors.
--
-- 'fleetType', 'fleet_fleetType' - The fleet type.
--
-- [ALWAYS_ON]
--     Provides users with instant-on access to their apps. You are charged
--     for all running instances in your fleet, even if no users are
--     streaming apps.
--
-- [ON_DEMAND]
--     Provide users with access to applications after they connect, which
--     takes one to two minutes. You are charged for instance streaming
--     when users are connected and a small hourly fee for instances that
--     are not streaming apps.
--
-- 'iamRoleArn', 'fleet_iamRoleArn' - The ARN of the IAM role that is applied to the fleet. To assume a role,
-- the fleet instance calls the AWS Security Token Service (STS)
-- @AssumeRole@ API operation and passes the ARN of the role to use. The
-- operation creates a new session with temporary credentials. AppStream
-- 2.0 retrieves the temporary credentials and creates the
-- __appstream_machine_role__ credential profile on the instance.
--
-- For more information, see
-- <https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances>
-- in the /Amazon AppStream 2.0 Administration Guide/.
--
-- 'idleDisconnectTimeoutInSeconds', 'fleet_idleDisconnectTimeoutInSeconds' - The amount of time that users can be idle (inactive) before they are
-- disconnected from their streaming session and the
-- @DisconnectTimeoutInSeconds@ time interval begins. Users are notified
-- before they are disconnected due to inactivity. If users try to
-- reconnect to the streaming session before the time interval specified in
-- @DisconnectTimeoutInSeconds@ elapses, they are connected to their
-- previous session. Users are considered idle when they stop providing
-- keyboard or mouse input during their streaming session. File uploads and
-- downloads, audio in, audio out, and pixels changing do not qualify as
-- user activity. If users continue to be idle after the time interval in
-- @IdleDisconnectTimeoutInSeconds@ elapses, they are disconnected.
--
-- To prevent users from being disconnected due to inactivity, specify a
-- value of 0. Otherwise, specify a value between 60 and 3600. The default
-- value is 0.
--
-- If you enable this feature, we recommend that you specify a value that
-- corresponds exactly to a whole number of minutes (for example, 60, 120,
-- and 180). If you don\'t do this, the value is rounded to the nearest
-- minute. For example, if you specify a value of 70, users are
-- disconnected after 1 minute of inactivity. If you specify a value that
-- is at the midpoint between two different minutes, the value is rounded
-- up. For example, if you specify a value of 90, users are disconnected
-- after 2 minutes of inactivity.
--
-- 'imageArn', 'fleet_imageArn' - The ARN for the public, private, or shared image.
--
-- 'imageName', 'fleet_imageName' - The name of the image used to create the fleet.
--
-- 'maxConcurrentSessions', 'fleet_maxConcurrentSessions' - The maximum number of concurrent sessions for the fleet.
--
-- 'maxUserDurationInSeconds', 'fleet_maxUserDurationInSeconds' - The maximum amount of time that a streaming session can remain active,
-- in seconds. If users are still connected to a streaming instance five
-- minutes before this limit is reached, they are prompted to save any open
-- documents before being disconnected. After this time elapses, the
-- instance is terminated and replaced by a new instance.
--
-- Specify a value between 600 and 360000.
--
-- 'platform', 'fleet_platform' - The platform of the fleet.
--
-- 'sessionScriptS3Location', 'fleet_sessionScriptS3Location' - The S3 location of the session scripts configuration zip file. This only
-- applies to Elastic fleets.
--
-- 'streamView', 'fleet_streamView' - The AppStream 2.0 view that is displayed to your users when they stream
-- from the fleet. When @APP@ is specified, only the windows of
-- applications opened by users display. When @DESKTOP@ is specified, the
-- standard desktop that is provided by the operating system displays.
--
-- The default value is @APP@.
--
-- 'usbDeviceFilterStrings', 'fleet_usbDeviceFilterStrings' - The USB device filter strings associated with the fleet.
--
-- 'vpcConfig', 'fleet_vpcConfig' - The VPC configuration for the fleet.
--
-- 'arn', 'fleet_arn' - The Amazon Resource Name (ARN) for the fleet.
--
-- 'name', 'fleet_name' - The name of the fleet.
--
-- 'instanceType', 'fleet_instanceType' - The instance type to use when launching fleet instances. The following
-- instance types are available:
--
-- -   stream.standard.small
--
-- -   stream.standard.medium
--
-- -   stream.standard.large
--
-- -   stream.compute.large
--
-- -   stream.compute.xlarge
--
-- -   stream.compute.2xlarge
--
-- -   stream.compute.4xlarge
--
-- -   stream.compute.8xlarge
--
-- -   stream.memory.large
--
-- -   stream.memory.xlarge
--
-- -   stream.memory.2xlarge
--
-- -   stream.memory.4xlarge
--
-- -   stream.memory.8xlarge
--
-- -   stream.memory.z1d.large
--
-- -   stream.memory.z1d.xlarge
--
-- -   stream.memory.z1d.2xlarge
--
-- -   stream.memory.z1d.3xlarge
--
-- -   stream.memory.z1d.6xlarge
--
-- -   stream.memory.z1d.12xlarge
--
-- -   stream.graphics-design.large
--
-- -   stream.graphics-design.xlarge
--
-- -   stream.graphics-design.2xlarge
--
-- -   stream.graphics-design.4xlarge
--
-- -   stream.graphics-desktop.2xlarge
--
-- -   stream.graphics.g4dn.xlarge
--
-- -   stream.graphics.g4dn.2xlarge
--
-- -   stream.graphics.g4dn.4xlarge
--
-- -   stream.graphics.g4dn.8xlarge
--
-- -   stream.graphics.g4dn.12xlarge
--
-- -   stream.graphics.g4dn.16xlarge
--
-- -   stream.graphics-pro.4xlarge
--
-- -   stream.graphics-pro.8xlarge
--
-- -   stream.graphics-pro.16xlarge
--
-- 'computeCapacityStatus', 'fleet_computeCapacityStatus' - The capacity status for the fleet.
--
-- 'state', 'fleet_state' - The current state for the fleet.
newFleet ::
  -- | 'arn'
  Prelude.Text ->
  -- | 'name'
  Prelude.Text ->
  -- | 'instanceType'
  Prelude.Text ->
  -- | 'computeCapacityStatus'
  ComputeCapacityStatus ->
  -- | 'state'
  FleetState ->
  Fleet
newFleet :: Text
-> Text -> Text -> ComputeCapacityStatus -> FleetState -> Fleet
newFleet
  Text
pArn_
  Text
pName_
  Text
pInstanceType_
  ComputeCapacityStatus
pComputeCapacityStatus_
  FleetState
pState_ =
    Fleet'
      { $sel:createdTime:Fleet' :: Maybe POSIX
createdTime = forall a. Maybe a
Prelude.Nothing,
        $sel:description:Fleet' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
        $sel:disconnectTimeoutInSeconds:Fleet' :: Maybe Int
disconnectTimeoutInSeconds = forall a. Maybe a
Prelude.Nothing,
        $sel:displayName:Fleet' :: Maybe Text
displayName = forall a. Maybe a
Prelude.Nothing,
        $sel:domainJoinInfo:Fleet' :: Maybe DomainJoinInfo
domainJoinInfo = forall a. Maybe a
Prelude.Nothing,
        $sel:enableDefaultInternetAccess:Fleet' :: Maybe Bool
enableDefaultInternetAccess = forall a. Maybe a
Prelude.Nothing,
        $sel:fleetErrors:Fleet' :: Maybe [FleetError]
fleetErrors = forall a. Maybe a
Prelude.Nothing,
        $sel:fleetType:Fleet' :: Maybe FleetType
fleetType = forall a. Maybe a
Prelude.Nothing,
        $sel:iamRoleArn:Fleet' :: Maybe Text
iamRoleArn = forall a. Maybe a
Prelude.Nothing,
        $sel:idleDisconnectTimeoutInSeconds:Fleet' :: Maybe Int
idleDisconnectTimeoutInSeconds = forall a. Maybe a
Prelude.Nothing,
        $sel:imageArn:Fleet' :: Maybe Text
imageArn = forall a. Maybe a
Prelude.Nothing,
        $sel:imageName:Fleet' :: Maybe Text
imageName = forall a. Maybe a
Prelude.Nothing,
        $sel:maxConcurrentSessions:Fleet' :: Maybe Int
maxConcurrentSessions = forall a. Maybe a
Prelude.Nothing,
        $sel:maxUserDurationInSeconds:Fleet' :: Maybe Int
maxUserDurationInSeconds = forall a. Maybe a
Prelude.Nothing,
        $sel:platform:Fleet' :: Maybe PlatformType
platform = forall a. Maybe a
Prelude.Nothing,
        $sel:sessionScriptS3Location:Fleet' :: Maybe S3Location
sessionScriptS3Location = forall a. Maybe a
Prelude.Nothing,
        $sel:streamView:Fleet' :: Maybe StreamView
streamView = forall a. Maybe a
Prelude.Nothing,
        $sel:usbDeviceFilterStrings:Fleet' :: Maybe [Text]
usbDeviceFilterStrings = forall a. Maybe a
Prelude.Nothing,
        $sel:vpcConfig:Fleet' :: Maybe VpcConfig
vpcConfig = forall a. Maybe a
Prelude.Nothing,
        $sel:arn:Fleet' :: Text
arn = Text
pArn_,
        $sel:name:Fleet' :: Text
name = Text
pName_,
        $sel:instanceType:Fleet' :: Text
instanceType = Text
pInstanceType_,
        $sel:computeCapacityStatus:Fleet' :: ComputeCapacityStatus
computeCapacityStatus = ComputeCapacityStatus
pComputeCapacityStatus_,
        $sel:state:Fleet' :: FleetState
state = FleetState
pState_
      }

-- | The time the fleet was created.
fleet_createdTime :: Lens.Lens' Fleet (Prelude.Maybe Prelude.UTCTime)
fleet_createdTime :: Lens' Fleet (Maybe UTCTime)
fleet_createdTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe POSIX
createdTime :: Maybe POSIX
$sel:createdTime:Fleet' :: Fleet -> Maybe POSIX
createdTime} -> Maybe POSIX
createdTime) (\s :: Fleet
s@Fleet' {} Maybe POSIX
a -> Fleet
s {$sel:createdTime:Fleet' :: Maybe POSIX
createdTime = Maybe POSIX
a} :: Fleet) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The description to display.
fleet_description :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Text)
fleet_description :: Lens' Fleet (Maybe Text)
fleet_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Text
description :: Maybe Text
$sel:description:Fleet' :: Fleet -> Maybe Text
description} -> Maybe Text
description) (\s :: Fleet
s@Fleet' {} Maybe Text
a -> Fleet
s {$sel:description:Fleet' :: Maybe Text
description = Maybe Text
a} :: Fleet)

-- | The amount of time that a streaming session remains active after users
-- disconnect. If they try to reconnect to the streaming session after a
-- disconnection or network interruption within this time interval, they
-- are connected to their previous session. Otherwise, they are connected
-- to a new session with a new streaming instance.
--
-- Specify a value between 60 and 360000.
fleet_disconnectTimeoutInSeconds :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Int)
fleet_disconnectTimeoutInSeconds :: Lens' Fleet (Maybe Int)
fleet_disconnectTimeoutInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Int
disconnectTimeoutInSeconds :: Maybe Int
$sel:disconnectTimeoutInSeconds:Fleet' :: Fleet -> Maybe Int
disconnectTimeoutInSeconds} -> Maybe Int
disconnectTimeoutInSeconds) (\s :: Fleet
s@Fleet' {} Maybe Int
a -> Fleet
s {$sel:disconnectTimeoutInSeconds:Fleet' :: Maybe Int
disconnectTimeoutInSeconds = Maybe Int
a} :: Fleet)

-- | The fleet name to display.
fleet_displayName :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Text)
fleet_displayName :: Lens' Fleet (Maybe Text)
fleet_displayName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Text
displayName :: Maybe Text
$sel:displayName:Fleet' :: Fleet -> Maybe Text
displayName} -> Maybe Text
displayName) (\s :: Fleet
s@Fleet' {} Maybe Text
a -> Fleet
s {$sel:displayName:Fleet' :: Maybe Text
displayName = Maybe Text
a} :: Fleet)

-- | The name of the directory and organizational unit (OU) to use to join
-- the fleet to a Microsoft Active Directory domain.
fleet_domainJoinInfo :: Lens.Lens' Fleet (Prelude.Maybe DomainJoinInfo)
fleet_domainJoinInfo :: Lens' Fleet (Maybe DomainJoinInfo)
fleet_domainJoinInfo = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe DomainJoinInfo
domainJoinInfo :: Maybe DomainJoinInfo
$sel:domainJoinInfo:Fleet' :: Fleet -> Maybe DomainJoinInfo
domainJoinInfo} -> Maybe DomainJoinInfo
domainJoinInfo) (\s :: Fleet
s@Fleet' {} Maybe DomainJoinInfo
a -> Fleet
s {$sel:domainJoinInfo:Fleet' :: Maybe DomainJoinInfo
domainJoinInfo = Maybe DomainJoinInfo
a} :: Fleet)

-- | Indicates whether default internet access is enabled for the fleet.
fleet_enableDefaultInternetAccess :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Bool)
fleet_enableDefaultInternetAccess :: Lens' Fleet (Maybe Bool)
fleet_enableDefaultInternetAccess = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Bool
enableDefaultInternetAccess :: Maybe Bool
$sel:enableDefaultInternetAccess:Fleet' :: Fleet -> Maybe Bool
enableDefaultInternetAccess} -> Maybe Bool
enableDefaultInternetAccess) (\s :: Fleet
s@Fleet' {} Maybe Bool
a -> Fleet
s {$sel:enableDefaultInternetAccess:Fleet' :: Maybe Bool
enableDefaultInternetAccess = Maybe Bool
a} :: Fleet)

-- | The fleet errors.
fleet_fleetErrors :: Lens.Lens' Fleet (Prelude.Maybe [FleetError])
fleet_fleetErrors :: Lens' Fleet (Maybe [FleetError])
fleet_fleetErrors = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe [FleetError]
fleetErrors :: Maybe [FleetError]
$sel:fleetErrors:Fleet' :: Fleet -> Maybe [FleetError]
fleetErrors} -> Maybe [FleetError]
fleetErrors) (\s :: Fleet
s@Fleet' {} Maybe [FleetError]
a -> Fleet
s {$sel:fleetErrors:Fleet' :: Maybe [FleetError]
fleetErrors = Maybe [FleetError]
a} :: Fleet) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The fleet type.
--
-- [ALWAYS_ON]
--     Provides users with instant-on access to their apps. You are charged
--     for all running instances in your fleet, even if no users are
--     streaming apps.
--
-- [ON_DEMAND]
--     Provide users with access to applications after they connect, which
--     takes one to two minutes. You are charged for instance streaming
--     when users are connected and a small hourly fee for instances that
--     are not streaming apps.
fleet_fleetType :: Lens.Lens' Fleet (Prelude.Maybe FleetType)
fleet_fleetType :: Lens' Fleet (Maybe FleetType)
fleet_fleetType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe FleetType
fleetType :: Maybe FleetType
$sel:fleetType:Fleet' :: Fleet -> Maybe FleetType
fleetType} -> Maybe FleetType
fleetType) (\s :: Fleet
s@Fleet' {} Maybe FleetType
a -> Fleet
s {$sel:fleetType:Fleet' :: Maybe FleetType
fleetType = Maybe FleetType
a} :: Fleet)

-- | The ARN of the IAM role that is applied to the fleet. To assume a role,
-- the fleet instance calls the AWS Security Token Service (STS)
-- @AssumeRole@ API operation and passes the ARN of the role to use. The
-- operation creates a new session with temporary credentials. AppStream
-- 2.0 retrieves the temporary credentials and creates the
-- __appstream_machine_role__ credential profile on the instance.
--
-- For more information, see
-- <https://docs.aws.amazon.com/appstream2/latest/developerguide/using-iam-roles-to-grant-permissions-to-applications-scripts-streaming-instances.html Using an IAM Role to Grant Permissions to Applications and Scripts Running on AppStream 2.0 Streaming Instances>
-- in the /Amazon AppStream 2.0 Administration Guide/.
fleet_iamRoleArn :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Text)
fleet_iamRoleArn :: Lens' Fleet (Maybe Text)
fleet_iamRoleArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Text
iamRoleArn :: Maybe Text
$sel:iamRoleArn:Fleet' :: Fleet -> Maybe Text
iamRoleArn} -> Maybe Text
iamRoleArn) (\s :: Fleet
s@Fleet' {} Maybe Text
a -> Fleet
s {$sel:iamRoleArn:Fleet' :: Maybe Text
iamRoleArn = Maybe Text
a} :: Fleet)

-- | The amount of time that users can be idle (inactive) before they are
-- disconnected from their streaming session and the
-- @DisconnectTimeoutInSeconds@ time interval begins. Users are notified
-- before they are disconnected due to inactivity. If users try to
-- reconnect to the streaming session before the time interval specified in
-- @DisconnectTimeoutInSeconds@ elapses, they are connected to their
-- previous session. Users are considered idle when they stop providing
-- keyboard or mouse input during their streaming session. File uploads and
-- downloads, audio in, audio out, and pixels changing do not qualify as
-- user activity. If users continue to be idle after the time interval in
-- @IdleDisconnectTimeoutInSeconds@ elapses, they are disconnected.
--
-- To prevent users from being disconnected due to inactivity, specify a
-- value of 0. Otherwise, specify a value between 60 and 3600. The default
-- value is 0.
--
-- If you enable this feature, we recommend that you specify a value that
-- corresponds exactly to a whole number of minutes (for example, 60, 120,
-- and 180). If you don\'t do this, the value is rounded to the nearest
-- minute. For example, if you specify a value of 70, users are
-- disconnected after 1 minute of inactivity. If you specify a value that
-- is at the midpoint between two different minutes, the value is rounded
-- up. For example, if you specify a value of 90, users are disconnected
-- after 2 minutes of inactivity.
fleet_idleDisconnectTimeoutInSeconds :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Int)
fleet_idleDisconnectTimeoutInSeconds :: Lens' Fleet (Maybe Int)
fleet_idleDisconnectTimeoutInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Int
idleDisconnectTimeoutInSeconds :: Maybe Int
$sel:idleDisconnectTimeoutInSeconds:Fleet' :: Fleet -> Maybe Int
idleDisconnectTimeoutInSeconds} -> Maybe Int
idleDisconnectTimeoutInSeconds) (\s :: Fleet
s@Fleet' {} Maybe Int
a -> Fleet
s {$sel:idleDisconnectTimeoutInSeconds:Fleet' :: Maybe Int
idleDisconnectTimeoutInSeconds = Maybe Int
a} :: Fleet)

-- | The ARN for the public, private, or shared image.
fleet_imageArn :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Text)
fleet_imageArn :: Lens' Fleet (Maybe Text)
fleet_imageArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Text
imageArn :: Maybe Text
$sel:imageArn:Fleet' :: Fleet -> Maybe Text
imageArn} -> Maybe Text
imageArn) (\s :: Fleet
s@Fleet' {} Maybe Text
a -> Fleet
s {$sel:imageArn:Fleet' :: Maybe Text
imageArn = Maybe Text
a} :: Fleet)

-- | The name of the image used to create the fleet.
fleet_imageName :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Text)
fleet_imageName :: Lens' Fleet (Maybe Text)
fleet_imageName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Text
imageName :: Maybe Text
$sel:imageName:Fleet' :: Fleet -> Maybe Text
imageName} -> Maybe Text
imageName) (\s :: Fleet
s@Fleet' {} Maybe Text
a -> Fleet
s {$sel:imageName:Fleet' :: Maybe Text
imageName = Maybe Text
a} :: Fleet)

-- | The maximum number of concurrent sessions for the fleet.
fleet_maxConcurrentSessions :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Int)
fleet_maxConcurrentSessions :: Lens' Fleet (Maybe Int)
fleet_maxConcurrentSessions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Int
maxConcurrentSessions :: Maybe Int
$sel:maxConcurrentSessions:Fleet' :: Fleet -> Maybe Int
maxConcurrentSessions} -> Maybe Int
maxConcurrentSessions) (\s :: Fleet
s@Fleet' {} Maybe Int
a -> Fleet
s {$sel:maxConcurrentSessions:Fleet' :: Maybe Int
maxConcurrentSessions = Maybe Int
a} :: Fleet)

-- | The maximum amount of time that a streaming session can remain active,
-- in seconds. If users are still connected to a streaming instance five
-- minutes before this limit is reached, they are prompted to save any open
-- documents before being disconnected. After this time elapses, the
-- instance is terminated and replaced by a new instance.
--
-- Specify a value between 600 and 360000.
fleet_maxUserDurationInSeconds :: Lens.Lens' Fleet (Prelude.Maybe Prelude.Int)
fleet_maxUserDurationInSeconds :: Lens' Fleet (Maybe Int)
fleet_maxUserDurationInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe Int
maxUserDurationInSeconds :: Maybe Int
$sel:maxUserDurationInSeconds:Fleet' :: Fleet -> Maybe Int
maxUserDurationInSeconds} -> Maybe Int
maxUserDurationInSeconds) (\s :: Fleet
s@Fleet' {} Maybe Int
a -> Fleet
s {$sel:maxUserDurationInSeconds:Fleet' :: Maybe Int
maxUserDurationInSeconds = Maybe Int
a} :: Fleet)

-- | The platform of the fleet.
fleet_platform :: Lens.Lens' Fleet (Prelude.Maybe PlatformType)
fleet_platform :: Lens' Fleet (Maybe PlatformType)
fleet_platform = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe PlatformType
platform :: Maybe PlatformType
$sel:platform:Fleet' :: Fleet -> Maybe PlatformType
platform} -> Maybe PlatformType
platform) (\s :: Fleet
s@Fleet' {} Maybe PlatformType
a -> Fleet
s {$sel:platform:Fleet' :: Maybe PlatformType
platform = Maybe PlatformType
a} :: Fleet)

-- | The S3 location of the session scripts configuration zip file. This only
-- applies to Elastic fleets.
fleet_sessionScriptS3Location :: Lens.Lens' Fleet (Prelude.Maybe S3Location)
fleet_sessionScriptS3Location :: Lens' Fleet (Maybe S3Location)
fleet_sessionScriptS3Location = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe S3Location
sessionScriptS3Location :: Maybe S3Location
$sel:sessionScriptS3Location:Fleet' :: Fleet -> Maybe S3Location
sessionScriptS3Location} -> Maybe S3Location
sessionScriptS3Location) (\s :: Fleet
s@Fleet' {} Maybe S3Location
a -> Fleet
s {$sel:sessionScriptS3Location:Fleet' :: Maybe S3Location
sessionScriptS3Location = Maybe S3Location
a} :: Fleet)

-- | The AppStream 2.0 view that is displayed to your users when they stream
-- from the fleet. When @APP@ is specified, only the windows of
-- applications opened by users display. When @DESKTOP@ is specified, the
-- standard desktop that is provided by the operating system displays.
--
-- The default value is @APP@.
fleet_streamView :: Lens.Lens' Fleet (Prelude.Maybe StreamView)
fleet_streamView :: Lens' Fleet (Maybe StreamView)
fleet_streamView = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe StreamView
streamView :: Maybe StreamView
$sel:streamView:Fleet' :: Fleet -> Maybe StreamView
streamView} -> Maybe StreamView
streamView) (\s :: Fleet
s@Fleet' {} Maybe StreamView
a -> Fleet
s {$sel:streamView:Fleet' :: Maybe StreamView
streamView = Maybe StreamView
a} :: Fleet)

-- | The USB device filter strings associated with the fleet.
fleet_usbDeviceFilterStrings :: Lens.Lens' Fleet (Prelude.Maybe [Prelude.Text])
fleet_usbDeviceFilterStrings :: Lens' Fleet (Maybe [Text])
fleet_usbDeviceFilterStrings = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe [Text]
usbDeviceFilterStrings :: Maybe [Text]
$sel:usbDeviceFilterStrings:Fleet' :: Fleet -> Maybe [Text]
usbDeviceFilterStrings} -> Maybe [Text]
usbDeviceFilterStrings) (\s :: Fleet
s@Fleet' {} Maybe [Text]
a -> Fleet
s {$sel:usbDeviceFilterStrings:Fleet' :: Maybe [Text]
usbDeviceFilterStrings = Maybe [Text]
a} :: Fleet) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The VPC configuration for the fleet.
fleet_vpcConfig :: Lens.Lens' Fleet (Prelude.Maybe VpcConfig)
fleet_vpcConfig :: Lens' Fleet (Maybe VpcConfig)
fleet_vpcConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Maybe VpcConfig
vpcConfig :: Maybe VpcConfig
$sel:vpcConfig:Fleet' :: Fleet -> Maybe VpcConfig
vpcConfig} -> Maybe VpcConfig
vpcConfig) (\s :: Fleet
s@Fleet' {} Maybe VpcConfig
a -> Fleet
s {$sel:vpcConfig:Fleet' :: Maybe VpcConfig
vpcConfig = Maybe VpcConfig
a} :: Fleet)

-- | The Amazon Resource Name (ARN) for the fleet.
fleet_arn :: Lens.Lens' Fleet Prelude.Text
fleet_arn :: Lens' Fleet Text
fleet_arn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Text
arn :: Text
$sel:arn:Fleet' :: Fleet -> Text
arn} -> Text
arn) (\s :: Fleet
s@Fleet' {} Text
a -> Fleet
s {$sel:arn:Fleet' :: Text
arn = Text
a} :: Fleet)

-- | The name of the fleet.
fleet_name :: Lens.Lens' Fleet Prelude.Text
fleet_name :: Lens' Fleet Text
fleet_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Text
name :: Text
$sel:name:Fleet' :: Fleet -> Text
name} -> Text
name) (\s :: Fleet
s@Fleet' {} Text
a -> Fleet
s {$sel:name:Fleet' :: Text
name = Text
a} :: Fleet)

-- | The instance type to use when launching fleet instances. The following
-- instance types are available:
--
-- -   stream.standard.small
--
-- -   stream.standard.medium
--
-- -   stream.standard.large
--
-- -   stream.compute.large
--
-- -   stream.compute.xlarge
--
-- -   stream.compute.2xlarge
--
-- -   stream.compute.4xlarge
--
-- -   stream.compute.8xlarge
--
-- -   stream.memory.large
--
-- -   stream.memory.xlarge
--
-- -   stream.memory.2xlarge
--
-- -   stream.memory.4xlarge
--
-- -   stream.memory.8xlarge
--
-- -   stream.memory.z1d.large
--
-- -   stream.memory.z1d.xlarge
--
-- -   stream.memory.z1d.2xlarge
--
-- -   stream.memory.z1d.3xlarge
--
-- -   stream.memory.z1d.6xlarge
--
-- -   stream.memory.z1d.12xlarge
--
-- -   stream.graphics-design.large
--
-- -   stream.graphics-design.xlarge
--
-- -   stream.graphics-design.2xlarge
--
-- -   stream.graphics-design.4xlarge
--
-- -   stream.graphics-desktop.2xlarge
--
-- -   stream.graphics.g4dn.xlarge
--
-- -   stream.graphics.g4dn.2xlarge
--
-- -   stream.graphics.g4dn.4xlarge
--
-- -   stream.graphics.g4dn.8xlarge
--
-- -   stream.graphics.g4dn.12xlarge
--
-- -   stream.graphics.g4dn.16xlarge
--
-- -   stream.graphics-pro.4xlarge
--
-- -   stream.graphics-pro.8xlarge
--
-- -   stream.graphics-pro.16xlarge
fleet_instanceType :: Lens.Lens' Fleet Prelude.Text
fleet_instanceType :: Lens' Fleet Text
fleet_instanceType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {Text
instanceType :: Text
$sel:instanceType:Fleet' :: Fleet -> Text
instanceType} -> Text
instanceType) (\s :: Fleet
s@Fleet' {} Text
a -> Fleet
s {$sel:instanceType:Fleet' :: Text
instanceType = Text
a} :: Fleet)

-- | The capacity status for the fleet.
fleet_computeCapacityStatus :: Lens.Lens' Fleet ComputeCapacityStatus
fleet_computeCapacityStatus :: Lens' Fleet ComputeCapacityStatus
fleet_computeCapacityStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {ComputeCapacityStatus
computeCapacityStatus :: ComputeCapacityStatus
$sel:computeCapacityStatus:Fleet' :: Fleet -> ComputeCapacityStatus
computeCapacityStatus} -> ComputeCapacityStatus
computeCapacityStatus) (\s :: Fleet
s@Fleet' {} ComputeCapacityStatus
a -> Fleet
s {$sel:computeCapacityStatus:Fleet' :: ComputeCapacityStatus
computeCapacityStatus = ComputeCapacityStatus
a} :: Fleet)

-- | The current state for the fleet.
fleet_state :: Lens.Lens' Fleet FleetState
fleet_state :: Lens' Fleet FleetState
fleet_state = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\Fleet' {FleetState
state :: FleetState
$sel:state:Fleet' :: Fleet -> FleetState
state} -> FleetState
state) (\s :: Fleet
s@Fleet' {} FleetState
a -> Fleet
s {$sel:state:Fleet' :: FleetState
state = FleetState
a} :: Fleet)

instance Data.FromJSON Fleet where
  parseJSON :: Value -> Parser Fleet
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"Fleet"
      ( \Object
x ->
          Maybe POSIX
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe DomainJoinInfo
-> Maybe Bool
-> Maybe [FleetError]
-> Maybe FleetType
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Int
-> Maybe PlatformType
-> Maybe S3Location
-> Maybe StreamView
-> Maybe [Text]
-> Maybe VpcConfig
-> Text
-> Text
-> Text
-> ComputeCapacityStatus
-> FleetState
-> Fleet
Fleet'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"CreatedTime")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Description")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DisconnectTimeoutInSeconds")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DisplayName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DomainJoinInfo")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"EnableDefaultInternetAccess")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FleetErrors" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"FleetType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"IamRoleArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"IdleDisconnectTimeoutInSeconds")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ImageArn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ImageName")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MaxConcurrentSessions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"MaxUserDurationInSeconds")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"Platform")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"SessionScriptS3Location")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"StreamView")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"UsbDeviceFilterStrings"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"VpcConfig")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Arn")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"InstanceType")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"ComputeCapacityStatus")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"State")
      )

instance Prelude.Hashable Fleet where
  hashWithSalt :: Int -> Fleet -> Int
hashWithSalt Int
_salt Fleet' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [FleetError]
Maybe Text
Maybe POSIX
Maybe DomainJoinInfo
Maybe FleetType
Maybe PlatformType
Maybe S3Location
Maybe StreamView
Maybe VpcConfig
Text
ComputeCapacityStatus
FleetState
state :: FleetState
computeCapacityStatus :: ComputeCapacityStatus
instanceType :: Text
name :: Text
arn :: Text
vpcConfig :: Maybe VpcConfig
usbDeviceFilterStrings :: Maybe [Text]
streamView :: Maybe StreamView
sessionScriptS3Location :: Maybe S3Location
platform :: Maybe PlatformType
maxUserDurationInSeconds :: Maybe Int
maxConcurrentSessions :: Maybe Int
imageName :: Maybe Text
imageArn :: Maybe Text
idleDisconnectTimeoutInSeconds :: Maybe Int
iamRoleArn :: Maybe Text
fleetType :: Maybe FleetType
fleetErrors :: Maybe [FleetError]
enableDefaultInternetAccess :: Maybe Bool
domainJoinInfo :: Maybe DomainJoinInfo
displayName :: Maybe Text
disconnectTimeoutInSeconds :: Maybe Int
description :: Maybe Text
createdTime :: Maybe POSIX
$sel:state:Fleet' :: Fleet -> FleetState
$sel:computeCapacityStatus:Fleet' :: Fleet -> ComputeCapacityStatus
$sel:instanceType:Fleet' :: Fleet -> Text
$sel:name:Fleet' :: Fleet -> Text
$sel:arn:Fleet' :: Fleet -> Text
$sel:vpcConfig:Fleet' :: Fleet -> Maybe VpcConfig
$sel:usbDeviceFilterStrings:Fleet' :: Fleet -> Maybe [Text]
$sel:streamView:Fleet' :: Fleet -> Maybe StreamView
$sel:sessionScriptS3Location:Fleet' :: Fleet -> Maybe S3Location
$sel:platform:Fleet' :: Fleet -> Maybe PlatformType
$sel:maxUserDurationInSeconds:Fleet' :: Fleet -> Maybe Int
$sel:maxConcurrentSessions:Fleet' :: Fleet -> Maybe Int
$sel:imageName:Fleet' :: Fleet -> Maybe Text
$sel:imageArn:Fleet' :: Fleet -> Maybe Text
$sel:idleDisconnectTimeoutInSeconds:Fleet' :: Fleet -> Maybe Int
$sel:iamRoleArn:Fleet' :: Fleet -> Maybe Text
$sel:fleetType:Fleet' :: Fleet -> Maybe FleetType
$sel:fleetErrors:Fleet' :: Fleet -> Maybe [FleetError]
$sel:enableDefaultInternetAccess:Fleet' :: Fleet -> Maybe Bool
$sel:domainJoinInfo:Fleet' :: Fleet -> Maybe DomainJoinInfo
$sel:displayName:Fleet' :: Fleet -> Maybe Text
$sel:disconnectTimeoutInSeconds:Fleet' :: Fleet -> Maybe Int
$sel:description:Fleet' :: Fleet -> Maybe Text
$sel:createdTime:Fleet' :: Fleet -> Maybe POSIX
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe POSIX
createdTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
disconnectTimeoutInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
displayName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DomainJoinInfo
domainJoinInfo
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
enableDefaultInternetAccess
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [FleetError]
fleetErrors
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FleetType
fleetType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
iamRoleArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
idleDisconnectTimeoutInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
imageArn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
imageName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxConcurrentSessions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
maxUserDurationInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe PlatformType
platform
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe S3Location
sessionScriptS3Location
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe StreamView
streamView
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
usbDeviceFilterStrings
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VpcConfig
vpcConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
arn
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ComputeCapacityStatus
computeCapacityStatus
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` FleetState
state

instance Prelude.NFData Fleet where
  rnf :: Fleet -> ()
rnf Fleet' {Maybe Bool
Maybe Int
Maybe [Text]
Maybe [FleetError]
Maybe Text
Maybe POSIX
Maybe DomainJoinInfo
Maybe FleetType
Maybe PlatformType
Maybe S3Location
Maybe StreamView
Maybe VpcConfig
Text
ComputeCapacityStatus
FleetState
state :: FleetState
computeCapacityStatus :: ComputeCapacityStatus
instanceType :: Text
name :: Text
arn :: Text
vpcConfig :: Maybe VpcConfig
usbDeviceFilterStrings :: Maybe [Text]
streamView :: Maybe StreamView
sessionScriptS3Location :: Maybe S3Location
platform :: Maybe PlatformType
maxUserDurationInSeconds :: Maybe Int
maxConcurrentSessions :: Maybe Int
imageName :: Maybe Text
imageArn :: Maybe Text
idleDisconnectTimeoutInSeconds :: Maybe Int
iamRoleArn :: Maybe Text
fleetType :: Maybe FleetType
fleetErrors :: Maybe [FleetError]
enableDefaultInternetAccess :: Maybe Bool
domainJoinInfo :: Maybe DomainJoinInfo
displayName :: Maybe Text
disconnectTimeoutInSeconds :: Maybe Int
description :: Maybe Text
createdTime :: Maybe POSIX
$sel:state:Fleet' :: Fleet -> FleetState
$sel:computeCapacityStatus:Fleet' :: Fleet -> ComputeCapacityStatus
$sel:instanceType:Fleet' :: Fleet -> Text
$sel:name:Fleet' :: Fleet -> Text
$sel:arn:Fleet' :: Fleet -> Text
$sel:vpcConfig:Fleet' :: Fleet -> Maybe VpcConfig
$sel:usbDeviceFilterStrings:Fleet' :: Fleet -> Maybe [Text]
$sel:streamView:Fleet' :: Fleet -> Maybe StreamView
$sel:sessionScriptS3Location:Fleet' :: Fleet -> Maybe S3Location
$sel:platform:Fleet' :: Fleet -> Maybe PlatformType
$sel:maxUserDurationInSeconds:Fleet' :: Fleet -> Maybe Int
$sel:maxConcurrentSessions:Fleet' :: Fleet -> Maybe Int
$sel:imageName:Fleet' :: Fleet -> Maybe Text
$sel:imageArn:Fleet' :: Fleet -> Maybe Text
$sel:idleDisconnectTimeoutInSeconds:Fleet' :: Fleet -> Maybe Int
$sel:iamRoleArn:Fleet' :: Fleet -> Maybe Text
$sel:fleetType:Fleet' :: Fleet -> Maybe FleetType
$sel:fleetErrors:Fleet' :: Fleet -> Maybe [FleetError]
$sel:enableDefaultInternetAccess:Fleet' :: Fleet -> Maybe Bool
$sel:domainJoinInfo:Fleet' :: Fleet -> Maybe DomainJoinInfo
$sel:displayName:Fleet' :: Fleet -> Maybe Text
$sel:disconnectTimeoutInSeconds:Fleet' :: Fleet -> Maybe Int
$sel:description:Fleet' :: Fleet -> Maybe Text
$sel:createdTime:Fleet' :: Fleet -> Maybe POSIX
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe POSIX
createdTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
disconnectTimeoutInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
displayName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DomainJoinInfo
domainJoinInfo
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
enableDefaultInternetAccess
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [FleetError]
fleetErrors
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FleetType
fleetType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
iamRoleArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
idleDisconnectTimeoutInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
imageArn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
imageName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxConcurrentSessions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
maxUserDurationInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe PlatformType
platform
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe S3Location
sessionScriptS3Location
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe StreamView
streamView
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
usbDeviceFilterStrings
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VpcConfig
vpcConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
arn
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
instanceType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf
        ComputeCapacityStatus
computeCapacityStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf FleetState
state