{-# 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.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-- 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.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails
import Amazonka.SecurityHub.Types.AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails

-- | >Linux-specific modifications that are applied to the container, such as
-- Linux kernel capabilities.
--
-- /See:/ 'newAwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' smart constructor.
data AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails = AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails'
  { -- | The value for the size (in MiB) of the __\/dev\/shm__ volume.
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
sharedMemorySize :: Prelude.Maybe Prelude.Int,
    -- | The container path, mount options, and size (in MiB) of the tmpfs mount.
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
tmpfs :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails],
    -- | Whether to run an @init@ process inside the container that forwards
    -- signals and reaps processes.
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Bool
initProcessEnabled :: Prelude.Maybe Prelude.Bool,
    -- | Configures the container\'s memory swappiness behavior. Determines how
    -- aggressively pages are swapped. The higher the value, the more
    -- aggressive the swappiness. The default is 60.
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
swappiness :: Prelude.Maybe Prelude.Int,
    -- | The host devices to expose to the container.
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
devices :: Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails],
    -- | The Linux capabilities for the container that are added to or dropped
    -- from the default configuration provided by Docker.
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
capabilities :: Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails,
    -- | The total amount of swap memory (in MiB) that a container can use.
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
maxSwap :: Prelude.Maybe Prelude.Int
  }
  deriving (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Bool
(AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Bool)
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> Bool)
-> Eq
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Bool
$c/= :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Bool
== :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Bool
$c== :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Bool
Prelude.Eq, ReadPrec
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
ReadPrec
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
Int
-> ReadS
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
ReadS
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
(Int
 -> ReadS
      AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> ReadS
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
-> ReadPrec
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> ReadPrec
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
-> Read
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
$creadListPrec :: ReadPrec
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
readPrec :: ReadPrec
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
$creadPrec :: ReadPrec
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
readList :: ReadS
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
$creadList :: ReadS
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
readsPrec :: Int
-> ReadS
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
$creadsPrec :: Int
-> ReadS
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
Prelude.Read, Int
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> ShowS
[AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
-> ShowS
AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> String
(Int
 -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> ShowS)
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> String)
-> ([AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
    -> ShowS)
-> Show
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
-> ShowS
$cshowList :: [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails]
-> ShowS
show :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> String
$cshow :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> String
showsPrec :: Int
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> ShowS
$cshowsPrec :: Int
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> ShowS
Prelude.Show, (forall x.
 AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Rep
      AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails x)
-> (forall x.
    Rep
      AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails x
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Generic
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
forall x.
Rep
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails x
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
forall x.
AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Rep
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails x
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
$cfrom :: forall x.
AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Rep
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails x
Prelude.Generic)

-- |
-- Create a value of 'AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' 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:
--
-- 'sharedMemorySize', 'awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_sharedMemorySize' - The value for the size (in MiB) of the __\/dev\/shm__ volume.
--
-- 'tmpfs', 'awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_tmpfs' - The container path, mount options, and size (in MiB) of the tmpfs mount.
--
-- 'initProcessEnabled', 'awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_initProcessEnabled' - Whether to run an @init@ process inside the container that forwards
-- signals and reaps processes.
--
-- 'swappiness', 'awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_swappiness' - Configures the container\'s memory swappiness behavior. Determines how
-- aggressively pages are swapped. The higher the value, the more
-- aggressive the swappiness. The default is 60.
--
-- 'devices', 'awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_devices' - The host devices to expose to the container.
--
-- 'capabilities', 'awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_capabilities' - The Linux capabilities for the container that are added to or dropped
-- from the default configuration provided by Docker.
--
-- 'maxSwap', 'awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_maxSwap' - The total amount of swap memory (in MiB) that a container can use.
newAwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails ::
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
newAwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
newAwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails =
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Int
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
-> Maybe Bool
-> Maybe Int
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
-> Maybe
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
-> Maybe Int
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails'
    { $sel:sharedMemorySize:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Int
sharedMemorySize =
        Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:tmpfs:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
tmpfs =
        Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
forall a. Maybe a
Prelude.Nothing,
      $sel:initProcessEnabled:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Bool
initProcessEnabled =
        Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:swappiness:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Int
swappiness =
        Maybe Int
forall a. Maybe a
Prelude.Nothing,
      $sel:devices:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
devices =
        Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
forall a. Maybe a
Prelude.Nothing,
      $sel:capabilities:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
capabilities =
        Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
forall a. Maybe a
Prelude.Nothing,
      $sel:maxSwap:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Int
maxSwap =
        Maybe Int
forall a. Maybe a
Prelude.Nothing
    }

-- | The value for the size (in MiB) of the __\/dev\/shm__ volume.
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_sharedMemorySize :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails (Prelude.Maybe Prelude.Int)
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_sharedMemorySize :: (Maybe Int -> f (Maybe Int))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_sharedMemorySize = (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Maybe Int)
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> Maybe Int
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Lens
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {Maybe Int
sharedMemorySize :: Maybe Int
$sel:sharedMemorySize:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
sharedMemorySize} -> Maybe Int
sharedMemorySize) (\s :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s@AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {} Maybe Int
a -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s {$sel:sharedMemorySize:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Int
sharedMemorySize = Maybe Int
a} :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)

-- | The container path, mount options, and size (in MiB) of the tmpfs mount.
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_tmpfs :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_tmpfs :: (Maybe
   [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
 -> f (Maybe
         [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_tmpfs = (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Maybe
      [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> Maybe
         [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Lens
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
tmpfs :: Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
$sel:tmpfs:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
tmpfs} -> Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
tmpfs) (\s :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s@AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {} Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
a -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s {$sel:tmpfs:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
tmpfs = Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
a} :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) ((Maybe
    [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
  -> f (Maybe
          [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]))
 -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> ((Maybe
       [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
     -> f (Maybe
             [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]))
    -> Maybe
         [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
    -> f (Maybe
            [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]))
-> (Maybe
      [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
    -> f (Maybe
            [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
-> Iso
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
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
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Whether to run an @init@ process inside the container that forwards
-- signals and reaps processes.
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_initProcessEnabled :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails (Prelude.Maybe Prelude.Bool)
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_initProcessEnabled :: (Maybe Bool -> f (Maybe Bool))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_initProcessEnabled = (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Maybe Bool)
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> Maybe Bool
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Lens
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {Maybe Bool
initProcessEnabled :: Maybe Bool
$sel:initProcessEnabled:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Bool
initProcessEnabled} -> Maybe Bool
initProcessEnabled) (\s :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s@AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {} Maybe Bool
a -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s {$sel:initProcessEnabled:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Bool
initProcessEnabled = Maybe Bool
a} :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)

-- | Configures the container\'s memory swappiness behavior. Determines how
-- aggressively pages are swapped. The higher the value, the more
-- aggressive the swappiness. The default is 60.
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_swappiness :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails (Prelude.Maybe Prelude.Int)
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_swappiness :: (Maybe Int -> f (Maybe Int))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_swappiness = (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Maybe Int)
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> Maybe Int
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Lens
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {Maybe Int
swappiness :: Maybe Int
$sel:swappiness:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
swappiness} -> Maybe Int
swappiness) (\s :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s@AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {} Maybe Int
a -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s {$sel:swappiness:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Int
swappiness = Maybe Int
a} :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)

-- | The host devices to expose to the container.
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_devices :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails (Prelude.Maybe [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_devices :: (Maybe
   [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
 -> f (Maybe
         [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_devices = (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Maybe
      [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> Maybe
         [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Lens
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
devices :: Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
$sel:devices:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
devices} -> Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
devices) (\s :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s@AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {} Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
a -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s {$sel:devices:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
devices = Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
a} :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails) ((Maybe
    [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
  -> f (Maybe
          [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]))
 -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> ((Maybe
       [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
     -> f (Maybe
             [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]))
    -> Maybe
         [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
    -> f (Maybe
            [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]))
-> (Maybe
      [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
    -> f (Maybe
            [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
-> Iso
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
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
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Linux capabilities for the container that are added to or dropped
-- from the default configuration provided by Docker.
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_capabilities :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails (Prelude.Maybe AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails)
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_capabilities :: (Maybe
   AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
 -> f (Maybe
         AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_capabilities = (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Maybe
      AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails)
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> Maybe
         AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Lens
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     (Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails)
     (Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
capabilities :: Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
$sel:capabilities:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
capabilities} -> Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
capabilities) (\s :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s@AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {} Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
a -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s {$sel:capabilities:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
capabilities = Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
a} :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)

-- | The total amount of swap memory (in MiB) that a container can use.
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_maxSwap :: Lens.Lens' AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails (Prelude.Maybe Prelude.Int)
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_maxSwap :: (Maybe Int -> f (Maybe Int))
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> f AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
awsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails_maxSwap = (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
 -> Maybe Int)
-> (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
    -> Maybe Int
    -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Lens
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
     (Maybe Int)
     (Maybe Int)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {Maybe Int
maxSwap :: Maybe Int
$sel:maxSwap:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
maxSwap} -> Maybe Int
maxSwap) (\s :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s@AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {} Maybe Int
a -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
s {$sel:maxSwap:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: Maybe Int
maxSwap = Maybe Int
a} :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)

instance
  Core.FromJSON
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
  where
  parseJSON :: Value
-> Parser
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
parseJSON =
    String
-> (Object
    -> Parser
         AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Value
-> Parser
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
forall a. String -> (Object -> Parser a) -> Value -> Parser a
Core.withObject
      String
"AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails"
      ( \Object
x ->
          Maybe Int
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
-> Maybe Bool
-> Maybe Int
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
-> Maybe
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
-> Maybe Int
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails'
            (Maybe Int
 -> Maybe
      [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
 -> Maybe Bool
 -> Maybe Int
 -> Maybe
      [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
 -> Maybe
      AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
 -> Maybe Int
 -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Parser (Maybe Int)
-> Parser
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
      -> Maybe Bool
      -> Maybe Int
      -> Maybe
           [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
      -> Maybe
           AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
      -> Maybe Int
      -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
forall (f :: * -> *) a b. Functor 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
"SharedMemorySize")
              Parser
  (Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
   -> Maybe Bool
   -> Maybe Int
   -> Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
   -> Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
   -> Maybe Int
   -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Parser
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
-> Parser
     (Maybe Bool
      -> Maybe Int
      -> Maybe
           [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
      -> Maybe
           AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
      -> Maybe Int
      -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser
     (Maybe
        (Maybe
           [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Tmpfs" Parser
  (Maybe
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]))
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
-> Parser
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
forall a. Monoid a => a
Prelude.mempty)
              Parser
  (Maybe Bool
   -> Maybe Int
   -> Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
   -> Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
   -> Maybe Int
   -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Parser (Maybe Bool)
-> Parser
     (Maybe Int
      -> Maybe
           [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
      -> Maybe
           AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
      -> Maybe Int
      -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
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
"InitProcessEnabled")
              Parser
  (Maybe Int
   -> Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
   -> Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
   -> Maybe Int
   -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Parser (Maybe Int)
-> Parser
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
      -> Maybe
           AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
      -> Maybe Int
      -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
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
"Swappiness")
              Parser
  (Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
   -> Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
   -> Maybe Int
   -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Parser
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
-> Parser
     (Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
      -> Maybe Int
      -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser
     (Maybe
        (Maybe
           [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]))
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Devices" Parser
  (Maybe
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]))
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
-> Parser
     (Maybe
        [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails])
forall a. Parser (Maybe a) -> a -> Parser a
Core..!= Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
forall a. Monoid a => a
Prelude.mempty)
              Parser
  (Maybe
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
   -> Maybe Int
   -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Parser
     (Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails)
-> Parser
     (Maybe Int
      -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x Object
-> Text
-> Parser
     (Maybe
        AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails)
forall a. FromJSON a => Object -> Text -> Parser (Maybe a)
Core..:? Text
"Capabilities")
              Parser
  (Maybe Int
   -> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails)
-> Parser (Maybe Int)
-> Parser
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
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
"MaxSwap")
      )

instance
  Prelude.Hashable
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails

instance
  Prelude.NFData
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails

instance
  Core.ToJSON
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
  where
  toJSON :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Value
toJSON
    AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' {Maybe Bool
Maybe Int
Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
maxSwap :: Maybe Int
capabilities :: Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
devices :: Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
swappiness :: Maybe Int
initProcessEnabled :: Maybe Bool
tmpfs :: Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
sharedMemorySize :: Maybe Int
$sel:maxSwap:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
$sel:capabilities:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
$sel:devices:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
$sel:swappiness:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
$sel:initProcessEnabled:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Bool
$sel:tmpfs:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
$sel:sharedMemorySize:AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails' :: AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDetails
-> Maybe Int
..} =
      [Pair] -> Value
Core.object
        ( [Maybe Pair] -> [Pair]
forall a. [Maybe a] -> [a]
Prelude.catMaybes
            [ (Text
"SharedMemorySize" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
                (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
sharedMemorySize,
              (Text
"Tmpfs" Text
-> [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) ([AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
 -> Pair)
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersTmpfsDetails]
tmpfs,
              (Text
"InitProcessEnabled" Text -> Bool -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=)
                (Bool -> Pair) -> Maybe Bool -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Bool
initProcessEnabled,
              (Text
"Swappiness" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
swappiness,
              (Text
"Devices" Text
-> [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) ([AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
 -> Pair)
-> Maybe
     [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe
  [AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersDevicesDetails]
devices,
              (Text
"Capabilities" Text
-> AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
-> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
 -> Pair)
-> Maybe
     AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
-> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe
  AwsEcsTaskDefinitionContainerDefinitionsLinuxParametersCapabilitiesDetails
capabilities,
              (Text
"MaxSwap" Text -> Int -> Pair
forall kv v. (KeyValue kv, ToJSON v) => Text -> v -> kv
Core..=) (Int -> Pair) -> Maybe Int -> Maybe Pair
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
maxSwap
            ]
        )