{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-binds #-}
{-# 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.UpdateInferenceExperiment
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Updates an inference experiment that you created. The status of the
-- inference experiment has to be either @Created@, @Running@. For more
-- information on the status of an inference experiment, see
-- DescribeInferenceExperimentResponse$Status.
module Amazonka.SageMaker.UpdateInferenceExperiment
  ( -- * Creating a Request
    UpdateInferenceExperiment (..),
    newUpdateInferenceExperiment,

    -- * Request Lenses
    updateInferenceExperiment_dataStorageConfig,
    updateInferenceExperiment_description,
    updateInferenceExperiment_modelVariants,
    updateInferenceExperiment_schedule,
    updateInferenceExperiment_shadowModeConfig,
    updateInferenceExperiment_name,

    -- * Destructuring the Response
    UpdateInferenceExperimentResponse (..),
    newUpdateInferenceExperimentResponse,

    -- * Response Lenses
    updateInferenceExperimentResponse_httpStatus,
    updateInferenceExperimentResponse_inferenceExperimentArn,
  )
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 qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response
import Amazonka.SageMaker.Types

-- | /See:/ 'newUpdateInferenceExperiment' smart constructor.
data UpdateInferenceExperiment = UpdateInferenceExperiment'
  { -- | The Amazon S3 location and configuration for storing inference request
    -- and response data.
    UpdateInferenceExperiment
-> Maybe InferenceExperimentDataStorageConfig
dataStorageConfig :: Prelude.Maybe InferenceExperimentDataStorageConfig,
    -- | The description of the inference experiment.
    UpdateInferenceExperiment -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | An array of @ModelVariantConfig@ objects. There is one for each variant,
    -- whose infrastructure configuration you want to update.
    UpdateInferenceExperiment -> Maybe (NonEmpty ModelVariantConfig)
modelVariants :: Prelude.Maybe (Prelude.NonEmpty ModelVariantConfig),
    -- | The duration for which the inference experiment will run. If the status
    -- of the inference experiment is @Created@, then you can update both the
    -- start and end dates. If the status of the inference experiment is
    -- @Running@, then you can update only the end date.
    UpdateInferenceExperiment -> Maybe InferenceExperimentSchedule
schedule :: Prelude.Maybe InferenceExperimentSchedule,
    -- | The configuration of @ShadowMode@ inference experiment type. Use this
    -- field to specify a production variant which takes all the inference
    -- requests, and a shadow variant to which Amazon SageMaker replicates a
    -- percentage of the inference requests. For the shadow variant also
    -- specify the percentage of requests that Amazon SageMaker replicates.
    UpdateInferenceExperiment -> Maybe ShadowModeConfig
shadowModeConfig :: Prelude.Maybe ShadowModeConfig,
    -- | The name of the inference experiment to be updated.
    UpdateInferenceExperiment -> Text
name :: Prelude.Text
  }
  deriving (UpdateInferenceExperiment -> UpdateInferenceExperiment -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateInferenceExperiment -> UpdateInferenceExperiment -> Bool
$c/= :: UpdateInferenceExperiment -> UpdateInferenceExperiment -> Bool
== :: UpdateInferenceExperiment -> UpdateInferenceExperiment -> Bool
$c== :: UpdateInferenceExperiment -> UpdateInferenceExperiment -> Bool
Prelude.Eq, ReadPrec [UpdateInferenceExperiment]
ReadPrec UpdateInferenceExperiment
Int -> ReadS UpdateInferenceExperiment
ReadS [UpdateInferenceExperiment]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateInferenceExperiment]
$creadListPrec :: ReadPrec [UpdateInferenceExperiment]
readPrec :: ReadPrec UpdateInferenceExperiment
$creadPrec :: ReadPrec UpdateInferenceExperiment
readList :: ReadS [UpdateInferenceExperiment]
$creadList :: ReadS [UpdateInferenceExperiment]
readsPrec :: Int -> ReadS UpdateInferenceExperiment
$creadsPrec :: Int -> ReadS UpdateInferenceExperiment
Prelude.Read, Int -> UpdateInferenceExperiment -> ShowS
[UpdateInferenceExperiment] -> ShowS
UpdateInferenceExperiment -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateInferenceExperiment] -> ShowS
$cshowList :: [UpdateInferenceExperiment] -> ShowS
show :: UpdateInferenceExperiment -> String
$cshow :: UpdateInferenceExperiment -> String
showsPrec :: Int -> UpdateInferenceExperiment -> ShowS
$cshowsPrec :: Int -> UpdateInferenceExperiment -> ShowS
Prelude.Show, forall x.
Rep UpdateInferenceExperiment x -> UpdateInferenceExperiment
forall x.
UpdateInferenceExperiment -> Rep UpdateInferenceExperiment x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateInferenceExperiment x -> UpdateInferenceExperiment
$cfrom :: forall x.
UpdateInferenceExperiment -> Rep UpdateInferenceExperiment x
Prelude.Generic)

