{-# 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.CreateEdgeDeploymentPlan
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates an edge deployment plan, consisting of multiple stages. Each
-- stage may have a different deployment configuration and devices.
module Amazonka.SageMaker.CreateEdgeDeploymentPlan
  ( -- * Creating a Request
    CreateEdgeDeploymentPlan (..),
    newCreateEdgeDeploymentPlan,

    -- * Request Lenses
    createEdgeDeploymentPlan_stages,
    createEdgeDeploymentPlan_tags,
    createEdgeDeploymentPlan_edgeDeploymentPlanName,
    createEdgeDeploymentPlan_modelConfigs,
    createEdgeDeploymentPlan_deviceFleetName,

    -- * Destructuring the Response
    CreateEdgeDeploymentPlanResponse (..),
    newCreateEdgeDeploymentPlanResponse,

    -- * Response Lenses
    createEdgeDeploymentPlanResponse_httpStatus,
    createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn,
  )
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:/ 'newCreateEdgeDeploymentPlan' smart constructor.
data CreateEdgeDeploymentPlan = CreateEdgeDeploymentPlan'
  { -- | List of stages of the edge deployment plan. The number of stages is
    -- limited to 10 per deployment.
    CreateEdgeDeploymentPlan -> Maybe [DeploymentStage]
stages :: Prelude.Maybe [DeploymentStage],
    -- | List of tags with which to tag the edge deployment plan.
    CreateEdgeDeploymentPlan -> Maybe [Tag]
tags :: Prelude.Maybe [Tag],
    -- | The name of the edge deployment plan.
    CreateEdgeDeploymentPlan -> Text
edgeDeploymentPlanName :: Prelude.Text,
    -- | List of models associated with the edge deployment plan.
    CreateEdgeDeploymentPlan -> [EdgeDeploymentModelConfig]
modelConfigs :: [EdgeDeploymentModelConfig],
    -- | The device fleet used for this edge deployment plan.
    CreateEdgeDeploymentPlan -> Text
deviceFleetName :: Prelude.Text
  }
  deriving (CreateEdgeDeploymentPlan -> CreateEdgeDeploymentPlan -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateEdgeDeploymentPlan -> CreateEdgeDeploymentPlan -> Bool
$c/= :: CreateEdgeDeploymentPlan -> CreateEdgeDeploymentPlan -> Bool
== :: CreateEdgeDeploymentPlan -> CreateEdgeDeploymentPlan -> Bool
$c== :: CreateEdgeDeploymentPlan -> CreateEdgeDeploymentPlan -> Bool
Prelude.Eq, ReadPrec [CreateEdgeDeploymentPlan]
ReadPrec CreateEdgeDeploymentPlan
Int -> ReadS CreateEdgeDeploymentPlan
ReadS [CreateEdgeDeploymentPlan]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateEdgeDeploymentPlan]
$creadListPrec :: ReadPrec [CreateEdgeDeploymentPlan]
readPrec :: ReadPrec CreateEdgeDeploymentPlan
$creadPrec :: ReadPrec CreateEdgeDeploymentPlan
readList :: ReadS [CreateEdgeDeploymentPlan]
$creadList :: ReadS [CreateEdgeDeploymentPlan]
readsPrec :: Int -> ReadS CreateEdgeDeploymentPlan
$creadsPrec :: Int -> ReadS CreateEdgeDeploymentPlan
Prelude.Read, Int -> CreateEdgeDeploymentPlan -> ShowS
[CreateEdgeDeploymentPlan] -> ShowS
CreateEdgeDeploymentPlan -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateEdgeDeploymentPlan] -> ShowS
$cshowList :: [CreateEdgeDeploymentPlan] -> ShowS
show :: CreateEdgeDeploymentPlan -> String
$cshow :: CreateEdgeDeploymentPlan -> String
showsPrec :: Int -> CreateEdgeDeploymentPlan -> ShowS
$cshowsPrec :: Int -> CreateEdgeDeploymentPlan -> ShowS
Prelude.Show, forall x.
Rep CreateEdgeDeploymentPlan x -> CreateEdgeDeploymentPlan
forall x.
CreateEdgeDeploymentPlan -> Rep CreateEdgeDeploymentPlan x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateEdgeDeploymentPlan x -> CreateEdgeDeploymentPlan
$cfrom :: forall x.
CreateEdgeDeploymentPlan -> Rep CreateEdgeDeploymentPlan x
Prelude.Generic)

