{-# 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.ECS.Types.ContainerOverride
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.ECS.Types.ContainerOverride where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.ECS.Types.EnvironmentFile
import Amazonka.ECS.Types.KeyValuePair
import Amazonka.ECS.Types.ResourceRequirement
import qualified Amazonka.Prelude as Prelude

-- | The overrides that are sent to a container. An empty container override
-- can be passed in. An example of an empty container override is
-- @{\"containerOverrides\": [ ] }@. If a non-empty container override is
-- specified, the @name@ parameter must be included.
--
-- /See:/ 'newContainerOverride' smart constructor.
data ContainerOverride = ContainerOverride'
  { -- | The command to send to the container that overrides the default command
    -- from the Docker image or the task definition. You must also specify a
    -- container name.
    ContainerOverride -> Maybe [Text]
command :: Prelude.Maybe [Prelude.Text],
    -- | The number of @cpu@ units reserved for the container, instead of the
    -- default value from the task definition. You must also specify a
    -- container name.
    ContainerOverride -> Maybe Int
cpu :: Prelude.Maybe Prelude.Int,
    -- | The environment variables to send to the container. You can add new
    -- environment variables, which are added to the container at launch, or
    -- you can override the existing environment variables from the Docker
    -- image or the task definition. You must also specify a container name.
    ContainerOverride -> Maybe [KeyValuePair]
environment :: Prelude.Maybe [KeyValuePair],
    -- | A list of files containing the environment variables to pass to a
    -- container, instead of the value from the container definition.
    ContainerOverride -> Maybe [EnvironmentFile]
environmentFiles :: Prelude.Maybe [EnvironmentFile],
    -- | The hard limit (in MiB) of memory to present to the container, instead
    -- of the default value from the task definition. If your container
    -- attempts to exceed the memory specified here, the container is killed.
    -- You must also specify a container name.
    ContainerOverride -> Maybe Int
memory :: Prelude.Maybe Prelude.Int,
    -- | The soft limit (in MiB) of memory to reserve for the container, instead
    -- of the default value from the task definition. You must also specify a
    -- container name.
    ContainerOverride -> Maybe Int
memoryReservation :: Prelude.Maybe Prelude.Int,
    -- | The name of the container that receives the override. This parameter is
    -- required if any override is specified.
    ContainerOverride -> Maybe Text
name :: Prelude.Maybe Prelude.Text,
    -- | The type and amount of a resource to assign to a container, instead of
    -- the default value from the task definition. The only supported resource
    -- is a GPU.
    ContainerOverride -> Maybe [ResourceRequirement]
resourceRequirements :: Prelude.Maybe [ResourceRequirement]
  }
  deriving (ContainerOverride -> ContainerOverride -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ContainerOverride -> ContainerOverride -> Bool
$c/= :: ContainerOverride -> ContainerOverride -> Bool
== :: ContainerOverride -> ContainerOverride -> Bool
$c== :: ContainerOverride -> ContainerOverride -> Bool
Prelude.Eq, ReadPrec [ContainerOverride]
ReadPrec ContainerOverride
Int -> ReadS ContainerOverride
ReadS [ContainerOverride]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ContainerOverride]
$creadListPrec :: ReadPrec [ContainerOverride]
readPrec :: ReadPrec ContainerOverride
$creadPrec :: ReadPrec ContainerOverride
readList :: ReadS [ContainerOverride]
$creadList :: ReadS [ContainerOverride]
readsPrec :: Int -> ReadS ContainerOverride
$creadsPrec :: Int -> ReadS ContainerOverride
Prelude.Read, Int -> ContainerOverride -> ShowS
[ContainerOverride] -> ShowS
ContainerOverride -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ContainerOverride] -> ShowS
$cshowList :: [ContainerOverride] -> ShowS
show :: ContainerOverride -> String
$cshow :: ContainerOverride -> String
showsPrec :: Int -> ContainerOverride -> ShowS
$cshowsPrec :: Int -> ContainerOverride -> ShowS
Prelude.Show, forall x. Rep ContainerOverride x -> ContainerOverride
forall x. ContainerOverride -> Rep ContainerOverride x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ContainerOverride x -> ContainerOverride
$cfrom :: forall x. ContainerOverride -> Rep ContainerOverride x
Prelude.Generic)