-- |
-- Create a value of 'UpdateInferenceExperiment' 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:
--
-- 'dataStorageConfig', 'updateInferenceExperiment_dataStorageConfig' - The Amazon S3 location and configuration for storing inference request
-- and response data.
--
-- 'description', 'updateInferenceExperiment_description' - The description of the inference experiment.
--
-- 'modelVariants', 'updateInferenceExperiment_modelVariants' - An array of @ModelVariantConfig@ objects. There is one for each variant,
-- whose infrastructure configuration you want to update.
--
-- 'schedule', 'updateInferenceExperiment_schedule' - The duration for which the inference experiment will run. If the status
-- of the inference experiment is @Created@, then you can update both the
-- start and end dates. If the status of the inference experiment is
-- @Running@, then you can update only the end date.
--
-- 'shadowModeConfig', 'updateInferenceExperiment_shadowModeConfig' - The configuration of @ShadowMode@ inference experiment type. Use this
-- field to specify a production variant which takes all the inference
-- requests, and a shadow variant to which Amazon SageMaker replicates a
-- percentage of the inference requests. For the shadow variant also
-- specify the percentage of requests that Amazon SageMaker replicates.
--
-- 'name', 'updateInferenceExperiment_name' - The name of the inference experiment to be updated.
newUpdateInferenceExperiment ::
  -- | 'name'
  Prelude.Text ->
  UpdateInferenceExperiment
newUpdateInferenceExperiment :: Text -> UpdateInferenceExperiment
newUpdateInferenceExperiment Text
pName_ =
  UpdateInferenceExperiment'
    { $sel:dataStorageConfig:UpdateInferenceExperiment' :: Maybe InferenceExperimentDataStorageConfig
dataStorageConfig =
        forall a. Maybe a
Prelude.Nothing,
      $sel:description:UpdateInferenceExperiment' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:modelVariants:UpdateInferenceExperiment' :: Maybe (NonEmpty ModelVariantConfig)
modelVariants = forall a. Maybe a
Prelude.Nothing,
      $sel:schedule:UpdateInferenceExperiment' :: Maybe InferenceExperimentSchedule
schedule = forall a. Maybe a
Prelude.Nothing,
      $sel:shadowModeConfig:UpdateInferenceExperiment' :: Maybe ShadowModeConfig
shadowModeConfig = forall a. Maybe a
Prelude.Nothing,
      $sel:name:UpdateInferenceExperiment' :: Text
name = Text
pName_
    }

-- | The Amazon S3 location and configuration for storing inference request
-- and response data.
updateInferenceExperiment_dataStorageConfig :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe InferenceExperimentDataStorageConfig)
updateInferenceExperiment_dataStorageConfig :: Lens'
  UpdateInferenceExperiment
  (Maybe InferenceExperimentDataStorageConfig)
updateInferenceExperiment_dataStorageConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateInferenceExperiment' {Maybe InferenceExperimentDataStorageConfig
dataStorageConfig :: Maybe InferenceExperimentDataStorageConfig
$sel:dataStorageConfig:UpdateInferenceExperiment' :: UpdateInferenceExperiment
-> Maybe InferenceExperimentDataStorageConfig
dataStorageConfig} -> Maybe InferenceExperimentDataStorageConfig
dataStorageConfig) (\s :: UpdateInferenceExperiment
s@UpdateInferenceExperiment' {} Maybe InferenceExperimentDataStorageConfig
a -> UpdateInferenceExperiment
s {$sel:dataStorageConfig:UpdateInferenceExperiment' :: Maybe InferenceExperimentDataStorageConfig
dataStorageConfig = Maybe InferenceExperimentDataStorageConfig
a} :: UpdateInferenceExperiment)