-- |
-- Create a value of 'CreateEdgeDeploymentPlan' 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:
--
-- 'stages', 'createEdgeDeploymentPlan_stages' - List of stages of the edge deployment plan. The number of stages is
-- limited to 10 per deployment.
--
-- 'tags', 'createEdgeDeploymentPlan_tags' - List of tags with which to tag the edge deployment plan.
--
-- 'edgeDeploymentPlanName', 'createEdgeDeploymentPlan_edgeDeploymentPlanName' - The name of the edge deployment plan.
--
-- 'modelConfigs', 'createEdgeDeploymentPlan_modelConfigs' - List of models associated with the edge deployment plan.
--
-- 'deviceFleetName', 'createEdgeDeploymentPlan_deviceFleetName' - The device fleet used for this edge deployment plan.
newCreateEdgeDeploymentPlan ::
  -- | 'edgeDeploymentPlanName'
  Prelude.Text ->
  -- | 'deviceFleetName'
  Prelude.Text ->
  CreateEdgeDeploymentPlan
newCreateEdgeDeploymentPlan :: Text -> Text -> CreateEdgeDeploymentPlan
newCreateEdgeDeploymentPlan
  Text
pEdgeDeploymentPlanName_
  Text
pDeviceFleetName_ =
    CreateEdgeDeploymentPlan'
      { $sel:stages:CreateEdgeDeploymentPlan' :: Maybe [DeploymentStage]
stages = forall a. Maybe a
Prelude.Nothing,
        $sel:tags:CreateEdgeDeploymentPlan' :: Maybe [Tag]
tags = forall a. Maybe a
Prelude.Nothing,
        $sel:edgeDeploymentPlanName:CreateEdgeDeploymentPlan' :: Text
edgeDeploymentPlanName = Text
pEdgeDeploymentPlanName_,
        $sel:modelConfigs:CreateEdgeDeploymentPlan' :: [EdgeDeploymentModelConfig]
modelConfigs = forall a. Monoid a => a
Prelude.mempty,
        $sel:deviceFleetName:CreateEdgeDeploymentPlan' :: Text
deviceFleetName = Text
pDeviceFleetName_
      }

-- | List of stages of the edge deployment plan. The number of stages is
-- limited to 10 per deployment.
createEdgeDeploymentPlan_stages :: Lens.Lens' CreateEdgeDeploymentPlan (Prelude.Maybe [DeploymentStage])
createEdgeDeploymentPlan_stages :: Lens' CreateEdgeDeploymentPlan (Maybe [DeploymentStage])
createEdgeDeploymentPlan_stages = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEdgeDeploymentPlan' {Maybe [DeploymentStage]
stages :: Maybe [DeploymentStage]
$sel:stages:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Maybe [DeploymentStage]
stages} -> Maybe [DeploymentStage]
stages) (\s :: CreateEdgeDeploymentPlan
s@CreateEdgeDeploymentPlan' {} Maybe [DeploymentStage]
a -> CreateEdgeDeploymentPlan
s {$sel:stages:CreateEdgeDeploymentPlan' :: Maybe [DeploymentStage]
stages = Maybe [DeploymentStage]
a} :: CreateEdgeDeploymentPlan) 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

-- | List of tags with which to tag the edge deployment plan.
createEdgeDeploymentPlan_tags :: Lens.Lens' CreateEdgeDeploymentPlan (Prelude.Maybe [Tag])
createEdgeDeploymentPlan_tags :: Lens' CreateEdgeDeploymentPlan (Maybe [Tag])
createEdgeDeploymentPlan_tags = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEdgeDeploymentPlan' {Maybe [Tag]
tags :: Maybe [Tag]
$sel:tags:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Maybe [Tag]
tags} -> Maybe [Tag]
tags) (\s :: CreateEdgeDeploymentPlan
s@CreateEdgeDeploymentPlan' {} Maybe [Tag]
a -> CreateEdgeDeploymentPlan
s {$sel:tags:CreateEdgeDeploymentPlan' :: Maybe [Tag]
tags = Maybe [Tag]
a} :: CreateEdgeDeploymentPlan) 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 name of the edge deployment plan.
createEdgeDeploymentPlan_edgeDeploymentPlanName :: Lens.Lens' CreateEdgeDeploymentPlan Prelude.Text
createEdgeDeploymentPlan_edgeDeploymentPlanName :: Lens' CreateEdgeDeploymentPlan Text
createEdgeDeploymentPlan_edgeDeploymentPlanName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEdgeDeploymentPlan' {Text
edgeDeploymentPlanName :: Text
$sel:edgeDeploymentPlanName:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Text
edgeDeploymentPlanName} -> Text
edgeDeploymentPlanName) (\s :: CreateEdgeDeploymentPlan
s@CreateEdgeDeploymentPlan' {} Text
a -> CreateEdgeDeploymentPlan
s {$sel:edgeDeploymentPlanName:CreateEdgeDeploymentPlan' :: Text
edgeDeploymentPlanName = Text
a} :: CreateEdgeDeploymentPlan)

