{-# 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.Batch.Types.ContainerDetail
-- 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.Batch.Types.ContainerDetail where

import Amazonka.Batch.Types.FargatePlatformConfiguration
import Amazonka.Batch.Types.KeyValuePair
import Amazonka.Batch.Types.LinuxParameters
import Amazonka.Batch.Types.LogConfiguration
import Amazonka.Batch.Types.MountPoint
import Amazonka.Batch.Types.NetworkConfiguration
import Amazonka.Batch.Types.NetworkInterface
import Amazonka.Batch.Types.ResourceRequirement
import Amazonka.Batch.Types.Secret
import Amazonka.Batch.Types.Ulimit
import Amazonka.Batch.Types.Volume
import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | An object representing the details of a container that\'s part of a job.
--
-- /See:/ 'newContainerDetail' smart constructor.
data ContainerDetail = ContainerDetail'
  { -- | The image used to start the container.
    ContainerDetail -> Maybe Text
image :: Prelude.Maybe Prelude.Text,
    -- | The command that\'s passed to the container.
    ContainerDetail -> Maybe [Text]
command :: Prelude.Maybe [Prelude.Text],
    -- | The secrets to pass to the container. For more information, see
    -- <https://docs.aws.amazon.com/batch/latest/userguide/specifying-sensitive-data.html Specifying sensitive data>
    -- in the /Batch User Guide/.
    ContainerDetail -> Maybe [Secret]
secrets :: Prelude.Maybe [Secret],
    -- | The environment variables to pass to a container.
    --
    -- Environment variables must not start with @AWS_BATCH@; this naming
    -- convention is reserved for variables that are set by the Batch service.
    ContainerDetail -> Maybe [KeyValuePair]
environment :: Prelude.Maybe [KeyValuePair],
    -- | The network interfaces associated with the job.
    ContainerDetail -> Maybe [NetworkInterface]
networkInterfaces :: Prelude.Maybe [NetworkInterface],
    -- | The Amazon Resource Name (ARN) of the Amazon ECS task that\'s associated
    -- with the container job. Each container attempt receives a task ARN when
    -- they reach the @STARTING@ status.
    ContainerDetail -> Maybe Text
taskArn :: Prelude.Maybe Prelude.Text,
    -- | A list of @ulimit@ values to set in the container. This parameter maps
    -- to @Ulimits@ in the
    -- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
    -- section of the
    -- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
    -- @--ulimit@ option to
    -- <https://docs.docker.com/engine/reference/run/ docker run>.
    --
    -- This parameter isn\'t applicable to jobs that are running on Fargate
    -- resources.
    ContainerDetail -> Maybe [Ulimit]
ulimits :: Prelude.Maybe [Ulimit],
    -- | The Amazon Resource Name (ARN) of the container instance that the
    -- container is running on.
    ContainerDetail -> Maybe Text
containerInstanceArn :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the execution role that Batch can
    -- assume. For more information, see
    -- <https://docs.aws.amazon.com/batch/latest/userguide/execution-IAM-role.html Batch execution IAM role>
    -- in the /Batch User Guide/.
    ContainerDetail -> Maybe Text
executionRoleArn :: Prelude.Maybe Prelude.Text,
    -- | When this parameter is true, the container is given elevated permissions
    -- on the host container instance (similar to the @root@ user). The default
    -- value is false.
    --
    -- This parameter isn\'t applicable to jobs that are running on Fargate
    -- resources and shouldn\'t be provided, or specified as false.
    ContainerDetail -> Maybe Bool
privileged :: Prelude.Maybe Prelude.Bool,
    -- | The Amazon Resource Name (ARN) associated with the job upon execution.
    ContainerDetail -> Maybe Text
jobRoleArn :: Prelude.Maybe Prelude.Text,
    -- | The type and amount of resources to assign to a container. The supported
    -- resources include @GPU@, @MEMORY@, and @VCPU@.
    ContainerDetail -> Maybe [ResourceRequirement]
resourceRequirements :: Prelude.Maybe [ResourceRequirement],
    -- | The instance type of the underlying host infrastructure of a multi-node
    -- parallel job.
    --
    -- This parameter isn\'t applicable to jobs that are running on Fargate
    -- resources.
    ContainerDetail -> Maybe Text
instanceType :: Prelude.Maybe Prelude.Text,
    -- | For jobs run on EC2 resources that didn\'t specify memory requirements
    -- using @ResourceRequirement@, the number of MiB of memory reserved for
    -- the job. For other jobs, including all run on Fargate resources, see
    -- @resourceRequirements@.
    ContainerDetail -> Maybe Int
memory :: Prelude.Maybe Prelude.Int,
    -- | The user name to use inside the container. This parameter maps to @User@
    -- in the
    -- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
    -- section of the
    -- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
    -- @--user@ option to
    -- <https://docs.docker.com/engine/reference/run/ docker run>.
    ContainerDetail -> Maybe Text
user :: Prelude.Maybe Prelude.Text,
    -- | The log configuration specification for the container.
    --
    -- This parameter maps to @LogConfig@ in the
    -- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
    -- section of the
    -- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
    -- @--log-driver@ option to
    -- <https://docs.docker.com/engine/reference/run/ docker run>. By default,
    -- containers use the same logging driver that the Docker daemon uses.
    -- However, the container might use a different logging driver than the
    -- Docker daemon by specifying a log driver with this parameter in the
    -- container definition. To use a different logging driver for a container,
    -- the log system must be configured properly on the container instance.
    -- Or, alternatively, it must be configured on a different log server for
    -- remote logging options. For more information on the options for
    -- different supported log drivers, see
    -- <https://docs.docker.com/engine/admin/logging/overview/ Configure logging drivers>
    -- in the Docker documentation.
    --
    -- Batch currently supports a subset of the logging drivers available to
    -- the Docker daemon (shown in the LogConfiguration data type). Additional
    -- log drivers might be available in future releases of the Amazon ECS
    -- container agent.
    --
    -- This parameter requires version 1.18 of the Docker Remote API or greater
    -- on your container instance. To check the Docker Remote API version on
    -- your container instance, log into your container instance and run the
    -- following command: @sudo docker version | grep \"Server API version\"@
    --
    -- The Amazon ECS container agent running on a container instance must
    -- register the logging drivers available on that instance with the
    -- @ECS_AVAILABLE_LOGGING_DRIVERS@ environment variable before containers
    -- placed on that instance can use these log configuration options. For
    -- more information, see
    -- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html Amazon ECS Container Agent Configuration>
    -- in the /Amazon Elastic Container Service Developer Guide/.
    ContainerDetail -> Maybe LogConfiguration
logConfiguration :: Prelude.Maybe LogConfiguration,
    -- | Linux-specific modifications that are applied to the container, such as
    -- details for device mappings.
    ContainerDetail -> Maybe LinuxParameters
linuxParameters :: Prelude.Maybe LinuxParameters,
    -- | A short (255 max characters) human-readable string to provide additional
    -- details about a running or stopped container.
    ContainerDetail -> Maybe Text
reason :: Prelude.Maybe Prelude.Text,
    -- | The name of the CloudWatch Logs log stream associated with the
    -- container. The log group for Batch jobs is @\/aws\/batch\/job@. Each
    -- container attempt receives a log stream name when they reach the
    -- @RUNNING@ status.
    ContainerDetail -> Maybe Text
logStreamName :: Prelude.Maybe Prelude.Text,
    -- | The mount points for data volumes in your container.
    ContainerDetail -> Maybe [MountPoint]
mountPoints :: Prelude.Maybe [MountPoint],
    -- | The exit code to return upon completion.
    ContainerDetail -> Maybe Int
exitCode :: Prelude.Maybe Prelude.Int,
    -- | The platform configuration for jobs that are running on Fargate
    -- resources. Jobs that are running on EC2 resources must not specify this
    -- parameter.
    ContainerDetail -> Maybe FargatePlatformConfiguration
fargatePlatformConfiguration :: Prelude.Maybe FargatePlatformConfiguration,
    -- | The number of vCPUs reserved for the container. For jobs that run on EC2
    -- resources, you can specify the vCPU requirement for the job using
    -- @resourceRequirements@, but you can\'t specify the vCPU requirements in
    -- both the @vcpus@ and @resourceRequirement@ object. This parameter maps
    -- to @CpuShares@ in the
    -- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
    -- section of the
    -- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
    -- @--cpu-shares@ option to
    -- <https://docs.docker.com/engine/reference/run/ docker run>. Each vCPU is
    -- equivalent to 1,024 CPU shares. You must specify at least one vCPU. This
    -- is required but can be specified in several places. It must be specified
    -- for each node at least once.
    --
    -- This parameter isn\'t applicable to jobs that run on Fargate resources.
    -- For jobs that run on Fargate resources, you must specify the vCPU
    -- requirement for the job using @resourceRequirements@.
    ContainerDetail -> Maybe Int
vcpus :: Prelude.Maybe Prelude.Int,
    -- | When this parameter is true, the container is given read-only access to
    -- its root file system. This parameter maps to @ReadonlyRootfs@ in the
    -- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
    -- section of the
    -- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
    -- @--read-only@ option to
    -- <https://docs.docker.com/engine/reference/commandline/run/ docker run> .
    ContainerDetail -> Maybe Bool
readonlyRootFilesystem :: Prelude.Maybe Prelude.Bool,
    -- | A list of volumes associated with the job.
    ContainerDetail -> Maybe [Volume]
volumes :: Prelude.Maybe [Volume],
    -- | The network configuration for jobs that are running on Fargate
    -- resources. Jobs that are running on EC2 resources must not specify this
    -- parameter.
    ContainerDetail -> Maybe NetworkConfiguration
networkConfiguration :: Prelude.Maybe NetworkConfiguration
  }
  deriving (ContainerDetail -> ContainerDetail -> Bool
(ContainerDetail -> ContainerDetail -> Bool)
-> (ContainerDetail -> ContainerDetail -> Bool)
-> Eq ContainerDetail
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ContainerDetail -> ContainerDetail -> Bool
$c/= :: ContainerDetail -> ContainerDetail -> Bool
== :: ContainerDetail -> ContainerDetail -> Bool
$c== :: ContainerDetail -> ContainerDetail -> Bool
Prelude.Eq, ReadPrec [ContainerDetail]
ReadPrec ContainerDetail
Int -> ReadS ContainerDetail
ReadS [ContainerDetail]
(Int -> ReadS ContainerDetail)
-> ReadS [ContainerDetail]
-> ReadPrec ContainerDetail
-> ReadPrec [ContainerDetail]
-> Read ContainerDetail
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ContainerDetail]
$creadListPrec :: ReadPrec [ContainerDetail]
readPrec :: ReadPrec ContainerDetail
$creadPrec :: ReadPrec ContainerDetail
readList :: ReadS [ContainerDetail]
$creadList :: ReadS [ContainerDetail]
readsPrec :: Int -> ReadS ContainerDetail
$creadsPrec :: Int -> ReadS ContainerDetail
Prelude.Read, Int -> ContainerDetail -> ShowS
[ContainerDetail] -> ShowS
ContainerDetail -> String
(Int -> ContainerDetail -> ShowS)
-> (ContainerDetail -> String)
-> ([ContainerDetail] -> ShowS)
-> Show ContainerDetail
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ContainerDetail] -> ShowS
$cshowList :: [ContainerDetail] -> ShowS
show :: ContainerDetail -> String
$cshow :: ContainerDetail -> String
showsPrec :: Int -> ContainerDetail -> ShowS
$cshowsPrec :: Int -> ContainerDetail -> ShowS
Prelude.Show, (forall x. ContainerDetail -> Rep ContainerDetail x)
-> (forall x. Rep ContainerDetail x -> ContainerDetail)
-> Generic ContainerDetail
forall x. Rep ContainerDetail x -> ContainerDetail
forall x. ContainerDetail -> Rep ContainerDetail x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ContainerDetail x -> ContainerDetail
$cfrom :: forall x. ContainerDetail -> Rep ContainerDetail x
Prelude.Generic)

