{-# 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.SageMaker.Types.ModelPackageContainerDefinition
-- 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.SageMaker.Types.ModelPackageContainerDefinition where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.SageMaker.Types.ModelInput

-- | Describes the Docker container for the model package.
--
-- /See:/ 'newModelPackageContainerDefinition' smart constructor.
data ModelPackageContainerDefinition = ModelPackageContainerDefinition'
  { -- | The DNS host name for the Docker container.
    ModelPackageContainerDefinition -> Maybe Text
containerHostname :: Prelude.Maybe Prelude.Text,
    -- | The environment variables to set in the Docker container. Each key and
    -- value in the @Environment@ string to string map can have length of up to
    -- 1024. We support up to 16 entries in the map.
    ModelPackageContainerDefinition -> Maybe (HashMap Text Text)
environment :: Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text),
    -- | The machine learning framework of the model package container image.
    ModelPackageContainerDefinition -> Maybe Text
framework :: Prelude.Maybe Prelude.Text,
    -- | The framework version of the Model Package Container Image.
    ModelPackageContainerDefinition -> Maybe Text
frameworkVersion :: Prelude.Maybe Prelude.Text,
    -- | An MD5 hash of the training algorithm that identifies the Docker image
    -- used for training.
    ModelPackageContainerDefinition -> Maybe Text
imageDigest :: Prelude.Maybe Prelude.Text,
    -- | The Amazon S3 path where the model artifacts, which result from model
    -- training, are stored. This path must point to a single @gzip@ compressed
    -- tar archive (@.tar.gz@ suffix).
    --
    -- The model artifacts must be in an S3 bucket that is in the same region
    -- as the model package.
    ModelPackageContainerDefinition -> Maybe Text
modelDataUrl :: Prelude.Maybe Prelude.Text,
    -- | A structure with Model Input details.
    ModelPackageContainerDefinition -> Maybe ModelInput
modelInput :: Prelude.Maybe ModelInput,
    -- | The name of a pre-trained machine learning benchmarked by Amazon
    -- SageMaker Inference Recommender model that matches your model. You can
    -- find a list of benchmarked models by calling @ListModelMetadata@.
    ModelPackageContainerDefinition -> Maybe Text
nearestModelName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Web Services Marketplace product ID of the model package.
    ModelPackageContainerDefinition -> Maybe Text
productId :: Prelude.Maybe Prelude.Text,
    -- | The Amazon EC2 Container Registry (Amazon ECR) path where inference code
    -- is stored.
    --
    -- If you are using your own custom algorithm instead of an algorithm
    -- provided by SageMaker, the inference code must meet SageMaker
    -- requirements. SageMaker supports both @registry\/repository[:tag]@ and
    -- @registry\/repository[\@digest]@ image path formats. For more
    -- information, see
    -- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
    ModelPackageContainerDefinition -> Text
image :: Prelude.Text
  }
  deriving (ModelPackageContainerDefinition
-> ModelPackageContainerDefinition -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ModelPackageContainerDefinition
-> ModelPackageContainerDefinition -> Bool
$c/= :: ModelPackageContainerDefinition
-> ModelPackageContainerDefinition -> Bool
== :: ModelPackageContainerDefinition
-> ModelPackageContainerDefinition -> Bool
$c== :: ModelPackageContainerDefinition
-> ModelPackageContainerDefinition -> Bool
Prelude.Eq, ReadPrec [ModelPackageContainerDefinition]
ReadPrec ModelPackageContainerDefinition
Int -> ReadS ModelPackageContainerDefinition
ReadS [ModelPackageContainerDefinition]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ModelPackageContainerDefinition]
$creadListPrec :: ReadPrec [ModelPackageContainerDefinition]
readPrec :: ReadPrec ModelPackageContainerDefinition
$creadPrec :: ReadPrec ModelPackageContainerDefinition
readList :: ReadS [ModelPackageContainerDefinition]
$creadList :: ReadS [ModelPackageContainerDefinition]
readsPrec :: Int -> ReadS ModelPackageContainerDefinition
$creadsPrec :: Int -> ReadS ModelPackageContainerDefinition
Prelude.Read, Int -> ModelPackageContainerDefinition -> ShowS
[ModelPackageContainerDefinition] -> ShowS
ModelPackageContainerDefinition -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ModelPackageContainerDefinition] -> ShowS
$cshowList :: [ModelPackageContainerDefinition] -> ShowS
show :: ModelPackageContainerDefinition -> String
$cshow :: ModelPackageContainerDefinition -> String
showsPrec :: Int -> ModelPackageContainerDefinition -> ShowS
$cshowsPrec :: Int -> ModelPackageContainerDefinition -> ShowS
Prelude.Show, forall x.
Rep ModelPackageContainerDefinition x
-> ModelPackageContainerDefinition
forall x.
ModelPackageContainerDefinition
-> Rep ModelPackageContainerDefinition x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep ModelPackageContainerDefinition x
-> ModelPackageContainerDefinition
$cfrom :: forall x.
ModelPackageContainerDefinition
-> Rep ModelPackageContainerDefinition x
Prelude.Generic)