-- | List of models associated with the edge deployment plan.
createEdgeDeploymentPlan_modelConfigs :: Lens.Lens' CreateEdgeDeploymentPlan [EdgeDeploymentModelConfig]
createEdgeDeploymentPlan_modelConfigs :: Lens' CreateEdgeDeploymentPlan [EdgeDeploymentModelConfig]
createEdgeDeploymentPlan_modelConfigs = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEdgeDeploymentPlan' {[EdgeDeploymentModelConfig]
modelConfigs :: [EdgeDeploymentModelConfig]
$sel:modelConfigs:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> [EdgeDeploymentModelConfig]
modelConfigs} -> [EdgeDeploymentModelConfig]
modelConfigs) (\s :: CreateEdgeDeploymentPlan
s@CreateEdgeDeploymentPlan' {} [EdgeDeploymentModelConfig]
a -> CreateEdgeDeploymentPlan
s {$sel:modelConfigs:CreateEdgeDeploymentPlan' :: [EdgeDeploymentModelConfig]
modelConfigs = [EdgeDeploymentModelConfig]
a} :: CreateEdgeDeploymentPlan) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The device fleet used for this edge deployment plan.
createEdgeDeploymentPlan_deviceFleetName :: Lens.Lens' CreateEdgeDeploymentPlan Prelude.Text
createEdgeDeploymentPlan_deviceFleetName :: Lens' CreateEdgeDeploymentPlan Text
createEdgeDeploymentPlan_deviceFleetName = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEdgeDeploymentPlan' {Text
deviceFleetName :: Text
$sel:deviceFleetName:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Text
deviceFleetName} -> Text
deviceFleetName) (\s :: CreateEdgeDeploymentPlan
s@CreateEdgeDeploymentPlan' {} Text
a -> CreateEdgeDeploymentPlan
s {$sel:deviceFleetName:CreateEdgeDeploymentPlan' :: Text
deviceFleetName = Text
a} :: CreateEdgeDeploymentPlan)

instance Core.AWSRequest CreateEdgeDeploymentPlan where
  type
    AWSResponse CreateEdgeDeploymentPlan =
      CreateEdgeDeploymentPlanResponse
  request :: (Service -> Service)
-> CreateEdgeDeploymentPlan -> Request CreateEdgeDeploymentPlan
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 CreateEdgeDeploymentPlan
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateEdgeDeploymentPlan)))
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 -> CreateEdgeDeploymentPlanResponse
CreateEdgeDeploymentPlanResponse'
            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
"EdgeDeploymentPlanArn")
      )

instance Prelude.Hashable CreateEdgeDeploymentPlan where
  hashWithSalt :: Int -> CreateEdgeDeploymentPlan -> Int