-- |
-- Create a value of 'ContainerDetail' 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:
--
-- 'image', 'containerDetail_image' - The image used to start the container.
--
-- 'command', 'containerDetail_command' - The command that\'s passed to the container.
--
-- 'secrets', 'containerDetail_secrets' - The secrets to pass to the container. For more information, see
-- <https://docs.aws.amazon.com/batch/latest/userguide/specifying-sensitive-data.html Specifying sensitive data>
-- in the /Batch User Guide/.
--
-- 'environment', 'containerDetail_environment' - The environment variables to pass to a container.
--
-- Environment variables must not start with @AWS_BATCH@; this naming
-- convention is reserved for variables that are set by the Batch service.
--
-- 'networkInterfaces', 'containerDetail_networkInterfaces' - The network interfaces associated with the job.
--
-- 'taskArn', 'containerDetail_taskArn' - The Amazon Resource Name (ARN) of the Amazon ECS task that\'s associated
-- with the container job. Each container attempt receives a task ARN when
-- they reach the @STARTING@ status.
--
-- 'ulimits', 'containerDetail_ulimits' - A list of @ulimit@ values to set in the container. This parameter maps
-- to @Ulimits@ in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--ulimit@ option to
-- <https://docs.docker.com/engine/reference/run/ docker run>.
--
-- This parameter isn\'t applicable to jobs that are running on Fargate
-- resources.
--
-- 'containerInstanceArn', 'containerDetail_containerInstanceArn' - The Amazon Resource Name (ARN) of the container instance that the
-- container is running on.
--
-- 'executionRoleArn', 'containerDetail_executionRoleArn' - The Amazon Resource Name (ARN) of the execution role that Batch can
-- assume. For more information, see
-- <https://docs.aws.amazon.com/batch/latest/userguide/execution-IAM-role.html Batch execution IAM role>
-- in the /Batch User Guide/.
--
-- 'privileged', 'containerDetail_privileged' - When this parameter is true, the container is given elevated permissions
-- on the host container instance (similar to the @root@ user). The default
-- value is false.
--
-- This parameter isn\'t applicable to jobs that are running on Fargate
-- resources and shouldn\'t be provided, or specified as false.
--
-- 'jobRoleArn', 'containerDetail_jobRoleArn' - The Amazon Resource Name (ARN) associated with the job upon execution.
--
-- 'resourceRequirements', 'containerDetail_resourceRequirements' - The type and amount of resources to assign to a container. The supported
-- resources include @GPU@, @MEMORY@, and @VCPU@.
--
-- 'instanceType', 'containerDetail_instanceType' - The instance type of the underlying host infrastructure of a multi-node
-- parallel job.
--
-- This parameter isn\'t applicable to jobs that are running on Fargate
-- resources.
--
-- 'memory', 'containerDetail_memory' - For jobs run on EC2 resources that didn\'t specify memory requirements
-- using @ResourceRequirement@, the number of MiB of memory reserved for
-- the job. For other jobs, including all run on Fargate resources, see
-- @resourceRequirements@.
--
-- 'user', 'containerDetail_user' - The user name to use inside the container. This parameter maps to @User@
-- in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--user@ option to
-- <https://docs.docker.com/engine/reference/run/ docker run>.
--
-- 'logConfiguration', 'containerDetail_logConfiguration' - The log configuration specification for the container.
--
-- This parameter maps to @LogConfig@ in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--log-driver@ option to
-- <https://docs.docker.com/engine/reference/run/ docker run>. By default,
-- containers use the same logging driver that the Docker daemon uses.
-- However, the container might use a different logging driver than the
-- Docker daemon by specifying a log driver with this parameter in the
-- container definition. To use a different logging driver for a container,
-- the log system must be configured properly on the container instance.
-- Or, alternatively, it must be configured on a different log server for
-- remote logging options. For more information on the options for
-- different supported log drivers, see
-- <https://docs.docker.com/engine/admin/logging/overview/ Configure logging drivers>
-- in the Docker documentation.
--
-- Batch currently supports a subset of the logging drivers available to
-- the Docker daemon (shown in the LogConfiguration data type). Additional
-- log drivers might be available in future releases of the Amazon ECS
-- container agent.
--
-- This parameter requires version 1.18 of the Docker Remote API or greater
-- on your container instance. To check the Docker Remote API version on
-- your container instance, log into your container instance and run the
-- following command: @sudo docker version | grep \"Server API version\"@
--
-- The Amazon ECS container agent running on a container instance must
-- register the logging drivers available on that instance with the
-- @ECS_AVAILABLE_LOGGING_DRIVERS@ environment variable before containers
-- placed on that instance can use these log configuration options. For
-- more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html Amazon ECS Container Agent Configuration>
-- in the /Amazon Elastic Container Service Developer Guide/.
--
-- 'linuxParameters', 'containerDetail_linuxParameters' - Linux-specific modifications that are applied to the container, such as
-- details for device mappings.
--
-- 'reason', 'containerDetail_reason' - A short (255 max characters) human-readable string to provide additional
-- details about a running or stopped container.
--
-- 'logStreamName', 'containerDetail_logStreamName' - The name of the CloudWatch Logs log stream associated with the
-- container. The log group for Batch jobs is @\/aws\/batch\/job@. Each
-- container attempt receives a log stream name when they reach the
-- @RUNNING@ status.
--
-- 'mountPoints', 'containerDetail_mountPoints' - The mount points for data volumes in your container.
--
-- 'exitCode', 'containerDetail_exitCode' - The exit code to return upon completion.
--
-- 'fargatePlatformConfiguration', 'containerDetail_fargatePlatformConfiguration' - The platform configuration for jobs that are running on Fargate
-- resources. Jobs that are running on EC2 resources must not specify this
-- parameter.
--
-- 'vcpus', 'containerDetail_vcpus' - The number of vCPUs reserved for the container. For jobs that run on EC2
-- resources, you can specify the vCPU requirement for the job using
-- @resourceRequirements@, but you can\'t specify the vCPU requirements in
-- both the @vcpus@ and @resourceRequirement@ object. This parameter maps
-- to @CpuShares@ in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--cpu-shares@ option to
-- <https://docs.docker.com/engine/reference/run/ docker run>. Each vCPU is
-- equivalent to 1,024 CPU shares. You must specify at least one vCPU. This
-- is required but can be specified in several places. It must be specified
-- for each node at least once.
--
-- This parameter isn\'t applicable to jobs that run on Fargate resources.
-- For jobs that run on Fargate resources, you must specify the vCPU
-- requirement for the job using @resourceRequirements@.
--
-- 'readonlyRootFilesystem', 'containerDetail_readonlyRootFilesystem' - When this parameter is true, the container is given read-only access to
-- its root file system. This parameter maps to @ReadonlyRootfs@ in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--read-only@ option to
-- <https://docs.docker.com/engine/reference/commandline/run/ docker run> .
--
-- 'volumes', 'containerDetail_volumes' - A list of volumes associated with the job.
--
-- 'networkConfiguration', 'containerDetail_networkConfiguration' - The network configuration for jobs that are running on Fargate
-- resources. Jobs that are running on EC2 resources must not specify this
-- parameter.
newContainerDetail ::
  ContainerDetail