-- | The description of the inference experiment.
updateInferenceExperiment_description :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe Prelude.Text)
updateInferenceExperiment_description :: Lens' UpdateInferenceExperiment (Maybe Text)
updateInferenceExperiment_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateInferenceExperiment' {Maybe Text
description :: Maybe Text
$sel:description:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe Text
description} -> Maybe Text
description) (\s :: UpdateInferenceExperiment
s@UpdateInferenceExperiment' {} Maybe Text
a -> UpdateInferenceExperiment
s {$sel:description:UpdateInferenceExperiment' :: Maybe Text
description = Maybe Text
a} :: UpdateInferenceExperiment)

-- | An array of @ModelVariantConfig@ objects. There is one for each variant,
-- whose infrastructure configuration you want to update.
updateInferenceExperiment_modelVariants :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe (Prelude.NonEmpty ModelVariantConfig))
updateInferenceExperiment_modelVariants :: Lens'
  UpdateInferenceExperiment (Maybe (NonEmpty ModelVariantConfig))
updateInferenceExperiment_modelVariants = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateInferenceExperiment' {Maybe (NonEmpty ModelVariantConfig)
modelVariants :: Maybe (NonEmpty ModelVariantConfig)
$sel:modelVariants:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe (NonEmpty ModelVariantConfig)
modelVariants} -> Maybe (NonEmpty ModelVariantConfig)
modelVariants) (\s :: UpdateInferenceExperiment
s@UpdateInferenceExperiment' {} Maybe (NonEmpty ModelVariantConfig)
a -> UpdateInferenceExperiment
s {$sel:modelVariants:UpdateInferenceExperiment' :: Maybe (NonEmpty ModelVariantConfig)
modelVariants = Maybe (NonEmpty ModelVariantConfig)
a} :: UpdateInferenceExperiment) 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 duration for which the inference experiment will run. If the status
-- of the inference experiment is @Created@, then you can update both the
-- start and end dates. If the status of the inference experiment is
-- @Running@, then you can update only the end date.
updateInferenceExperiment_schedule :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe InferenceExperimentSchedule)
updateInferenceExperiment_schedule :: Lens' UpdateInferenceExperiment (Maybe InferenceExperimentSchedule)
updateInferenceExperiment_schedule = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateInferenceExperiment' {Maybe InferenceExperimentSchedule
schedule :: Maybe InferenceExperimentSchedule
$sel:schedule:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe InferenceExperimentSchedule
schedule} -> Maybe InferenceExperimentSchedule
schedule) (\s :: UpdateInferenceExperiment
s@UpdateInferenceExperiment' {} Maybe InferenceExperimentSchedule
a -> UpdateInferenceExperiment
s {$sel:schedule:UpdateInferenceExperiment' :: Maybe InferenceExperimentSchedule
schedule = Maybe InferenceExperimentSchedule
a} :: UpdateInferenceExperiment)

-- | The configuration of @ShadowMode@ inference experiment type. Use this
-- field to specify a production variant which takes all the inference
-- requests, and a shadow variant to which Amazon SageMaker replicates a
-- percentage of the inference requests. For the shadow variant also
-- specify the percentage of requests that Amazon SageMaker replicates.
updateInferenceExperiment_shadowModeConfig :: Lens.Lens' UpdateInferenceExperiment (Prelude.Maybe ShadowModeConfig)
updateInferenceExperiment_shadowModeConfig :: Lens' UpdateInferenceExperiment (Maybe ShadowModeConfig)
updateInferenceExperiment_shadowModeConfig = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateInferenceExperiment' {Maybe ShadowModeConfig
shadowModeConfig :: Maybe ShadowModeConfig
$sel:shadowModeConfig:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe ShadowModeConfig
shadowModeConfig} -> Maybe ShadowModeConfig
shadowModeConfig) (\s :: UpdateInferenceExperiment
s@UpdateInferenceExperiment' {} Maybe ShadowModeConfig
a -> UpdateInferenceExperiment
s {$sel:shadowModeConfig:UpdateInferenceExperiment' :: Maybe ShadowModeConfig
shadowModeConfig = Maybe ShadowModeConfig
a} :: UpdateInferenceExperiment)