hashWithSalt Int
_salt CreateEdgeDeploymentPlan' {[EdgeDeploymentModelConfig]
Maybe [DeploymentStage]
Maybe [Tag]
Text
deviceFleetName :: Text
modelConfigs :: [EdgeDeploymentModelConfig]
edgeDeploymentPlanName :: Text
tags :: Maybe [Tag]
stages :: Maybe [DeploymentStage]
$sel:deviceFleetName:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Text
$sel:modelConfigs:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> [EdgeDeploymentModelConfig]
$sel:edgeDeploymentPlanName:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Text
$sel:tags:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Maybe [Tag]
$sel:stages:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Maybe [DeploymentStage]
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [DeploymentStage]
stages
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Tag]
tags
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
edgeDeploymentPlanName
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` [EdgeDeploymentModelConfig]
modelConfigs
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
deviceFleetName

instance Prelude.NFData CreateEdgeDeploymentPlan where
  rnf :: CreateEdgeDeploymentPlan -> ()
rnf CreateEdgeDeploymentPlan' {[EdgeDeploymentModelConfig]
Maybe [DeploymentStage]
Maybe [Tag]
Text
deviceFleetName :: Text
modelConfigs :: [EdgeDeploymentModelConfig]
edgeDeploymentPlanName :: Text
tags :: Maybe [Tag]
stages :: Maybe [DeploymentStage]
$sel:deviceFleetName:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Text
$sel:modelConfigs:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> [EdgeDeploymentModelConfig]
$sel:edgeDeploymentPlanName:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Text
$sel:tags:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Maybe [Tag]
$sel:stages:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Maybe [DeploymentStage]
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe [DeploymentStage]
stages
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Tag]
tags
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
edgeDeploymentPlanName
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf [EdgeDeploymentModelConfig]
modelConfigs
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
deviceFleetName

instance Data.ToHeaders CreateEdgeDeploymentPlan where
  toHeaders :: CreateEdgeDeploymentPlan -> 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.CreateEdgeDeploymentPlan" ::
                          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 CreateEdgeDeploymentPlan where
  toJSON :: CreateEdgeDeploymentPlan -> Value
toJSON CreateEdgeDeploymentPlan' {[EdgeDeploymentModelConfig]
Maybe [DeploymentStage]
Maybe [Tag]
Text
deviceFleetName :: Text
modelConfigs :: [EdgeDeploymentModelConfig]
edgeDeploymentPlanName :: Text
tags :: Maybe [Tag]
stages :: Maybe [DeploymentStage]
$sel:deviceFleetName:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Text
$sel:modelConfigs:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> [EdgeDeploymentModelConfig]
$sel:edgeDeploymentPlanName:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Text
$sel:tags:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Maybe [Tag]
$sel:stages:CreateEdgeDeploymentPlan' :: CreateEdgeDeploymentPlan -> Maybe [DeploymentStage]
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"Stages" 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 [DeploymentStage]
stages,
            (Key
"Tags" 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 [Tag]
tags,
            forall a. a -> Maybe a
Prelude.Just
              ( Key
"EdgeDeploymentPlanName"
                  forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
edgeDeploymentPlanName
              ),
            forall a. a -> Maybe a
Prelude.Just (Key
"ModelConfigs" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= [EdgeDeploymentModelConfig]
modelConfigs),
            forall a. a -> Maybe a
Prelude.Just
              (Key
"DeviceFleetName" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..= Text
deviceFleetName)
          ]
      )

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

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

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

-- |
-- Create a value of 'CreateEdgeDeploymentPlanResponse' 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', 'createEdgeDeploymentPlanResponse_httpStatus' - The response's http status code.
--
-- 'edgeDeploymentPlanArn', 'createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn' - The ARN of the edge deployment plan.
newCreateEdgeDeploymentPlanResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  -- | 'edgeDeploymentPlanArn'
  Prelude.Text ->
  CreateEdgeDeploymentPlanResponse
newCreateEdgeDeploymentPlanResponse :: Int -> Text -> CreateEdgeDeploymentPlanResponse
newCreateEdgeDeploymentPlanResponse
  Int
pHttpStatus_
  Text
pEdgeDeploymentPlanArn_ =
    CreateEdgeDeploymentPlanResponse'
      { $sel:httpStatus:CreateEdgeDeploymentPlanResponse' :: Int
httpStatus =
          Int
pHttpStatus_,
        $sel:edgeDeploymentPlanArn:CreateEdgeDeploymentPlanResponse' :: Text
edgeDeploymentPlanArn =
          Text
pEdgeDeploymentPlanArn_
      }

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

-- | The ARN of the edge deployment plan.
createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn :: Lens.Lens' CreateEdgeDeploymentPlanResponse Prelude.Text
createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn :: Lens' CreateEdgeDeploymentPlanResponse Text
createEdgeDeploymentPlanResponse_edgeDeploymentPlanArn = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateEdgeDeploymentPlanResponse' {Text
edgeDeploymentPlanArn :: Text
$sel:edgeDeploymentPlanArn:CreateEdgeDeploymentPlanResponse' :: CreateEdgeDeploymentPlanResponse -> Text
edgeDeploymentPlanArn} -> Text
edgeDeploymentPlanArn) (\s :: CreateEdgeDeploymentPlanResponse
s@CreateEdgeDeploymentPlanResponse' {} Text
a -> CreateEdgeDeploymentPlanResponse
s {$sel:edgeDeploymentPlanArn:CreateEdgeDeploymentPlanResponse' :: Text
edgeDeploymentPlanArn = Text
a} :: CreateEdgeDeploymentPlanResponse)

instance
  Prelude.NFData
    CreateEdgeDeploymentPlanResponse
  where
  rnf :: CreateEdgeDeploymentPlanResponse -> ()
rnf CreateEdgeDeploymentPlanResponse' {Int
Text
edgeDeploymentPlanArn :: Text
httpStatus :: Int
$sel:edgeDeploymentPlanArn:CreateEdgeDeploymentPlanResponse' :: CreateEdgeDeploymentPlanResponse -> Text
$sel:httpStatus:CreateEdgeDeploymentPlanResponse' :: CreateEdgeDeploymentPlanResponse -> 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
edgeDeploymentPlanArn