-- |
-- Create a value of 'ModelPackageContainerDefinition' 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:
--
-- 'containerHostname', 'modelPackageContainerDefinition_containerHostname' - The DNS host name for the Docker container.
--
-- 'environment', 'modelPackageContainerDefinition_environment' - The environment variables to set in the Docker container. Each key and
-- value in the @Environment@ string to string map can have length of up to
-- 1024. We support up to 16 entries in the map.
--
-- 'framework', 'modelPackageContainerDefinition_framework' - The machine learning framework of the model package container image.
--
-- 'frameworkVersion', 'modelPackageContainerDefinition_frameworkVersion' - The framework version of the Model Package Container Image.
--
-- 'imageDigest', 'modelPackageContainerDefinition_imageDigest' - An MD5 hash of the training algorithm that identifies the Docker image
-- used for training.
--
-- 'modelDataUrl', 'modelPackageContainerDefinition_modelDataUrl' - The Amazon S3 path where the model artifacts, which result from model
-- training, are stored. This path must point to a single @gzip@ compressed
-- tar archive (@.tar.gz@ suffix).
--
-- The model artifacts must be in an S3 bucket that is in the same region
-- as the model package.
--
-- 'modelInput', 'modelPackageContainerDefinition_modelInput' - A structure with Model Input details.
--
-- 'nearestModelName', 'modelPackageContainerDefinition_nearestModelName' - The name of a pre-trained machine learning benchmarked by Amazon
-- SageMaker Inference Recommender model that matches your model. You can
-- find a list of benchmarked models by calling @ListModelMetadata@.
--
-- 'productId', 'modelPackageContainerDefinition_productId' - The Amazon Web Services Marketplace product ID of the model package.
--
-- 'image', 'modelPackageContainerDefinition_image' - The Amazon EC2 Container Registry (Amazon ECR) path where inference code
-- is stored.
--
-- If you are using your own custom algorithm instead of an algorithm
-- provided by SageMaker, the inference code must meet SageMaker
-- requirements. SageMaker supports both @registry\/repository[:tag]@ and
-- @registry\/repository[\@digest]@ image path formats. For more
-- information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
newModelPackageContainerDefinition ::
  -- | 'image'
  Prelude.Text ->
  ModelPackageContainerDefinition
newModelPackageContainerDefinition :: Text -> ModelPackageContainerDefinition
newModelPackageContainerDefinition Text
pImage_ =
  ModelPackageContainerDefinition'
    { $sel:containerHostname:ModelPackageContainerDefinition' :: Maybe Text
containerHostname =
        forall a. Maybe a
Prelude.Nothing,
      $sel:environment:ModelPackageContainerDefinition' :: Maybe (HashMap Text Text)
environment = forall a. Maybe a
Prelude.Nothing,
      $sel:framework:ModelPackageContainerDefinition' :: Maybe Text
framework = forall a. Maybe a
Prelude.Nothing,
      $sel:frameworkVersion:ModelPackageContainerDefinition' :: Maybe Text
frameworkVersion = forall a. Maybe a
Prelude.Nothing,
      $sel:imageDigest:ModelPackageContainerDefinition' :: Maybe Text
imageDigest = forall a. Maybe a
Prelude.Nothing,
      $sel:modelDataUrl:ModelPackageContainerDefinition' :: Maybe Text
modelDataUrl = forall a. Maybe a
Prelude.Nothing,
      $sel:modelInput:ModelPackageContainerDefinition' :: Maybe ModelInput
modelInput = forall a. Maybe a
Prelude.Nothing,
      $sel:nearestModelName:ModelPackageContainerDefinition' :: Maybe Text
nearestModelName = forall a. Maybe a
Prelude.Nothing,
      $sel:productId:ModelPackageContainerDefinition' :: Maybe Text
productId = forall a. Maybe a
Prelude.Nothing,
      $sel:image:ModelPackageContainerDefinition' :: Text
image = Text
pImage_
    }