newContainerDetail :: ContainerDetail
newContainerDetail =
  ContainerDetail' :: Maybe Text
-> Maybe [Text]
-> Maybe [Secret]
-> Maybe [KeyValuePair]
-> Maybe [NetworkInterface]
-> Maybe Text
-> Maybe [Ulimit]
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe [ResourceRequirement]
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe LogConfiguration
-> Maybe LinuxParameters
-> Maybe Text
-> Maybe Text
-> Maybe [MountPoint]
-> Maybe Int
-> Maybe FargatePlatformConfiguration
-> Maybe Int
-> Maybe Bool
-> Maybe [Volume]
-> Maybe NetworkConfiguration
-> ContainerDetail
ContainerDetail'
    { $sel:image:ContainerDetail' :: Maybe Text
image = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:command:ContainerDetail' :: Maybe [Text]
command = Maybe [Text]
forall a. Maybe a
Prelude.Nothing,
      $sel:secrets:ContainerDetail' :: Maybe [Secret]
secrets = Maybe [Secret]
forall a. Maybe a
Prelude.Nothing,
      $sel:environment:ContainerDetail' :: Maybe [KeyValuePair]
environment = Maybe [KeyValuePair]
forall a. Maybe a
Prelude.Nothing,
      $sel:networkInterfaces:ContainerDetail' :: Maybe [NetworkInterface]
networkInterfaces = Maybe [NetworkInterface]
forall a. Maybe a
Prelude.Nothing,
      $sel:taskArn:ContainerDetail' :: Maybe Text
taskArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:ulimits:ContainerDetail' :: Maybe [Ulimit]
ulimits = Maybe [Ulimit]
forall a. Maybe a
Prelude.Nothing,
      $sel:containerInstanceArn:ContainerDetail' :: Maybe Text
containerInstanceArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:executionRoleArn:ContainerDetail' :: Maybe Text
executionRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:privileged:ContainerDetail' :: Maybe Bool
privileged = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:jobRoleArn:ContainerDetail' :: Maybe Text
jobRoleArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:resourceRequirements:ContainerDetail' :: Maybe [ResourceRequirement]
resourceRequirements = Maybe [ResourceRequirement]
forall a. Maybe a
Prelude.Nothing,
      $sel:instanceType:ContainerDetail' :: Maybe Text
instanceType = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:memory:ContainerDetail' :: Maybe Int
memory = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:user:ContainerDetail' :: Maybe Text
user = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:logConfiguration:ContainerDetail' :: Maybe LogConfiguration
logConfiguration = Maybe LogConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:linuxParameters:ContainerDetail' :: Maybe LinuxParameters
linuxParameters = Maybe LinuxParameters
forall a. Maybe a
Prelude.Nothing,
      $sel:reason:ContainerDetail' :: Maybe Text
reason = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:logStreamName:ContainerDetail' :: Maybe Text
logStreamName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:mountPoints:ContainerDetail' :: Maybe [MountPoint]
mountPoints = Maybe [MountPoint]
forall a. Maybe a
Prelude.Nothing,
      $sel:exitCode:ContainerDetail' :: Maybe Int
exitCode = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:fargatePlatformConfiguration:ContainerDetail' :: Maybe FargatePlatformConfiguration
fargatePlatformConfiguration = Maybe FargatePlatformConfiguration
forall a. Maybe a
Prelude.Nothing,
      $sel:vcpus:ContainerDetail' :: Maybe Int
vcpus = Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:readonlyRootFilesystem:ContainerDetail' :: Maybe Bool
readonlyRootFilesystem = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:volumes:ContainerDetail' :: Maybe [Volume]
volumes = Maybe [Volume]
forall a. Maybe a
Prelude.Nothing,
      $sel:networkConfiguration:ContainerDetail' :: Maybe NetworkConfiguration
networkConfiguration = Maybe NetworkConfiguration
forall a. Maybe a
Prelude.Nothing
    }