-- |
-- Create a value of 'ContainerOverride' 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:
--
-- 'command', 'containerOverride_command' - The command to send to the container that overrides the default command
-- from the Docker image or the task definition. You must also specify a
-- container name.
--
-- 'cpu', 'containerOverride_cpu' - The number of @cpu@ units reserved for the container, instead of the
-- default value from the task definition. You must also specify a
-- container name.
--
-- 'environment', 'containerOverride_environment' - The environment variables to send to the container. You can add new
-- environment variables, which are added to the container at launch, or
-- you can override the existing environment variables from the Docker
-- image or the task definition. You must also specify a container name.
--
-- 'environmentFiles', 'containerOverride_environmentFiles' - A list of files containing the environment variables to pass to a
-- container, instead of the value from the container definition.
--
-- 'memory', 'containerOverride_memory' - The hard limit (in MiB) of memory to present to the container, instead
-- of the default value from the task definition. If your container
-- attempts to exceed the memory specified here, the container is killed.
-- You must also specify a container name.
--
-- 'memoryReservation', 'containerOverride_memoryReservation' - The soft limit (in MiB) of memory to reserve for the container, instead
-- of the default value from the task definition. You must also specify a
-- container name.
--
-- 'name', 'containerOverride_name' - The name of the container that receives the override. This parameter is
-- required if any override is specified.
--
-- 'resourceRequirements', 'containerOverride_resourceRequirements' - The type and amount of a resource to assign to a container, instead of
-- the default value from the task definition. The only supported resource
-- is a GPU.
newContainerOverride ::
  ContainerOverride
newContainerOverride :: ContainerOverride
newContainerOverride =
  ContainerOverride'
    { $sel:command:ContainerOverride' :: Maybe [Text]
command = forall a. Maybe a
Prelude.Nothing,
      $sel:cpu:ContainerOverride' :: Maybe Int
cpu = forall a. Maybe a
Prelude.Nothing,
      $sel:environment:ContainerOverride' :: Maybe [KeyValuePair]
environment = forall a. Maybe a
Prelude.Nothing,
      $sel:environmentFiles:ContainerOverride' :: Maybe [EnvironmentFile]
environmentFiles = forall a. Maybe a
Prelude.Nothing,
      $sel:memory:ContainerOverride' :: Maybe Int
memory = forall a. Maybe a
Prelude.Nothing,
      $sel:memoryReservation:ContainerOverride' :: Maybe Int
memoryReservation = forall a. Maybe a
Prelude.Nothing,
      $sel:name:ContainerOverride' :: Maybe Text
name = forall a. Maybe a
Prelude.Nothing,
      $sel:resourceRequirements:ContainerOverride' :: Maybe [ResourceRequirement]
resourceRequirements = forall a. Maybe a
Prelude.Nothing
    }

-- | The command to send to the container that overrides the default command
-- from the Docker image or the task definition. You must also specify a
-- container name.
containerOverride_command :: Lens.Lens' ContainerOverride (Prelude.Maybe [Prelude.Text])
containerOverride_command :: Lens' ContainerOverride (Maybe [Text])
containerOverride_command = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerOverride' {Maybe [Text]
command :: Maybe [Text]
$sel:command:ContainerOverride' :: ContainerOverride -> Maybe [Text]
command} -> Maybe [Text]
command) (\s :: ContainerOverride
s@ContainerOverride' {} Maybe [Text]
a -> ContainerOverride
s {$sel:command:ContainerOverride' :: Maybe [Text]
command = Maybe [Text]
a} :: ContainerOverride) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The number of @cpu@ units reserved for the container, instead of the
-- default value from the task definition. You must also specify a
-- container name.
containerOverride_cpu :: Lens.Lens' ContainerOverride (Prelude.Maybe Prelude.Int)
containerOverride_cpu :: Lens' ContainerOverride (Maybe Int)
containerOverride_cpu = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerOverride' {Maybe Int
cpu :: Maybe Int
$sel:cpu:ContainerOverride' :: ContainerOverride -> Maybe Int
cpu} -> Maybe Int
cpu) (\s :: ContainerOverride
s@ContainerOverride' {} Maybe Int
a -> ContainerOverride
s {$sel:cpu:ContainerOverride' :: Maybe Int
cpu = Maybe Int
a} :: ContainerOverride)