-- | The DNS host name for the Docker container.
modelPackageContainerDefinition_containerHostname :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
modelPackageContainerDefinition_containerHostname :: Lens' ModelPackageContainerDefinition (Maybe Text)
modelPackageContainerDefinition_containerHostname = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe Text
containerHostname :: Maybe Text
$sel:containerHostname:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
containerHostname} -> Maybe Text
containerHostname) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe Text
a -> ModelPackageContainerDefinition
s {$sel:containerHostname:ModelPackageContainerDefinition' :: Maybe Text
containerHostname = Maybe Text
a} :: ModelPackageContainerDefinition)

-- | The environment variables to set in the Docker container. Each key and
-- value in the @Environment@ string to string map can have length of up to
-- 1024. We support up to 16 entries in the map.
modelPackageContainerDefinition_environment :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe (Prelude.HashMap Prelude.Text Prelude.Text))
modelPackageContainerDefinition_environment :: Lens' ModelPackageContainerDefinition (Maybe (HashMap Text Text))
modelPackageContainerDefinition_environment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe (HashMap Text Text)
environment :: Maybe (HashMap Text Text)
$sel:environment:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe (HashMap Text Text)
environment} -> Maybe (HashMap Text Text)
environment) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe (HashMap Text Text)
a -> ModelPackageContainerDefinition
s {$sel:environment:ModelPackageContainerDefinition' :: Maybe (HashMap Text Text)
environment = Maybe (HashMap Text Text)
a} :: ModelPackageContainerDefinition) 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 machine learning framework of the model package container image.
modelPackageContainerDefinition_framework :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
modelPackageContainerDefinition_framework :: Lens' ModelPackageContainerDefinition (Maybe Text)
modelPackageContainerDefinition_framework = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe Text
framework :: Maybe Text
$sel:framework:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
framework} -> Maybe Text
framework) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe Text
a -> ModelPackageContainerDefinition
s {$sel:framework:ModelPackageContainerDefinition' :: Maybe Text
framework = Maybe Text
a} :: ModelPackageContainerDefinition)

-- | The framework version of the Model Package Container Image.
modelPackageContainerDefinition_frameworkVersion :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
modelPackageContainerDefinition_frameworkVersion :: Lens' ModelPackageContainerDefinition (Maybe Text)
modelPackageContainerDefinition_frameworkVersion = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe Text
frameworkVersion :: Maybe Text
$sel:frameworkVersion:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
frameworkVersion} -> Maybe Text
frameworkVersion) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe Text
a -> ModelPackageContainerDefinition
s {$sel:frameworkVersion:ModelPackageContainerDefinition' :: Maybe Text
frameworkVersion = Maybe Text
a} :: ModelPackageContainerDefinition)

-- | An MD5 hash of the training algorithm that identifies the Docker image
-- used for training.
modelPackageContainerDefinition_imageDigest :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
modelPackageContainerDefinition_imageDigest :: Lens' ModelPackageContainerDefinition (Maybe Text)
modelPackageContainerDefinition_imageDigest = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe Text
imageDigest :: Maybe Text
$sel:imageDigest:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
imageDigest} -> Maybe Text
imageDigest) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe Text
a -> ModelPackageContainerDefinition
s {$sel:imageDigest:ModelPackageContainerDefinition' :: Maybe Text
imageDigest = Maybe Text
a} :: ModelPackageContainerDefinition)