-- | The image used to start the container.
containerDetail_image :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_image :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_image = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
image :: Maybe Text
$sel:image:ContainerDetail' :: ContainerDetail -> Maybe Text
image} -> Maybe Text
image) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:image:ContainerDetail' :: Maybe Text
image = Maybe Text
a} :: ContainerDetail)

-- | The command that\'s passed to the container.
containerDetail_command :: Lens.Lens' ContainerDetail (Prelude.Maybe [Prelude.Text])
containerDetail_command :: (Maybe [Text] -> f (Maybe [Text]))
-> ContainerDetail -> f ContainerDetail
containerDetail_command = (ContainerDetail -> Maybe [Text])
-> (ContainerDetail -> Maybe [Text] -> ContainerDetail)
-> Lens
     ContainerDetail ContainerDetail (Maybe [Text]) (Maybe [Text])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe [Text]
command :: Maybe [Text]
$sel:command:ContainerDetail' :: ContainerDetail -> Maybe [Text]
command} -> Maybe [Text]
command) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe [Text]
a -> ContainerDetail
s {$sel:command:ContainerDetail' :: Maybe [Text]
command = Maybe [Text]
a} :: ContainerDetail) ((Maybe [Text] -> f (Maybe [Text]))
 -> ContainerDetail -> f ContainerDetail)
-> ((Maybe [Text] -> f (Maybe [Text]))
    -> Maybe [Text] -> f (Maybe [Text]))
-> (Maybe [Text] -> f (Maybe [Text]))
-> ContainerDetail
-> f ContainerDetail
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 secrets to pass to the container. For more information, see
-- <https://docs.aws.amazon.com/batch/latest/userguide/specifying-sensitive-data.html Specifying sensitive data>
-- in the /Batch User Guide/.
containerDetail_secrets :: Lens.Lens' ContainerDetail (Prelude.Maybe [Secret])
containerDetail_secrets :: (Maybe [Secret] -> f (Maybe [Secret]))
-> ContainerDetail -> f ContainerDetail
containerDetail_secrets = (ContainerDetail -> Maybe [Secret])
-> (ContainerDetail -> Maybe [Secret] -> ContainerDetail)
-> Lens
     ContainerDetail ContainerDetail (Maybe [Secret]) (Maybe [Secret])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe [Secret]
secrets :: Maybe [Secret]
$sel:secrets:ContainerDetail' :: ContainerDetail -> Maybe [Secret]
secrets} -> Maybe [Secret]
secrets) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe [Secret]
a -> ContainerDetail
s {$sel:secrets:ContainerDetail' :: Maybe [Secret]
secrets = Maybe [Secret]
a} :: ContainerDetail) ((Maybe [Secret] -> f (Maybe [Secret]))
 -> ContainerDetail -> f ContainerDetail)
-> ((Maybe [Secret] -> f (Maybe [Secret]))
    -> Maybe [Secret] -> f (Maybe [Secret]))
-> (Maybe [Secret] -> f (Maybe [Secret]))
-> ContainerDetail
-> f ContainerDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Secret] [Secret] [Secret] [Secret]
-> Iso
     (Maybe [Secret]) (Maybe [Secret]) (Maybe [Secret]) (Maybe [Secret])
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 [Secret] [Secret] [Secret] [Secret]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The environment variables to pass to a container.
--
-- Environment variables must not start with @AWS_BATCH@; this naming
-- convention is reserved for variables that are set by the Batch service.
containerDetail_environment :: Lens.Lens' ContainerDetail (Prelude.Maybe [KeyValuePair])
containerDetail_environment :: (Maybe [KeyValuePair] -> f (Maybe [KeyValuePair]))
-> ContainerDetail -> f ContainerDetail
containerDetail_environment = (ContainerDetail -> Maybe [KeyValuePair])
-> (ContainerDetail -> Maybe [KeyValuePair] -> ContainerDetail)
-> Lens
     ContainerDetail
     ContainerDetail
     (Maybe [KeyValuePair])
     (Maybe [KeyValuePair])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe [KeyValuePair]
environment :: Maybe [KeyValuePair]
$sel:environment:ContainerDetail' :: ContainerDetail -> Maybe [KeyValuePair]
environment} -> Maybe [KeyValuePair]
environment) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe [KeyValuePair]
a -> ContainerDetail
s {$sel:environment:ContainerDetail' :: Maybe [KeyValuePair]
environment = Maybe [KeyValuePair]
a} :: ContainerDetail) ((Maybe [KeyValuePair] -> f (Maybe [KeyValuePair]))
 -> ContainerDetail -> f ContainerDetail)
-> ((Maybe [KeyValuePair] -> f (Maybe [KeyValuePair]))
    -> Maybe [KeyValuePair] -> f (Maybe [KeyValuePair]))
-> (Maybe [KeyValuePair] -> f (Maybe [KeyValuePair]))
-> ContainerDetail
-> f ContainerDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [KeyValuePair] [KeyValuePair] [KeyValuePair] [KeyValuePair]
-> Iso
     (Maybe [KeyValuePair])
     (Maybe [KeyValuePair])
     (Maybe [KeyValuePair])
     (Maybe [KeyValuePair])
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 [KeyValuePair] [KeyValuePair] [KeyValuePair] [KeyValuePair]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The network interfaces associated with the job.
containerDetail_networkInterfaces :: Lens.Lens' ContainerDetail (Prelude.Maybe [NetworkInterface])
containerDetail_networkInterfaces :: (Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
-> ContainerDetail -> f ContainerDetail
containerDetail_networkInterfaces = (ContainerDetail -> Maybe [NetworkInterface])
-> (ContainerDetail -> Maybe [NetworkInterface] -> ContainerDetail)
-> Lens
     ContainerDetail
     ContainerDetail
     (Maybe [NetworkInterface])
     (Maybe [NetworkInterface])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe [NetworkInterface]
networkInterfaces :: Maybe [NetworkInterface]
$sel:networkInterfaces:ContainerDetail' :: ContainerDetail -> Maybe [NetworkInterface]
networkInterfaces} -> Maybe [NetworkInterface]
networkInterfaces) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe [NetworkInterface]
a -> ContainerDetail
s {$sel:networkInterfaces:ContainerDetail' :: Maybe [NetworkInterface]
networkInterfaces = Maybe [NetworkInterface]
a} :: ContainerDetail) ((Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
 -> ContainerDetail -> f ContainerDetail)
-> ((Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
    -> Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
-> (Maybe [NetworkInterface] -> f (Maybe [NetworkInterface]))
-> ContainerDetail
-> f ContainerDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [NetworkInterface]
  [NetworkInterface]
  [NetworkInterface]
  [NetworkInterface]
-> Iso
     (Maybe [NetworkInterface])
     (Maybe [NetworkInterface])
     (Maybe [NetworkInterface])
     (Maybe [NetworkInterface])
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
  [NetworkInterface]
  [NetworkInterface]
  [NetworkInterface]
  [NetworkInterface]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon Resource Name (ARN) of the Amazon ECS task that\'s associated
-- with the container job. Each container attempt receives a task ARN when
-- they reach the @STARTING@ status.
containerDetail_taskArn :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_taskArn :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_taskArn = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
taskArn :: Maybe Text
$sel:taskArn:ContainerDetail' :: ContainerDetail -> Maybe Text
taskArn} -> Maybe Text
taskArn) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:taskArn:ContainerDetail' :: Maybe Text
taskArn = Maybe Text
a} :: ContainerDetail)