-- | The environment variables to send to the container. You can add new
-- environment variables, which are added to the container at launch, or
-- you can override the existing environment variables from the Docker
-- image or the task definition. You must also specify a container name.
containerOverride_environment :: Lens.Lens' ContainerOverride (Prelude.Maybe [KeyValuePair])
containerOverride_environment :: Lens' ContainerOverride (Maybe [KeyValuePair])
containerOverride_environment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerOverride' {Maybe [KeyValuePair]
environment :: Maybe [KeyValuePair]
$sel:environment:ContainerOverride' :: ContainerOverride -> Maybe [KeyValuePair]
environment} -> Maybe [KeyValuePair]
environment) (\s :: ContainerOverride
s@ContainerOverride' {} Maybe [KeyValuePair]
a -> ContainerOverride
s {$sel:environment:ContainerOverride' :: Maybe [KeyValuePair]
environment = Maybe [KeyValuePair]
a} :: ContainerOverride) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | A list of files containing the environment variables to pass to a
-- container, instead of the value from the container definition.
containerOverride_environmentFiles :: Lens.Lens' ContainerOverride (Prelude.Maybe [EnvironmentFile])
containerOverride_environmentFiles :: Lens' ContainerOverride (Maybe [EnvironmentFile])
containerOverride_environmentFiles = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerOverride' {Maybe [EnvironmentFile]
environmentFiles :: Maybe [EnvironmentFile]
$sel:environmentFiles:ContainerOverride' :: ContainerOverride -> Maybe [EnvironmentFile]
environmentFiles} -> Maybe [EnvironmentFile]
environmentFiles) (\s :: ContainerOverride
s@ContainerOverride' {} Maybe [EnvironmentFile]
a -> ContainerOverride
s {$sel:environmentFiles:ContainerOverride' :: Maybe [EnvironmentFile]
environmentFiles = Maybe [EnvironmentFile]
a} :: ContainerOverride) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The hard limit (in MiB) of memory to present to the container, instead
-- of the default value from the task definition. If your container
-- attempts to exceed the memory specified here, the container is killed.
-- You must also specify a container name.
containerOverride_memory :: Lens.Lens' ContainerOverride (Prelude.Maybe Prelude.Int)
containerOverride_memory :: Lens' ContainerOverride (Maybe Int)
containerOverride_memory = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerOverride' {Maybe Int
memory :: Maybe Int
$sel:memory:ContainerOverride' :: ContainerOverride -> Maybe Int
memory} -> Maybe Int
memory) (\s :: ContainerOverride
s@ContainerOverride' {} Maybe Int
a -> ContainerOverride
s {$sel:memory:ContainerOverride' :: Maybe Int
memory = Maybe Int
a} :: ContainerOverride)

-- | The soft limit (in MiB) of memory to reserve for the container, instead
-- of the default value from the task definition. You must also specify a
-- container name.
containerOverride_memoryReservation :: Lens.Lens' ContainerOverride (Prelude.Maybe Prelude.Int)
containerOverride_memoryReservation :: Lens' ContainerOverride (Maybe Int)
containerOverride_memoryReservation = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerOverride' {Maybe Int
memoryReservation :: Maybe Int
$sel:memoryReservation:ContainerOverride' :: ContainerOverride -> Maybe Int
memoryReservation} -> Maybe Int
memoryReservation) (\s :: ContainerOverride
s@ContainerOverride' {} Maybe Int
a -> ContainerOverride
s {$sel:memoryReservation:ContainerOverride' :: Maybe Int
memoryReservation = Maybe Int
a} :: ContainerOverride)

-- | The name of the container that receives the override. This parameter is
-- required if any override is specified.
containerOverride_name :: Lens.Lens' ContainerOverride (Prelude.Maybe Prelude.Text)
containerOverride_name :: Lens' ContainerOverride (Maybe Text)
containerOverride_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerOverride' {Maybe Text
name :: Maybe Text
$sel:name:ContainerOverride' :: ContainerOverride -> Maybe Text
name} -> Maybe Text
name) (\s :: ContainerOverride
s@ContainerOverride' {} Maybe Text
a -> ContainerOverride
s {$sel:name:ContainerOverride' :: Maybe Text
name = Maybe Text
a} :: ContainerOverride)

-- | The type and amount of a resource to assign to a container, instead of
-- the default value from the task definition. The only supported resource
-- is a GPU.
containerOverride_resourceRequirements :: Lens.Lens' ContainerOverride (Prelude.Maybe [ResourceRequirement])
containerOverride_resourceRequirements :: Lens' ContainerOverride (Maybe [ResourceRequirement])
containerOverride_resourceRequirements = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ContainerOverride' {Maybe [ResourceRequirement]
resourceRequirements :: Maybe [ResourceRequirement]
$sel:resourceRequirements:ContainerOverride' :: ContainerOverride -> Maybe [ResourceRequirement]
resourceRequirements} -> Maybe [ResourceRequirement]
resourceRequirements) (\s :: ContainerOverride
s@ContainerOverride' {} Maybe [ResourceRequirement]
a -> ContainerOverride
s {$sel:resourceRequirements:ContainerOverride' :: Maybe [ResourceRequirement]
resourceRequirements = Maybe [ResourceRequirement]
a} :: ContainerOverride) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Data.FromJSON ContainerOverride where
  parseJSON :: Value -> Parser ContainerOverride
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ContainerOverride"
      ( \Object
x ->
          Maybe [Text]
-> Maybe Int
-> Maybe [KeyValuePair]
-> Maybe [EnvironmentFile]
-> Maybe Int
-> Maybe Int
-> Maybe Text
-> Maybe [ResourceRequirement]
-> ContainerOverride
ContainerOverride'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"command" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"cpu")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"environment" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"environmentFiles"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"memory")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"memoryReservation")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"name")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( Object
x
                            forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"resourceRequirements"
                            forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty
                        )
      )