-- | The name of the inference experiment to be updated.
updateInferenceExperiment_name :: Lens.Lens' UpdateInferenceExperiment Prelude.Text
updateInferenceExperiment_name :: Lens' UpdateInferenceExperiment Text
updateInferenceExperiment_name = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateInferenceExperiment' {Text
name :: Text
$sel:name:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Text
name} -> Text
name) (\s :: UpdateInferenceExperiment
s@UpdateInferenceExperiment' {} Text
a -> UpdateInferenceExperiment
s {$sel:name:UpdateInferenceExperiment' :: Text
name = Text
a} :: UpdateInferenceExperiment)

instance Core.AWSRequest UpdateInferenceExperiment where
  type
    AWSResponse UpdateInferenceExperiment =
      UpdateInferenceExperimentResponse
  request :: (Service -> Service)
-> UpdateInferenceExperiment -> Request UpdateInferenceExperiment
request Service -> Service
overrides =
    forall a. (ToRequest a, ToJSON a) => Service -> a -> Request a
Request.postJSON (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy UpdateInferenceExperiment
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse UpdateInferenceExperiment)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> Object -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveJSON
      ( \Int
s ResponseHeaders
h Object
x ->
          Int -> Text -> UpdateInferenceExperimentResponse
UpdateInferenceExperimentResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (forall (f :: * -> *) a. Applicative f => a -> f a
Prelude.pure (forall a. Enum a => a -> Int
Prelude.fromEnum Int
s))
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Either String a
Data..:> Key
"InferenceExperimentArn")
      )

instance Prelude.Hashable UpdateInferenceExperiment where
  hashWithSalt :: Int -> UpdateInferenceExperiment -> Int
hashWithSalt Int
_salt UpdateInferenceExperiment' {Maybe (NonEmpty ModelVariantConfig)
Maybe Text
Maybe InferenceExperimentDataStorageConfig
Maybe InferenceExperimentSchedule
Maybe ShadowModeConfig
Text
name :: Text
shadowModeConfig :: Maybe ShadowModeConfig
schedule :: Maybe InferenceExperimentSchedule
modelVariants :: Maybe (NonEmpty ModelVariantConfig)
description :: Maybe Text
dataStorageConfig :: Maybe InferenceExperimentDataStorageConfig
$sel:name:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Text
$sel:shadowModeConfig:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe ShadowModeConfig
$sel:schedule:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe InferenceExperimentSchedule
$sel:modelVariants:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe (NonEmpty ModelVariantConfig)
$sel:description:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe Text
$sel:dataStorageConfig:UpdateInferenceExperiment' :: UpdateInferenceExperiment
-> Maybe InferenceExperimentDataStorageConfig
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InferenceExperimentDataStorageConfig
dataStorageConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe (NonEmpty ModelVariantConfig)
modelVariants
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe InferenceExperimentSchedule
schedule
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ShadowModeConfig
shadowModeConfig
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
name

instance Prelude.NFData UpdateInferenceExperiment where
  rnf :: UpdateInferenceExperiment -> ()
rnf UpdateInferenceExperiment' {Maybe (NonEmpty ModelVariantConfig)
Maybe Text
Maybe InferenceExperimentDataStorageConfig
Maybe InferenceExperimentSchedule
Maybe ShadowModeConfig
Text
name :: Text
shadowModeConfig :: Maybe ShadowModeConfig
schedule :: Maybe InferenceExperimentSchedule
modelVariants :: Maybe (NonEmpty ModelVariantConfig)
description :: Maybe Text
dataStorageConfig :: Maybe InferenceExperimentDataStorageConfig
$sel:name:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Text
$sel:shadowModeConfig:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe ShadowModeConfig
$sel:schedule:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe InferenceExperimentSchedule
$sel:modelVariants:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe (NonEmpty ModelVariantConfig)
$sel:description:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe Text
$sel:dataStorageConfig:UpdateInferenceExperiment' :: UpdateInferenceExperiment
-> Maybe InferenceExperimentDataStorageConfig
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe InferenceExperimentDataStorageConfig
dataStorageConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
description
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe (NonEmpty ModelVariantConfig)
modelVariants
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe InferenceExperimentSchedule
schedule
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ShadowModeConfig
shadowModeConfig
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
name

instance Data.ToHeaders UpdateInferenceExperiment where
  toHeaders :: UpdateInferenceExperiment -> ResponseHeaders
toHeaders =
    forall a b. a -> b -> a