-- | A list of @ulimit@ values to set in the container. This parameter maps
-- to @Ulimits@ in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--ulimit@ option to
-- <https://docs.docker.com/engine/reference/run/ docker run>.
--
-- This parameter isn\'t applicable to jobs that are running on Fargate
-- resources.
containerDetail_ulimits :: Lens.Lens' ContainerDetail (Prelude.Maybe [Ulimit])
containerDetail_ulimits :: (Maybe [Ulimit] -> f (Maybe [Ulimit]))
-> ContainerDetail -> f ContainerDetail
containerDetail_ulimits = (ContainerDetail -> Maybe [Ulimit])
-> (ContainerDetail -> Maybe [Ulimit] -> ContainerDetail)
-> Lens
     ContainerDetail ContainerDetail (Maybe [Ulimit]) (Maybe [Ulimit])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe [Ulimit]
ulimits :: Maybe [Ulimit]
$sel:ulimits:ContainerDetail' :: ContainerDetail -> Maybe [Ulimit]
ulimits} -> Maybe [Ulimit]
ulimits) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe [Ulimit]
a -> ContainerDetail
s {$sel:ulimits:ContainerDetail' :: Maybe [Ulimit]
ulimits = Maybe [Ulimit]
a} :: ContainerDetail) ((Maybe [Ulimit] -> f (Maybe [Ulimit]))
 -> ContainerDetail -> f ContainerDetail)
-> ((Maybe [Ulimit] -> f (Maybe [Ulimit]))
    -> Maybe [Ulimit] -> f (Maybe [Ulimit]))
-> (Maybe [Ulimit] -> f (Maybe [Ulimit]))
-> ContainerDetail
-> f ContainerDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Ulimit] [Ulimit] [Ulimit] [Ulimit]
-> Iso
     (Maybe [Ulimit]) (Maybe [Ulimit]) (Maybe [Ulimit]) (Maybe [Ulimit])
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 [Ulimit] [Ulimit] [Ulimit] [Ulimit]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon Resource Name (ARN) of the container instance that the
-- container is running on.
containerDetail_containerInstanceArn :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_containerInstanceArn :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_containerInstanceArn = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
containerInstanceArn :: Maybe Text
$sel:containerInstanceArn:ContainerDetail' :: ContainerDetail -> Maybe Text
containerInstanceArn} -> Maybe Text
containerInstanceArn) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:containerInstanceArn:ContainerDetail' :: Maybe Text
containerInstanceArn = Maybe Text
a} :: ContainerDetail)

-- | The Amazon Resource Name (ARN) of the execution role that Batch can
-- assume. For more information, see
-- <https://docs.aws.amazon.com/batch/latest/userguide/execution-IAM-role.html Batch execution IAM role>
-- in the /Batch User Guide/.
containerDetail_executionRoleArn :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_executionRoleArn :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_executionRoleArn = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
executionRoleArn :: Maybe Text
$sel:executionRoleArn:ContainerDetail' :: ContainerDetail -> Maybe Text
executionRoleArn} -> Maybe Text
executionRoleArn) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:executionRoleArn:ContainerDetail' :: Maybe Text
executionRoleArn = Maybe Text
a} :: ContainerDetail)

-- | When this parameter is true, the container is given elevated permissions
-- on the host container instance (similar to the @root@ user). The default
-- value is false.
--
-- This parameter isn\'t applicable to jobs that are running on Fargate
-- resources and shouldn\'t be provided, or specified as false.
containerDetail_privileged :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Bool)
containerDetail_privileged :: (Maybe Bool -> f (Maybe Bool))
-> ContainerDetail -> f ContainerDetail
containerDetail_privileged = (ContainerDetail -> Maybe Bool)
-> (ContainerDetail -> Maybe Bool -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Bool
privileged :: Maybe Bool
$sel:privileged:ContainerDetail' :: ContainerDetail -> Maybe Bool
privileged} -> Maybe Bool
privileged) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Bool
a -> ContainerDetail
s {$sel:privileged:ContainerDetail' :: Maybe Bool
privileged = Maybe Bool
a} :: ContainerDetail)

-- | The Amazon Resource Name (ARN) associated with the job upon execution.
containerDetail_jobRoleArn :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_jobRoleArn :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_jobRoleArn = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
jobRoleArn :: Maybe Text
$sel:jobRoleArn:ContainerDetail' :: ContainerDetail -> Maybe Text
jobRoleArn} -> Maybe Text
jobRoleArn) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:jobRoleArn:ContainerDetail' :: Maybe Text
jobRoleArn = Maybe Text
a} :: ContainerDetail)

-- | The type and amount of resources to assign to a container. The supported
-- resources include @GPU@, @MEMORY@, and @VCPU@.
containerDetail_resourceRequirements :: Lens.Lens' ContainerDetail (Prelude.Maybe [ResourceRequirement])
containerDetail_resourceRequirements :: (Maybe [ResourceRequirement] -> f (Maybe [ResourceRequirement]))
-> ContainerDetail -> f ContainerDetail
containerDetail_resourceRequirements = (ContainerDetail -> Maybe [ResourceRequirement])
-> (ContainerDetail
    -> Maybe [ResourceRequirement] -> ContainerDetail)
-> Lens
     ContainerDetail
     ContainerDetail
     (Maybe [ResourceRequirement])
     (Maybe [ResourceRequirement])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe [ResourceRequirement]
resourceRequirements :: Maybe [ResourceRequirement]
$sel:resourceRequirements:ContainerDetail' :: ContainerDetail -> Maybe [ResourceRequirement]
resourceRequirements} -> Maybe [ResourceRequirement]
resourceRequirements) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe [ResourceRequirement]
a -> ContainerDetail
s {$sel:resourceRequirements:ContainerDetail' :: Maybe [ResourceRequirement]
resourceRequirements = Maybe [ResourceRequirement]
a} :: ContainerDetail) ((Maybe [ResourceRequirement] -> f (Maybe [ResourceRequirement]))
 -> ContainerDetail -> f ContainerDetail)
-> ((Maybe [ResourceRequirement]
     -> f (Maybe [ResourceRequirement]))
    -> Maybe [ResourceRequirement] -> f (Maybe [ResourceRequirement]))
-> (Maybe [ResourceRequirement] -> f (Maybe [ResourceRequirement]))
-> ContainerDetail
-> f ContainerDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [ResourceRequirement]
  [ResourceRequirement]
  [ResourceRequirement]
  [ResourceRequirement]
-> Iso
     (Maybe [ResourceRequirement])
     (Maybe [ResourceRequirement])
     (Maybe [ResourceRequirement])
     (Maybe [ResourceRequirement])
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
  [ResourceRequirement]
  [ResourceRequirement]
  [ResourceRequirement]
  [ResourceRequirement]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The instance type of the underlying host infrastructure of a multi-node
-- parallel job.
--
-- This parameter isn\'t applicable to jobs that are running on Fargate
-- resources.
containerDetail_instanceType :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_instanceType :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_instanceType = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
instanceType :: Maybe Text
$sel:instanceType:ContainerDetail' :: ContainerDetail -> Maybe Text
instanceType} -> Maybe Text
instanceType) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:instanceType:ContainerDetail' :: Maybe Text
instanceType = Maybe Text
a} :: ContainerDetail)

-- | For jobs run on EC2 resources that didn\'t specify memory requirements
-- using @ResourceRequirement@, the number of MiB of memory reserved for
-- the job. For other jobs, including all run on Fargate resources, see
-- @resourceRequirements@.
containerDetail_memory :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Int)
containerDetail_memory :: (Maybe Int -> f (Maybe Int))
-> ContainerDetail -> f ContainerDetail
containerDetail_memory = (ContainerDetail -> Maybe Int)
-> (ContainerDetail -> Maybe Int -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Int
memory :: Maybe Int
$sel:memory:ContainerDetail' :: ContainerDetail -> Maybe Int
memory} -> Maybe Int
memory) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Int
a -> ContainerDetail
s {$sel:memory:ContainerDetail' :: Maybe Int
memory = Maybe Int
a} :: ContainerDetail)