-- | The Amazon S3 path where the model artifacts, which result from model
-- training, are stored. This path must point to a single @gzip@ compressed
-- tar archive (@.tar.gz@ suffix).
--
-- The model artifacts must be in an S3 bucket that is in the same region
-- as the model package.
modelPackageContainerDefinition_modelDataUrl :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
modelPackageContainerDefinition_modelDataUrl :: Lens' ModelPackageContainerDefinition (Maybe Text)
modelPackageContainerDefinition_modelDataUrl = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe Text
modelDataUrl :: Maybe Text
$sel:modelDataUrl:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
modelDataUrl} -> Maybe Text
modelDataUrl) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe Text
a -> ModelPackageContainerDefinition
s {$sel:modelDataUrl:ModelPackageContainerDefinition' :: Maybe Text
modelDataUrl = Maybe Text
a} :: ModelPackageContainerDefinition)

-- | A structure with Model Input details.
modelPackageContainerDefinition_modelInput :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe ModelInput)
modelPackageContainerDefinition_modelInput :: Lens' ModelPackageContainerDefinition (Maybe ModelInput)
modelPackageContainerDefinition_modelInput = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe ModelInput
modelInput :: Maybe ModelInput
$sel:modelInput:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe ModelInput
modelInput} -> Maybe ModelInput
modelInput) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe ModelInput
a -> ModelPackageContainerDefinition
s {$sel:modelInput:ModelPackageContainerDefinition' :: Maybe ModelInput
modelInput = Maybe ModelInput
a} :: ModelPackageContainerDefinition)

-- | The name of a pre-trained machine learning benchmarked by Amazon
-- SageMaker Inference Recommender model that matches your model. You can
-- find a list of benchmarked models by calling @ListModelMetadata@.
modelPackageContainerDefinition_nearestModelName :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
modelPackageContainerDefinition_nearestModelName :: Lens' ModelPackageContainerDefinition (Maybe Text)
modelPackageContainerDefinition_nearestModelName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe Text
nearestModelName :: Maybe Text
$sel:nearestModelName:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
nearestModelName} -> Maybe Text
nearestModelName) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe Text
a -> ModelPackageContainerDefinition
s {$sel:nearestModelName:ModelPackageContainerDefinition' :: Maybe Text
nearestModelName = Maybe Text
a} :: ModelPackageContainerDefinition)

-- | The Amazon Web Services Marketplace product ID of the model package.
modelPackageContainerDefinition_productId :: Lens.Lens' ModelPackageContainerDefinition (Prelude.Maybe Prelude.Text)
modelPackageContainerDefinition_productId :: Lens' ModelPackageContainerDefinition (Maybe Text)
modelPackageContainerDefinition_productId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Maybe Text
productId :: Maybe Text
$sel:productId:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
productId} -> Maybe Text
productId) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Maybe Text
a -> ModelPackageContainerDefinition
s {$sel:productId:ModelPackageContainerDefinition' :: Maybe Text
productId = Maybe Text
a} :: ModelPackageContainerDefinition)

-- | The Amazon EC2 Container Registry (Amazon ECR) path where inference code
-- is stored.
--
-- If you are using your own custom algorithm instead of an algorithm
-- provided by SageMaker, the inference code must meet SageMaker
-- requirements. SageMaker supports both @registry\/repository[:tag]@ and
-- @registry\/repository[\@digest]@ image path formats. For more
-- information, see
-- <https://docs.aws.amazon.com/sagemaker/latest/dg/your-algorithms.html Using Your Own Algorithms with Amazon SageMaker>.
modelPackageContainerDefinition_image :: Lens.Lens' ModelPackageContainerDefinition Prelude.Text
modelPackageContainerDefinition_image :: Lens' ModelPackageContainerDefinition Text
modelPackageContainerDefinition_image = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ModelPackageContainerDefinition' {Text
image :: Text
$sel:image:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Text
image} -> Text
image) (\s :: ModelPackageContainerDefinition
s@ModelPackageContainerDefinition' {} Text
a -> ModelPackageContainerDefinition
s {$sel:image:ModelPackageContainerDefinition' :: Text
image = Text
a} :: ModelPackageContainerDefinition)

instance
  Data.FromJSON
    ModelPackageContainerDefinition
  where
  parseJSON :: Value -> Parser ModelPackageContainerDefinition
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"ModelPackageContainerDefinition"
      ( \Object
x ->
          Maybe Text
-> Maybe (HashMap Text Text)
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe ModelInput
-> Maybe Text
-> Maybe Text
-> Text
-> ModelPackageContainerDefinition
ModelPackageContainerDefinition'
            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
"ContainerHostname")
            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