Prelude.const
      ( forall a. Monoid a => [a] -> a
Prelude.mconcat
          [ HeaderName
"X-Amz-Target"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"SageMaker.UpdateInferenceExperiment" ::
                          Prelude.ByteString
                      ),
            HeaderName
"Content-Type"
              forall a. ToHeader a => HeaderName -> a -> ResponseHeaders
Data.=# ( ByteString
"application/x-amz-json-1.1" ::
                          Prelude.ByteString
                      )
          ]
      )

instance Data.ToJSON UpdateInferenceExperiment where
  toJSON :: UpdateInferenceExperiment -> Value
toJSON UpdateInferenceExperiment' {Maybe (NonEmpty ModelVariantConfig)
Maybe Text
Maybe InferenceExperimentDataStorageConfig
Maybe InferenceExperimentSchedule
Maybe ShadowModeConfig
Text
name :: Text
shadowModeConfig :: Maybe ShadowModeConfig
schedule :: Maybe InferenceExperimentSchedule
modelVariants :: Maybe (NonEmpty ModelVariantConfig)
description :: Maybe Text
dataStorageConfig :: Maybe InferenceExperimentDataStorageConfig
$sel:name:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Text
$sel:shadowModeConfig:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe ShadowModeConfig
$sel:schedule:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe InferenceExperimentSchedule
$sel:modelVariants:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe (NonEmpty ModelVariantConfig)
$sel:description:UpdateInferenceExperiment' :: UpdateInferenceExperiment -> Maybe Text
$sel:dataStorageConfig:UpdateInferenceExperiment' :: UpdateInferenceExperiment
-> Maybe InferenceExperimentDataStorageConfig
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"DataStorageConfig" 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 InferenceExperimentDataStorageConfig
dataStorageConfig,
            (Key
"Description" 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
description,
            (Key
"ModelVariants" 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 (NonEmpty ModelVariantConfig)
modelVariants,
            (Key
"Schedule" 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 InferenceExperimentSchedule
schedule,
            (Key
"ShadowModeConfig" 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 ShadowModeConfig
shadowModeConfig,
            forall a. a -> Maybe a
Prelude.Just (Key
"Name" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
name)
          ]
      )

instance Data.ToPath UpdateInferenceExperiment where
  toPath :: UpdateInferenceExperiment -> ByteString
toPath = forall a b. a -> b -> a
Prelude.const ByteString
"/"

instance Data.ToQuery UpdateInferenceExperiment where
  toQuery :: UpdateInferenceExperiment -> QueryString
toQuery = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

-- | /See:/ 'newUpdateInferenceExperimentResponse' smart constructor.
data UpdateInferenceExperimentResponse = UpdateInferenceExperimentResponse'
  { -- | The response's http status code.
    UpdateInferenceExperimentResponse -> Int
httpStatus :: Prelude.Int,
    -- | The ARN of the updated inference experiment.
    UpdateInferenceExperimentResponse -> Text
inferenceExperimentArn :: Prelude.Text
  }
  deriving (UpdateInferenceExperimentResponse
-> UpdateInferenceExperimentResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: UpdateInferenceExperimentResponse
-> UpdateInferenceExperimentResponse -> Bool
$c/= :: UpdateInferenceExperimentResponse
-> UpdateInferenceExperimentResponse -> Bool
== :: UpdateInferenceExperimentResponse
-> UpdateInferenceExperimentResponse -> Bool
$c== :: UpdateInferenceExperimentResponse
-> UpdateInferenceExperimentResponse -> Bool
Prelude.Eq, ReadPrec [UpdateInferenceExperimentResponse]
ReadPrec UpdateInferenceExperimentResponse
Int -> ReadS UpdateInferenceExperimentResponse
ReadS [UpdateInferenceExperimentResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [UpdateInferenceExperimentResponse]
$creadListPrec :: ReadPrec [UpdateInferenceExperimentResponse]
readPrec :: ReadPrec UpdateInferenceExperimentResponse
$creadPrec :: ReadPrec UpdateInferenceExperimentResponse
readList :: ReadS [UpdateInferenceExperimentResponse]
$creadList :: ReadS [UpdateInferenceExperimentResponse]
readsPrec :: Int -> ReadS UpdateInferenceExperimentResponse
$creadsPrec :: Int -> ReadS UpdateInferenceExperimentResponse
Prelude.Read, Int -> UpdateInferenceExperimentResponse -> ShowS
[UpdateInferenceExperimentResponse] -> ShowS
UpdateInferenceExperimentResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [UpdateInferenceExperimentResponse] -> ShowS
$cshowList :: [UpdateInferenceExperimentResponse] -> ShowS
show :: UpdateInferenceExperimentResponse -> String
$cshow :: UpdateInferenceExperimentResponse -> String
showsPrec :: Int -> UpdateInferenceExperimentResponse -> ShowS
$cshowsPrec :: Int -> UpdateInferenceExperimentResponse -> ShowS
Prelude.Show, forall x.
Rep UpdateInferenceExperimentResponse x
-> UpdateInferenceExperimentResponse
forall x.
UpdateInferenceExperimentResponse
-> Rep UpdateInferenceExperimentResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep UpdateInferenceExperimentResponse x
-> UpdateInferenceExperimentResponse
$cfrom :: forall x.
UpdateInferenceExperimentResponse
-> Rep UpdateInferenceExperimentResponse x
Prelude.Generic)

-- |
-- Create a value of 'UpdateInferenceExperimentResponse' 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:
--
-- 'httpStatus', 'updateInferenceExperimentResponse_httpStatus' - The response's http status code.
--
-- 'inferenceExperimentArn', 'updateInferenceExperimentResponse_inferenceExperimentArn' - The ARN of the updated inference experiment.
newUpdateInferenceExperimentResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'inferenceExperimentArn'
  Prelude.Text ->
  UpdateInferenceExperimentResponse
newUpdateInferenceExperimentResponse :: Int -> Text -> UpdateInferenceExperimentResponse
newUpdateInferenceExperimentResponse
  Int
pHttpStatus_
  Text
pInferenceExperimentArn_ =
    UpdateInferenceExperimentResponse'
      { $sel:httpStatus:UpdateInferenceExperimentResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:inferenceExperimentArn:UpdateInferenceExperimentResponse' :: Text
inferenceExperimentArn =
          Text
pInferenceExperimentArn_
      }

-- | The response's http status code.
updateInferenceExperimentResponse_httpStatus :: Lens.Lens' UpdateInferenceExperimentResponse Prelude.Int
updateInferenceExperimentResponse_httpStatus :: Lens' UpdateInferenceExperimentResponse Int
updateInferenceExperimentResponse_httpStatus = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateInferenceExperimentResponse' {Int
httpStatus :: Int
$sel:httpStatus:UpdateInferenceExperimentResponse' :: UpdateInferenceExperimentResponse -> Int
httpStatus} -> Int
httpStatus) (\s :: UpdateInferenceExperimentResponse
s@UpdateInferenceExperimentResponse' {} Int
a -> UpdateInferenceExperimentResponse
s {$sel:httpStatus:UpdateInferenceExperimentResponse' :: Int
httpStatus = Int
a} :: UpdateInferenceExperimentResponse)

-- | The ARN of the updated inference experiment.
updateInferenceExperimentResponse_inferenceExperimentArn :: Lens.Lens' UpdateInferenceExperimentResponse Prelude.Text
updateInferenceExperimentResponse_inferenceExperimentArn :: Lens' UpdateInferenceExperimentResponse Text
updateInferenceExperimentResponse_inferenceExperimentArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\UpdateInferenceExperimentResponse' {Text
inferenceExperimentArn :: Text
$sel:inferenceExperimentArn:UpdateInferenceExperimentResponse' :: UpdateInferenceExperimentResponse -> Text
inferenceExperimentArn} -> Text
inferenceExperimentArn) (\s :: UpdateInferenceExperimentResponse
s@UpdateInferenceExperimentResponse' {} Text
a -> UpdateInferenceExperimentResponse
s {$sel:inferenceExperimentArn:UpdateInferenceExperimentResponse' :: Text
inferenceExperimentArn = Text
a} :: UpdateInferenceExperimentResponse)

instance
  Prelude.NFData
    UpdateInferenceExperimentResponse
  where
  rnf :: UpdateInferenceExperimentResponse -> ()
rnf UpdateInferenceExperimentResponse' {Int
Text
inferenceExperimentArn :: Text
httpStatus :: Int
$sel:inferenceExperimentArn:UpdateInferenceExperimentResponse' :: UpdateInferenceExperimentResponse -> Text
$sel:httpStatus:UpdateInferenceExperimentResponse' :: UpdateInferenceExperimentResponse -> Int
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
inferenceExperimentArn