-- | The user name to use inside the container. This parameter maps to @User@
-- in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--user@ option to
-- <https://docs.docker.com/engine/reference/run/ docker run>.
containerDetail_user :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_user :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_user = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
user :: Maybe Text
$sel:user:ContainerDetail' :: ContainerDetail -> Maybe Text
user} -> Maybe Text
user) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:user:ContainerDetail' :: Maybe Text
user = Maybe Text
a} :: ContainerDetail)

-- | The log configuration specification for the container.
--
-- This parameter maps to @LogConfig@ in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--log-driver@ option to
-- <https://docs.docker.com/engine/reference/run/ docker run>. By default,
-- containers use the same logging driver that the Docker daemon uses.
-- However, the container might use a different logging driver than the
-- Docker daemon by specifying a log driver with this parameter in the
-- container definition. To use a different logging driver for a container,
-- the log system must be configured properly on the container instance.
-- Or, alternatively, it must be configured on a different log server for
-- remote logging options. For more information on the options for
-- different supported log drivers, see
-- <https://docs.docker.com/engine/admin/logging/overview/ Configure logging drivers>
-- in the Docker documentation.
--
-- Batch currently supports a subset of the logging drivers available to
-- the Docker daemon (shown in the LogConfiguration data type). Additional
-- log drivers might be available in future releases of the Amazon ECS
-- container agent.
--
-- This parameter requires version 1.18 of the Docker Remote API or greater
-- on your container instance. To check the Docker Remote API version on
-- your container instance, log into your container instance and run the
-- following command: @sudo docker version | grep \"Server API version\"@
--
-- The Amazon ECS container agent running on a container instance must
-- register the logging drivers available on that instance with the
-- @ECS_AVAILABLE_LOGGING_DRIVERS@ environment variable before containers
-- placed on that instance can use these log configuration options. For
-- more information, see
-- <https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html Amazon ECS Container Agent Configuration>
-- in the /Amazon Elastic Container Service Developer Guide/.
containerDetail_logConfiguration :: Lens.Lens' ContainerDetail (Prelude.Maybe LogConfiguration)
containerDetail_logConfiguration :: (Maybe LogConfiguration -> f (Maybe LogConfiguration))
-> ContainerDetail -> f ContainerDetail
containerDetail_logConfiguration = (ContainerDetail -> Maybe LogConfiguration)
-> (ContainerDetail -> Maybe LogConfiguration -> ContainerDetail)
-> Lens
     ContainerDetail
     ContainerDetail
     (Maybe LogConfiguration)
     (Maybe LogConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe LogConfiguration
logConfiguration :: Maybe LogConfiguration
$sel:logConfiguration:ContainerDetail' :: ContainerDetail -> Maybe LogConfiguration
logConfiguration} -> Maybe LogConfiguration
logConfiguration) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe LogConfiguration
a -> ContainerDetail
s {$sel:logConfiguration:ContainerDetail' :: Maybe LogConfiguration
logConfiguration = Maybe LogConfiguration
a} :: ContainerDetail)

-- | Linux-specific modifications that are applied to the container, such as
-- details for device mappings.
containerDetail_linuxParameters :: Lens.Lens' ContainerDetail (Prelude.Maybe LinuxParameters)
containerDetail_linuxParameters :: (Maybe LinuxParameters -> f (Maybe LinuxParameters))
-> ContainerDetail -> f ContainerDetail
containerDetail_linuxParameters = (ContainerDetail -> Maybe LinuxParameters)
-> (ContainerDetail -> Maybe LinuxParameters -> ContainerDetail)
-> Lens
     ContainerDetail
     ContainerDetail
     (Maybe LinuxParameters)
     (Maybe LinuxParameters)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe LinuxParameters
linuxParameters :: Maybe LinuxParameters
$sel:linuxParameters:ContainerDetail' :: ContainerDetail -> Maybe LinuxParameters
linuxParameters} -> Maybe LinuxParameters
linuxParameters) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe LinuxParameters
a -> ContainerDetail
s {$sel:linuxParameters:ContainerDetail' :: Maybe LinuxParameters
linuxParameters = Maybe LinuxParameters
a} :: ContainerDetail)

-- | A short (255 max characters) human-readable string to provide additional
-- details about a running or stopped container.
containerDetail_reason :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_reason :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_reason = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
reason :: Maybe Text
$sel:reason:ContainerDetail' :: ContainerDetail -> Maybe Text
reason} -> Maybe Text
reason) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:reason:ContainerDetail' :: Maybe Text
reason = Maybe Text
a} :: ContainerDetail)

-- | The name of the CloudWatch Logs log stream associated with the
-- container. The log group for Batch jobs is @\/aws\/batch\/job@. Each
-- container attempt receives a log stream name when they reach the
-- @RUNNING@ status.
containerDetail_logStreamName :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Text)
containerDetail_logStreamName :: (Maybe Text -> f (Maybe Text))
-> ContainerDetail -> f ContainerDetail
containerDetail_logStreamName = (ContainerDetail -> Maybe Text)
-> (ContainerDetail -> Maybe Text -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Text) (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Text
logStreamName :: Maybe Text
$sel:logStreamName:ContainerDetail' :: ContainerDetail -> Maybe Text
logStreamName} -> Maybe Text
logStreamName) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Text
a -> ContainerDetail
s {$sel:logStreamName:ContainerDetail' :: Maybe Text
logStreamName = Maybe Text
a} :: ContainerDetail)

-- | The mount points for data volumes in your container.
containerDetail_mountPoints :: Lens.Lens' ContainerDetail (Prelude.Maybe [MountPoint])
containerDetail_mountPoints :: (Maybe [MountPoint] -> f (Maybe [MountPoint]))
-> ContainerDetail -> f ContainerDetail
containerDetail_mountPoints = (ContainerDetail -> Maybe [MountPoint])
-> (ContainerDetail -> Maybe [MountPoint] -> ContainerDetail)
-> Lens
     ContainerDetail
     ContainerDetail
     (Maybe [MountPoint])
     (Maybe [MountPoint])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe [MountPoint]
mountPoints :: Maybe [MountPoint]
$sel:mountPoints:ContainerDetail' :: ContainerDetail -> Maybe [MountPoint]
mountPoints} -> Maybe [MountPoint]
mountPoints) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe [MountPoint]
a -> ContainerDetail
s {$sel:mountPoints:ContainerDetail' :: Maybe [MountPoint]
mountPoints = Maybe [MountPoint]
a} :: ContainerDetail) ((Maybe [MountPoint] -> f (Maybe [MountPoint]))
 -> ContainerDetail -> f ContainerDetail)
-> ((Maybe [MountPoint] -> f (Maybe [MountPoint]))
    -> Maybe [MountPoint] -> f (Maybe [MountPoint]))
-> (Maybe [MountPoint] -> f (Maybe [MountPoint]))
-> ContainerDetail
-> f ContainerDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [MountPoint] [MountPoint] [MountPoint] [MountPoint]
-> Iso
     (Maybe [MountPoint])
     (Maybe [MountPoint])
     (Maybe [MountPoint])
     (Maybe [MountPoint])
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 [MountPoint] [MountPoint] [MountPoint] [MountPoint]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The exit code to return upon completion.
containerDetail_exitCode :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Int)
containerDetail_exitCode :: (Maybe Int -> f (Maybe Int))
-> ContainerDetail -> f ContainerDetail
containerDetail_exitCode = (ContainerDetail -> Maybe Int)
-> (ContainerDetail -> Maybe Int -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Int
exitCode :: Maybe Int
$sel:exitCode:ContainerDetail' :: ContainerDetail -> Maybe Int
exitCode} -> Maybe Int
exitCode) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Int
a -> ContainerDetail
s {$sel:exitCode:ContainerDetail' :: Maybe Int
exitCode = Maybe Int
a} :: ContainerDetail)