"Framework")
            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
"FrameworkVersion")
            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
"ImageDigest")
            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
"ModelDataUrl")
            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
"ModelInput")
            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
"NearestModelName")
            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
"ProductId")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser a
Data..: Key
"Image")
      )

instance
  Prelude.Hashable
    ModelPackageContainerDefinition
  where
  hashWithSalt :: Int -> ModelPackageContainerDefinition -> Int
hashWithSalt
    Int
_salt
    ModelPackageContainerDefinition' {Maybe Text
Maybe (HashMap Text Text)
Maybe ModelInput
Text
image :: Text
productId :: Maybe Text
nearestModelName :: Maybe Text
modelInput :: Maybe ModelInput
modelDataUrl :: Maybe Text
imageDigest :: Maybe Text
frameworkVersion :: Maybe Text
framework :: Maybe Text
environment :: Maybe (HashMap Text Text)
containerHostname :: Maybe Text
$sel:image:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Text
$sel:productId:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:nearestModelName:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:modelInput:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe ModelInput
$sel:modelDataUrl:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:imageDigest:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:frameworkVersion:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:framework:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:environment:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe (HashMap Text Text)
$sel:containerHostname:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
..} =
      Int
_salt
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
containerHostname
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (HashMap Text Text)
environment
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
framework
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
frameworkVersion
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
imageDigest
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
modelDataUrl
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ModelInput
modelInput
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
nearestModelName
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
productId
        forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
image

instance
  Prelude.NFData
    ModelPackageContainerDefinition
  where
  rnf :: ModelPackageContainerDefinition -> ()
rnf ModelPackageContainerDefinition' {Maybe Text
Maybe (HashMap Text Text)
Maybe ModelInput
Text
image :: Text
productId :: Maybe Text
nearestModelName :: Maybe Text
modelInput :: Maybe ModelInput
modelDataUrl :: Maybe Text
imageDigest :: Maybe Text
frameworkVersion :: Maybe Text
framework :: Maybe Text
environment :: Maybe (HashMap Text Text)
containerHostname :: Maybe Text
$sel:image:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Text
$sel:productId:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:nearestModelName:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:modelInput:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe ModelInput
$sel:modelDataUrl:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:imageDigest:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:frameworkVersion:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:framework:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:environment:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe (HashMap Text Text)
$sel:containerHostname:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
containerHostname
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (HashMap Text Text)
environment
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
framework
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
frameworkVersion
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
imageDigest
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
modelDataUrl
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ModelInput
modelInput
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
nearestModelName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
productId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
image

instance Data.ToJSON ModelPackageContainerDefinition where
  toJSON :: ModelPackageContainerDefinition -> Value
toJSON ModelPackageContainerDefinition' {Maybe Text
Maybe (HashMap Text Text)
Maybe ModelInput
Text
image :: Text
productId :: Maybe Text
nearestModelName :: Maybe Text
modelInput :: Maybe ModelInput
modelDataUrl :: Maybe Text
imageDigest :: Maybe Text
frameworkVersion :: Maybe Text
framework :: Maybe Text
environment :: Maybe (HashMap Text Text)
containerHostname :: Maybe Text
$sel:image:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Text
$sel:productId:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:nearestModelName:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:modelInput:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe ModelInput
$sel:modelDataUrl:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:imageDigest:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:frameworkVersion:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:framework:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
$sel:environment:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe (HashMap Text Text)
$sel:containerHostname:ModelPackageContainerDefinition' :: ModelPackageContainerDefinition -> Maybe Text
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"ContainerHostname" 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
containerHostname,
            (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 (HashMap Text Text)
environment,
            (Key
"Framework" 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
framework,
            (Key
"FrameworkVersion" 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
frameworkVersion,
            (Key
"ImageDigest" 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
imageDigest,
            (Key
"ModelDataUrl" 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
modelDataUrl,
            (Key
"ModelInput" 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 ModelInput
modelInput,
            (Key
"NearestModelName" 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
nearestModelName,
            (Key
"ProductId" 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
productId,
            forall a. a -> Maybe a
Prelude.Just (Key
"Image" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
image)
          ]
      )