instance Prelude.Hashable ContainerOverride where
  hashWithSalt :: Int -> ContainerOverride -> Int
hashWithSalt Int
_salt ContainerOverride' {Maybe Int
Maybe [Text]
Maybe [EnvironmentFile]
Maybe [KeyValuePair]
Maybe [ResourceRequirement]
Maybe Text
resourceRequirements :: Maybe [ResourceRequirement]
name :: Maybe Text
memoryReservation :: Maybe Int
memory :: Maybe Int
environmentFiles :: Maybe [EnvironmentFile]
environment :: Maybe [KeyValuePair]
cpu :: Maybe Int
command :: Maybe [Text]
$sel:resourceRequirements:ContainerOverride' :: ContainerOverride -> Maybe [ResourceRequirement]
$sel:name:ContainerOverride' :: ContainerOverride -> Maybe Text
$sel:memoryReservation:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:memory:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:environmentFiles:ContainerOverride' :: ContainerOverride -> Maybe [EnvironmentFile]
$sel:environment:ContainerOverride' :: ContainerOverride -> Maybe [KeyValuePair]
$sel:cpu:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:command:ContainerOverride' :: ContainerOverride -> Maybe [Text]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
command
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
cpu
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [KeyValuePair]
environment
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [EnvironmentFile]
environmentFiles
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
memory
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
memoryReservation
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
name
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [ResourceRequirement]
resourceRequirements

instance Prelude.NFData ContainerOverride where
  rnf :: ContainerOverride -> ()
rnf ContainerOverride' {Maybe Int
Maybe [Text]
Maybe [EnvironmentFile]
Maybe [KeyValuePair]
Maybe [ResourceRequirement]
Maybe Text
resourceRequirements :: Maybe [ResourceRequirement]
name :: Maybe Text
memoryReservation :: Maybe Int
memory :: Maybe Int
environmentFiles :: Maybe [EnvironmentFile]
environment :: Maybe [KeyValuePair]
cpu :: Maybe Int
command :: Maybe [Text]
$sel:resourceRequirements:ContainerOverride' :: ContainerOverride -> Maybe [ResourceRequirement]
$sel:name:ContainerOverride' :: ContainerOverride -> Maybe Text
$sel:memoryReservation:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:memory:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:environmentFiles:ContainerOverride' :: ContainerOverride -> Maybe [EnvironmentFile]
$sel:environment:ContainerOverride' :: ContainerOverride -> Maybe [KeyValuePair]
$sel:cpu:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:command:ContainerOverride' :: ContainerOverride -> Maybe [Text]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
command
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
cpu
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [KeyValuePair]
environment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [EnvironmentFile]
environmentFiles
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
memory
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
memoryReservation
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
name
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [ResourceRequirement]
resourceRequirements

instance Data.ToJSON ContainerOverride where
  toJSON :: ContainerOverride -> Value
toJSON ContainerOverride' {Maybe Int
Maybe [Text]
Maybe [EnvironmentFile]
Maybe [KeyValuePair]
Maybe [ResourceRequirement]
Maybe Text
resourceRequirements :: Maybe [ResourceRequirement]
name :: Maybe Text
memoryReservation :: Maybe Int
memory :: Maybe Int
environmentFiles :: Maybe [EnvironmentFile]
environment :: Maybe [KeyValuePair]
cpu :: Maybe Int
command :: Maybe [Text]
$sel:resourceRequirements:ContainerOverride' :: ContainerOverride -> Maybe [ResourceRequirement]
$sel:name:ContainerOverride' :: ContainerOverride -> Maybe Text
$sel:memoryReservation:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:memory:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:environmentFiles:ContainerOverride' :: ContainerOverride -> Maybe [EnvironmentFile]
$sel:environment:ContainerOverride' :: ContainerOverride -> Maybe [KeyValuePair]
$sel:cpu:ContainerOverride' :: ContainerOverride -> Maybe Int
$sel:command:ContainerOverride' :: ContainerOverride -> Maybe [Text]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"command" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [Text]
command,
            (Key
"cpu" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
cpu,
            (Key
"environment" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [KeyValuePair]
environment,
            (Key
"environmentFiles" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [EnvironmentFile]
environmentFiles,
            (Key
"memory" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
memory,
            (Key
"memoryReservation" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Int
memoryReservation,
            (Key
"name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
name,
            (Key
"resourceRequirements" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [ResourceRequirement]
resourceRequirements
          ]
      )