-- | The platform configuration for jobs that are running on Fargate
-- resources. Jobs that are running on EC2 resources must not specify this
-- parameter.
containerDetail_fargatePlatformConfiguration :: Lens.Lens' ContainerDetail (Prelude.Maybe FargatePlatformConfiguration)
containerDetail_fargatePlatformConfiguration :: (Maybe FargatePlatformConfiguration
 -> f (Maybe FargatePlatformConfiguration))
-> ContainerDetail -> f ContainerDetail
containerDetail_fargatePlatformConfiguration = (ContainerDetail -> Maybe FargatePlatformConfiguration)
-> (ContainerDetail
    -> Maybe FargatePlatformConfiguration -> ContainerDetail)
-> Lens
     ContainerDetail
     ContainerDetail
     (Maybe FargatePlatformConfiguration)
     (Maybe FargatePlatformConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe FargatePlatformConfiguration
fargatePlatformConfiguration :: Maybe FargatePlatformConfiguration
$sel:fargatePlatformConfiguration:ContainerDetail' :: ContainerDetail -> Maybe FargatePlatformConfiguration
fargatePlatformConfiguration} -> Maybe FargatePlatformConfiguration
fargatePlatformConfiguration) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe FargatePlatformConfiguration
a -> ContainerDetail
s {$sel:fargatePlatformConfiguration:ContainerDetail' :: Maybe FargatePlatformConfiguration
fargatePlatformConfiguration = Maybe FargatePlatformConfiguration
a} :: ContainerDetail)

-- | The number of vCPUs reserved for the container. For jobs that run on EC2
-- resources, you can specify the vCPU requirement for the job using
-- @resourceRequirements@, but you can\'t specify the vCPU requirements in
-- both the @vcpus@ and @resourceRequirement@ object. This parameter maps
-- to @CpuShares@ in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--cpu-shares@ option to
-- <https://docs.docker.com/engine/reference/run/ docker run>. Each vCPU is
-- equivalent to 1,024 CPU shares. You must specify at least one vCPU. This
-- is required but can be specified in several places. It must be specified
-- for each node at least once.
--
-- This parameter isn\'t applicable to jobs that run on Fargate resources.
-- For jobs that run on Fargate resources, you must specify the vCPU
-- requirement for the job using @resourceRequirements@.
containerDetail_vcpus :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Int)
containerDetail_vcpus :: (Maybe Int -> f (Maybe Int))
-> ContainerDetail -> f ContainerDetail
containerDetail_vcpus = (ContainerDetail -> Maybe Int)
-> (ContainerDetail -> Maybe Int -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Int) (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Int
vcpus :: Maybe Int
$sel:vcpus:ContainerDetail' :: ContainerDetail -> Maybe Int
vcpus} -> Maybe Int
vcpus) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Int
a -> ContainerDetail
s {$sel:vcpus:ContainerDetail' :: Maybe Int
vcpus = Maybe Int
a} :: ContainerDetail)

-- | When this parameter is true, the container is given read-only access to
-- its root file system. This parameter maps to @ReadonlyRootfs@ in the
-- <https://docs.docker.com/engine/api/v1.23/#create-a-container Create a container>
-- section of the
-- <https://docs.docker.com/engine/api/v1.23/ Docker Remote API> and the
-- @--read-only@ option to
-- <https://docs.docker.com/engine/reference/commandline/run/ docker run> .
containerDetail_readonlyRootFilesystem :: Lens.Lens' ContainerDetail (Prelude.Maybe Prelude.Bool)
containerDetail_readonlyRootFilesystem :: (Maybe Bool -> f (Maybe Bool))
-> ContainerDetail -> f ContainerDetail
containerDetail_readonlyRootFilesystem = (ContainerDetail -> Maybe Bool)
-> (ContainerDetail -> Maybe Bool -> ContainerDetail)
-> Lens ContainerDetail ContainerDetail (Maybe Bool) (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe Bool
readonlyRootFilesystem :: Maybe Bool
$sel:readonlyRootFilesystem:ContainerDetail' :: ContainerDetail -> Maybe Bool
readonlyRootFilesystem} -> Maybe Bool
readonlyRootFilesystem) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe Bool
a -> ContainerDetail
s {$sel:readonlyRootFilesystem:ContainerDetail' :: Maybe Bool
readonlyRootFilesystem = Maybe Bool
a} :: ContainerDetail)

-- | A list of volumes associated with the job.
containerDetail_volumes :: Lens.Lens' ContainerDetail (Prelude.Maybe [Volume])
containerDetail_volumes :: (Maybe [Volume] -> f (Maybe [Volume]))
-> ContainerDetail -> f ContainerDetail
containerDetail_volumes = (ContainerDetail -> Maybe [Volume])
-> (ContainerDetail -> Maybe [Volume] -> ContainerDetail)
-> Lens
     ContainerDetail ContainerDetail (Maybe [Volume]) (Maybe [Volume])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe [Volume]
volumes :: Maybe [Volume]
$sel:volumes:ContainerDetail' :: ContainerDetail -> Maybe [Volume]
volumes} -> Maybe [Volume]
volumes) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe [Volume]
a -> ContainerDetail
s {$sel:volumes:ContainerDetail' :: Maybe [Volume]
volumes = Maybe [Volume]
a} :: ContainerDetail) ((Maybe [Volume] -> f (Maybe [Volume]))
 -> ContainerDetail -> f ContainerDetail)
-> ((Maybe [Volume] -> f (Maybe [Volume]))
    -> Maybe [Volume] -> f (Maybe [Volume]))
-> (Maybe [Volume] -> f (Maybe [Volume]))
-> ContainerDetail
-> f ContainerDetail
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Volume] [Volume] [Volume] [Volume]
-> Iso
     (Maybe [Volume]) (Maybe [Volume]) (Maybe [Volume]) (Maybe [Volume])
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 [Volume] [Volume] [Volume] [Volume]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The network configuration for jobs that are running on Fargate
-- resources. Jobs that are running on EC2 resources must not specify this
-- parameter.
containerDetail_networkConfiguration :: Lens.Lens' ContainerDetail (Prelude.Maybe NetworkConfiguration)
containerDetail_networkConfiguration :: (Maybe NetworkConfiguration -> f (Maybe NetworkConfiguration))
-> ContainerDetail -> f ContainerDetail
containerDetail_networkConfiguration = (ContainerDetail -> Maybe NetworkConfiguration)
-> (ContainerDetail
    -> Maybe NetworkConfiguration -> ContainerDetail)
-> Lens
     ContainerDetail
     ContainerDetail
     (Maybe NetworkConfiguration)
     (Maybe NetworkConfiguration)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerDetail' {Maybe NetworkConfiguration
networkConfiguration :: Maybe NetworkConfiguration
$sel:networkConfiguration:ContainerDetail' :: ContainerDetail -> Maybe NetworkConfiguration
networkConfiguration} -> Maybe NetworkConfiguration
networkConfiguration) (\s :: ContainerDetail
s@ContainerDetail' {} Maybe NetworkConfiguration
a -> ContainerDetail
s {$sel:networkConfiguration:ContainerDetail' :: Maybe NetworkConfiguration
networkConfiguration = Maybe NetworkConfiguration
a} :: ContainerDetail)

instance Core.FromJSON ContainerDetail where
  parseJSON :: Value -> Parser ContainerDetail
parseJSON =
    String
-> (Object -> Parser ContainerDetail)
-> Value
-> Parser ContainerDetail
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"ContainerDetail"
      ( \Object
x ->
          Maybe Text
-> Maybe [Text]
-> Maybe [Secret]
-> Maybe [KeyValuePair]
-> Maybe [NetworkInterface]
-> Maybe Text
-> Maybe [Ulimit]
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe [ResourceRequirement]
-> Maybe Text
-> Maybe Int
-> Maybe Text
-> Maybe LogConfiguration
-> Maybe LinuxParameters
-> Maybe Text
-> Maybe Text
-> Maybe [MountPoint]
-> Maybe Int
-> Maybe FargatePlatformConfiguration
-> Maybe Int
-> Maybe Bool
-> Maybe [Volume]
-> Maybe NetworkConfiguration
-> ContainerDetail
ContainerDetail'
            (Maybe Text
 -> Maybe [Text]
 -> Maybe [Secret]
 -> Maybe [KeyValuePair]
 -> Maybe [NetworkInterface]
 -> Maybe Text
 -> Maybe [Ulimit]
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe [ResourceRequirement]
 -> Maybe Text
 -> Maybe Int
 -> Maybe Text
 -> Maybe LogConfiguration
 -> Maybe LinuxParameters
 -> Maybe Text
 -> Maybe Text
 -> Maybe [MountPoint]
 -> Maybe Int
 -> Maybe FargatePlatformConfiguration
 -> Maybe Int
 -> Maybe Bool
 -> Maybe [Volume]
 -> Maybe NetworkConfiguration
 -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Text]
      -> Maybe [Secret]
      -> Maybe [KeyValuePair]
      -> Maybe [NetworkInterface]
      -> Maybe Text
      -> Maybe [Ulimit]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Functor 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
"image")
            Parser
  (Maybe [Text]
   -> Maybe [Secret]
   -> Maybe [KeyValuePair]
   -> Maybe [NetworkInterface]
   -> Maybe Text
   -> Maybe [Ulimit]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe [Text])
-> Parser
     (Maybe [Secret]
      -> Maybe [KeyValuePair]
      -> Maybe [NetworkInterface]
      -> Maybe Text
      -> Maybe [Ulimit]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"command" 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 [Secret]
   -> Maybe [KeyValuePair]
   -> Maybe [NetworkInterface]
   -> Maybe Text
   -> Maybe [Ulimit]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe [Secret])
-> Parser
     (Maybe [KeyValuePair]
      -> Maybe [NetworkInterface]
      -> Maybe Text
      -> Maybe [Ulimit]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Secret]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"secrets" Parser (Maybe (Maybe [Secret]))
-> Maybe [Secret] -> Parser (Maybe [Secret])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Secret]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe [KeyValuePair]
   -> Maybe [NetworkInterface]
   -> Maybe Text
   -> Maybe [Ulimit]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe [KeyValuePair])
-> Parser
     (Maybe [NetworkInterface]
      -> Maybe Text
      -> Maybe [Ulimit]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [KeyValuePair]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"environment" Parser (Maybe (Maybe [KeyValuePair]))
-> Maybe [KeyValuePair] -> Parser (Maybe [KeyValuePair])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [KeyValuePair]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe [NetworkInterface]
   -> Maybe Text
   -> Maybe [Ulimit]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe [NetworkInterface])
-> Parser
     (Maybe Text
      -> Maybe [Ulimit]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [NetworkInterface]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"networkInterfaces"
                            Parser (Maybe (Maybe [NetworkInterface]))
-> Maybe [NetworkInterface] -> Parser (Maybe [NetworkInterface])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [NetworkInterface]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe [Ulimit]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe [Ulimit]
      -> Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"taskArn")
            Parser
  (Maybe [Ulimit]
   -> Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe [Ulimit])
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Ulimit]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"ulimits" Parser (Maybe (Maybe [Ulimit]))
-> Maybe [Ulimit] -> Parser (Maybe [Ulimit])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Ulimit]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"containerInstanceArn")
            Parser
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe Bool
      -> Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"executionRoleArn")
            Parser
  (Maybe Bool
   -> Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Text
      -> Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"privileged")
            Parser
  (Maybe Text
   -> Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe [ResourceRequirement]
      -> Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"jobRoleArn")
            Parser
  (Maybe [ResourceRequirement]
   -> Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe [ResourceRequirement])
-> Parser
     (Maybe Text
      -> Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x Object -> Text -> Parser (Maybe (Maybe [ResourceRequirement]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"resourceRequirements"
                            Parser (Maybe (Maybe [ResourceRequirement]))
-> Maybe [ResourceRequirement]
-> Parser (Maybe [ResourceRequirement])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [ResourceRequirement]
forall a. Monoid a => a
Prelude.mempty
                        )
            Parser
  (Maybe Text
   -> Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe Int
      -> Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"instanceType")
            Parser
  (Maybe Int
   -> Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Int)
-> Parser
     (Maybe Text
      -> Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"memory")
            Parser
  (Maybe Text
   -> Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe LogConfiguration
      -> Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"user")
            Parser
  (Maybe LogConfiguration
   -> Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe LogConfiguration)
-> Parser
     (Maybe LinuxParameters
      -> Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LogConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"logConfiguration")
            Parser
  (Maybe LinuxParameters
   -> Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe LinuxParameters)
-> Parser
     (Maybe Text
      -> Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe LinuxParameters)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"linuxParameters")
            Parser
  (Maybe Text
   -> Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe Text
      -> Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"reason")
            Parser
  (Maybe Text
   -> Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Text)
-> Parser
     (Maybe [MountPoint]
      -> Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
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
"logStreamName")
            Parser
  (Maybe [MountPoint]
   -> Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe [MountPoint])
-> Parser
     (Maybe Int
      -> Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [MountPoint]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"mountPoints" Parser (Maybe (Maybe [MountPoint]))
-> Maybe [MountPoint] -> Parser (Maybe [MountPoint])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [MountPoint]
forall a. Monoid a => a
Prelude.mempty)
            Parser
  (Maybe Int
   -> Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Int)
-> Parser
     (Maybe FargatePlatformConfiguration
      -> Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"exitCode")
            Parser
  (Maybe FargatePlatformConfiguration
   -> Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe FargatePlatformConfiguration)
-> Parser
     (Maybe Int
      -> Maybe Bool
      -> Maybe [Volume]
      -> Maybe NetworkConfiguration
      -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe FargatePlatformConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"fargatePlatformConfiguration")
            Parser
  (Maybe Int
   -> Maybe Bool
   -> Maybe [Volume]
   -> Maybe NetworkConfiguration
   -> ContainerDetail)
-> Parser (Maybe Int)
-> Parser
     (Maybe Bool
      -> Maybe [Volume] -> Maybe NetworkConfiguration -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Int)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"vcpus")
            Parser
  (Maybe Bool
   -> Maybe [Volume] -> Maybe NetworkConfiguration -> ContainerDetail)
-> Parser (Maybe Bool)
-> Parser
     (Maybe [Volume] -> Maybe NetworkConfiguration -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe Bool)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"readonlyRootFilesystem")
            Parser
  (Maybe [Volume] -> Maybe NetworkConfiguration -> ContainerDetail)
-> Parser (Maybe [Volume])
-> Parser (Maybe NetworkConfiguration -> ContainerDetail)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe (Maybe [Volume]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"volumes" Parser (Maybe (Maybe [Volume]))
-> Maybe [Volume] -> Parser (Maybe [Volume])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe [Volume]
forall a. Monoid a => a
Prelude.mempty)
            Parser (Maybe NetworkConfiguration -> ContainerDetail)
-> Parser (Maybe NetworkConfiguration) -> Parser ContainerDetail
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object -> Text -> Parser (Maybe NetworkConfiguration)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"networkConfiguration")
      )

instance Prelude.Hashable ContainerDetail

instance Prelude.NFData ContainerDetail