{-# 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.EC2.CreateInstanceExportTask
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Exports a running or stopped instance to an Amazon S3 bucket.
--
-- For information about the supported operating systems, image formats,
-- and known limitations for the types of instances you can export, see
-- <https://docs.aws.amazon.com/vm-import/latest/userguide/vmexport.html Exporting an instance as a VM Using VM Import\/Export>
-- in the /VM Import\/Export User Guide/.
module Amazonka.EC2.CreateInstanceExportTask
  ( -- * Creating a Request
    CreateInstanceExportTask (..),
    newCreateInstanceExportTask,

    -- * Request Lenses
    createInstanceExportTask_description,
    createInstanceExportTask_tagSpecifications,
    createInstanceExportTask_exportToS3Task,
    createInstanceExportTask_instanceId,
    createInstanceExportTask_targetEnvironment,

    -- * Destructuring the Response
    CreateInstanceExportTaskResponse (..),
    newCreateInstanceExportTaskResponse,

    -- * Response Lenses
    createInstanceExportTaskResponse_exportTask,
    createInstanceExportTaskResponse_httpStatus,
  )
where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Types
import qualified Amazonka.Prelude as Prelude
import qualified Amazonka.Request as Request
import qualified Amazonka.Response as Response

-- | /See:/ 'newCreateInstanceExportTask' smart constructor.
data CreateInstanceExportTask = CreateInstanceExportTask'
  { -- | A description for the conversion task or the resource being exported.
    -- The maximum length is 255 characters.
    CreateInstanceExportTask -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The tags to apply to the export instance task during creation.
    CreateInstanceExportTask -> Maybe [TagSpecification]
tagSpecifications :: Prelude.Maybe [TagSpecification],
    -- | The format and location for an export instance task.
    CreateInstanceExportTask -> ExportToS3TaskSpecification
exportToS3Task :: ExportToS3TaskSpecification,
    -- | The ID of the instance.
    CreateInstanceExportTask -> Text
instanceId :: Prelude.Text,
    -- | The target virtualization environment.
    CreateInstanceExportTask -> ExportEnvironment
targetEnvironment :: ExportEnvironment
  }
  deriving (CreateInstanceExportTask -> CreateInstanceExportTask -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateInstanceExportTask -> CreateInstanceExportTask -> Bool
$c/= :: CreateInstanceExportTask -> CreateInstanceExportTask -> Bool
== :: CreateInstanceExportTask -> CreateInstanceExportTask -> Bool
$c== :: CreateInstanceExportTask -> CreateInstanceExportTask -> Bool
Prelude.Eq, ReadPrec [CreateInstanceExportTask]
ReadPrec CreateInstanceExportTask
Int -> ReadS CreateInstanceExportTask
ReadS [CreateInstanceExportTask]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateInstanceExportTask]
$creadListPrec :: ReadPrec [CreateInstanceExportTask]
readPrec :: ReadPrec CreateInstanceExportTask
$creadPrec :: ReadPrec CreateInstanceExportTask
readList :: ReadS [CreateInstanceExportTask]
$creadList :: ReadS [CreateInstanceExportTask]
readsPrec :: Int -> ReadS CreateInstanceExportTask
$creadsPrec :: Int -> ReadS CreateInstanceExportTask
Prelude.Read, Int -> CreateInstanceExportTask -> ShowS
[CreateInstanceExportTask] -> ShowS
CreateInstanceExportTask -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateInstanceExportTask] -> ShowS
$cshowList :: [CreateInstanceExportTask] -> ShowS
show :: CreateInstanceExportTask -> String
$cshow :: CreateInstanceExportTask -> String
showsPrec :: Int -> CreateInstanceExportTask -> ShowS
$cshowsPrec :: Int -> CreateInstanceExportTask -> ShowS
Prelude.Show, forall x.
Rep CreateInstanceExportTask x -> CreateInstanceExportTask
forall x.
CreateInstanceExportTask -> Rep CreateInstanceExportTask x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateInstanceExportTask x -> CreateInstanceExportTask
$cfrom :: forall x.
CreateInstanceExportTask -> Rep CreateInstanceExportTask x
Prelude.Generic)

-- |
-- Create a value of 'CreateInstanceExportTask' 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:
--
-- 'description', 'createInstanceExportTask_description' - A description for the conversion task or the resource being exported.
-- The maximum length is 255 characters.
--
-- 'tagSpecifications', 'createInstanceExportTask_tagSpecifications' - The tags to apply to the export instance task during creation.
--
-- 'exportToS3Task', 'createInstanceExportTask_exportToS3Task' - The format and location for an export instance task.
--
-- 'instanceId', 'createInstanceExportTask_instanceId' - The ID of the instance.
--
-- 'targetEnvironment', 'createInstanceExportTask_targetEnvironment' - The target virtualization environment.
newCreateInstanceExportTask ::
  -- | 'exportToS3Task'
  ExportToS3TaskSpecification ->
  -- | 'instanceId'
  Prelude.Text ->
  -- | 'targetEnvironment'
  ExportEnvironment ->
  CreateInstanceExportTask
newCreateInstanceExportTask :: ExportToS3TaskSpecification
-> Text -> ExportEnvironment -> CreateInstanceExportTask
newCreateInstanceExportTask
  ExportToS3TaskSpecification
pExportToS3Task_
  Text
pInstanceId_
  ExportEnvironment
pTargetEnvironment_ =
    CreateInstanceExportTask'
      { $sel:description:CreateInstanceExportTask' :: Maybe Text
description =
          forall a. Maybe a
Prelude.Nothing,
        $sel:tagSpecifications:CreateInstanceExportTask' :: Maybe [TagSpecification]
tagSpecifications = forall a. Maybe a
Prelude.Nothing,
        $sel:exportToS3Task:CreateInstanceExportTask' :: ExportToS3TaskSpecification
exportToS3Task = ExportToS3TaskSpecification
pExportToS3Task_,
        $sel:instanceId:CreateInstanceExportTask' :: Text
instanceId = Text
pInstanceId_,
        $sel:targetEnvironment:CreateInstanceExportTask' :: ExportEnvironment
targetEnvironment = ExportEnvironment
pTargetEnvironment_
      }

-- | A description for the conversion task or the resource being exported.
-- The maximum length is 255 characters.
createInstanceExportTask_description :: Lens.Lens' CreateInstanceExportTask (Prelude.Maybe Prelude.Text)
createInstanceExportTask_description :: Lens' CreateInstanceExportTask (Maybe Text)
createInstanceExportTask_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceExportTask' {Maybe Text
description :: Maybe Text
$sel:description:CreateInstanceExportTask' :: CreateInstanceExportTask -> Maybe Text
description} -> Maybe Text
description) (\s :: CreateInstanceExportTask
s@CreateInstanceExportTask' {} Maybe Text
a -> CreateInstanceExportTask
s {$sel:description:CreateInstanceExportTask' :: Maybe Text
description = Maybe Text
a} :: CreateInstanceExportTask)

-- | The tags to apply to the export instance task during creation.
createInstanceExportTask_tagSpecifications :: Lens.Lens' CreateInstanceExportTask (Prelude.Maybe [TagSpecification])
createInstanceExportTask_tagSpecifications :: Lens' CreateInstanceExportTask (Maybe [TagSpecification])
createInstanceExportTask_tagSpecifications = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceExportTask' {Maybe [TagSpecification]
tagSpecifications :: Maybe [TagSpecification]
$sel:tagSpecifications:CreateInstanceExportTask' :: CreateInstanceExportTask -> Maybe [TagSpecification]
tagSpecifications} -> Maybe [TagSpecification]
tagSpecifications) (\s :: CreateInstanceExportTask
s@CreateInstanceExportTask' {} Maybe [TagSpecification]
a -> CreateInstanceExportTask
s {$sel:tagSpecifications:CreateInstanceExportTask' :: Maybe [TagSpecification]
tagSpecifications = Maybe [TagSpecification]
a} :: CreateInstanceExportTask) 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 format and location for an export instance task.
createInstanceExportTask_exportToS3Task :: Lens.Lens' CreateInstanceExportTask ExportToS3TaskSpecification
createInstanceExportTask_exportToS3Task :: Lens' CreateInstanceExportTask ExportToS3TaskSpecification
createInstanceExportTask_exportToS3Task = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceExportTask' {ExportToS3TaskSpecification
exportToS3Task :: ExportToS3TaskSpecification
$sel:exportToS3Task:CreateInstanceExportTask' :: CreateInstanceExportTask -> ExportToS3TaskSpecification
exportToS3Task} -> ExportToS3TaskSpecification
exportToS3Task) (\s :: CreateInstanceExportTask
s@CreateInstanceExportTask' {} ExportToS3TaskSpecification
a -> CreateInstanceExportTask
s {$sel:exportToS3Task:CreateInstanceExportTask' :: ExportToS3TaskSpecification
exportToS3Task = ExportToS3TaskSpecification
a} :: CreateInstanceExportTask)

-- | The ID of the instance.
createInstanceExportTask_instanceId :: Lens.Lens' CreateInstanceExportTask Prelude.Text
createInstanceExportTask_instanceId :: Lens' CreateInstanceExportTask Text
createInstanceExportTask_instanceId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceExportTask' {Text
instanceId :: Text
$sel:instanceId:CreateInstanceExportTask' :: CreateInstanceExportTask -> Text
instanceId} -> Text
instanceId) (\s :: CreateInstanceExportTask
s@CreateInstanceExportTask' {} Text
a -> CreateInstanceExportTask
s {$sel:instanceId:CreateInstanceExportTask' :: Text
instanceId = Text
a} :: CreateInstanceExportTask)

-- | The target virtualization environment.
createInstanceExportTask_targetEnvironment :: Lens.Lens' CreateInstanceExportTask ExportEnvironment
createInstanceExportTask_targetEnvironment :: Lens' CreateInstanceExportTask ExportEnvironment
createInstanceExportTask_targetEnvironment = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceExportTask' {ExportEnvironment
targetEnvironment :: ExportEnvironment
$sel:targetEnvironment:CreateInstanceExportTask' :: CreateInstanceExportTask -> ExportEnvironment
targetEnvironment} -> ExportEnvironment
targetEnvironment) (\s :: CreateInstanceExportTask
s@CreateInstanceExportTask' {} ExportEnvironment
a -> CreateInstanceExportTask
s {$sel:targetEnvironment:CreateInstanceExportTask' :: ExportEnvironment
targetEnvironment = ExportEnvironment
a} :: CreateInstanceExportTask)

instance Core.AWSRequest CreateInstanceExportTask where
  type
    AWSResponse CreateInstanceExportTask =
      CreateInstanceExportTaskResponse
  request :: (Service -> Service)
-> CreateInstanceExportTask -> Request CreateInstanceExportTask
request Service -> Service
overrides =
    forall a. ToRequest a => Service -> a -> Request a
Request.postQuery (Service -> Service
overrides Service
defaultService)
  response :: forall (m :: * -> *).
MonadResource m =>
(ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy CreateInstanceExportTask
-> ClientResponse ClientBody
-> m (Either
        Error (ClientResponse (AWSResponse CreateInstanceExportTask)))
response =
    forall (m :: * -> *) a.
MonadResource m =>
(Int -> ResponseHeaders -> [Node] -> Either String (AWSResponse a))
-> (ByteStringLazy -> IO ByteStringLazy)
-> Service
-> Proxy a
-> ClientResponse ClientBody
-> m (Either Error (ClientResponse (AWSResponse a)))
Response.receiveXML
      ( \Int
s ResponseHeaders
h [Node]
x ->
          Maybe ExportTask -> Int -> CreateInstanceExportTaskResponse
CreateInstanceExportTaskResponse'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"exportTask")
            forall (f :: * -> *) a b. Applicative f => 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))
      )

instance Prelude.Hashable CreateInstanceExportTask where
  hashWithSalt :: Int -> CreateInstanceExportTask -> Int
hashWithSalt Int
_salt CreateInstanceExportTask' {Maybe [TagSpecification]
Maybe Text
Text
ExportEnvironment
ExportToS3TaskSpecification
targetEnvironment :: ExportEnvironment
instanceId :: Text
exportToS3Task :: ExportToS3TaskSpecification
tagSpecifications :: Maybe [TagSpecification]
description :: Maybe Text
$sel:targetEnvironment:CreateInstanceExportTask' :: CreateInstanceExportTask -> ExportEnvironment
$sel:instanceId:CreateInstanceExportTask' :: CreateInstanceExportTask -> Text
$sel:exportToS3Task:CreateInstanceExportTask' :: CreateInstanceExportTask -> ExportToS3TaskSpecification
$sel:tagSpecifications:CreateInstanceExportTask' :: CreateInstanceExportTask -> Maybe [TagSpecification]
$sel:description:CreateInstanceExportTask' :: CreateInstanceExportTask -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [TagSpecification]
tagSpecifications
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ExportToS3TaskSpecification
exportToS3Task
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Text
instanceId
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` ExportEnvironment
targetEnvironment

instance Prelude.NFData CreateInstanceExportTask where
  rnf :: CreateInstanceExportTask -> ()
rnf CreateInstanceExportTask' {Maybe [TagSpecification]
Maybe Text
Text
ExportEnvironment
ExportToS3TaskSpecification
targetEnvironment :: ExportEnvironment
instanceId :: Text
exportToS3Task :: ExportToS3TaskSpecification
tagSpecifications :: Maybe [TagSpecification]
description :: Maybe Text
$sel:targetEnvironment:CreateInstanceExportTask' :: CreateInstanceExportTask -> ExportEnvironment
$sel:instanceId:CreateInstanceExportTask' :: CreateInstanceExportTask -> Text
$sel:exportToS3Task:CreateInstanceExportTask' :: CreateInstanceExportTask -> ExportToS3TaskSpecification
$sel:tagSpecifications:CreateInstanceExportTask' :: CreateInstanceExportTask -> Maybe [TagSpecification]
$sel:description:CreateInstanceExportTask' :: CreateInstanceExportTask -> Maybe Text
..} =
    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 [TagSpecification]
tagSpecifications
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ExportToS3TaskSpecification
exportToS3Task
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Text
instanceId
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf ExportEnvironment
targetEnvironment

instance Data.ToHeaders CreateInstanceExportTask where
  toHeaders :: CreateInstanceExportTask -> ResponseHeaders
toHeaders = forall a b. a -> b -> a
Prelude.const forall a. Monoid a => a
Prelude.mempty

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

instance Data.ToQuery CreateInstanceExportTask where
  toQuery :: CreateInstanceExportTask -> QueryString
toQuery CreateInstanceExportTask' {Maybe [TagSpecification]
Maybe Text
Text
ExportEnvironment
ExportToS3TaskSpecification
targetEnvironment :: ExportEnvironment
instanceId :: Text
exportToS3Task :: ExportToS3TaskSpecification
tagSpecifications :: Maybe [TagSpecification]
description :: Maybe Text
$sel:targetEnvironment:CreateInstanceExportTask' :: CreateInstanceExportTask -> ExportEnvironment
$sel:instanceId:CreateInstanceExportTask' :: CreateInstanceExportTask -> Text
$sel:exportToS3Task:CreateInstanceExportTask' :: CreateInstanceExportTask -> ExportToS3TaskSpecification
$sel:tagSpecifications:CreateInstanceExportTask' :: CreateInstanceExportTask -> Maybe [TagSpecification]
$sel:description:CreateInstanceExportTask' :: CreateInstanceExportTask -> Maybe Text
..} =
    forall a. Monoid a => [a] -> a
Prelude.mconcat
      [ ByteString
"Action"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"CreateInstanceExportTask" :: Prelude.ByteString),
        ByteString
"Version"
          forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: (ByteString
"2016-11-15" :: Prelude.ByteString),
        ByteString
"Description" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Maybe Text
description,
        forall a. ToQuery a => a -> QueryString
Data.toQuery
          ( forall a.
(IsList a, ToQuery (Item a)) =>
ByteString -> a -> QueryString
Data.toQueryList ByteString
"TagSpecification"
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe [TagSpecification]
tagSpecifications
          ),
        ByteString
"ExportToS3" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ExportToS3TaskSpecification
exportToS3Task,
        ByteString
"InstanceId" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: Text
instanceId,
        ByteString
"TargetEnvironment" forall a. ToQuery a => ByteString -> a -> QueryString
Data.=: ExportEnvironment
targetEnvironment
      ]

-- | /See:/ 'newCreateInstanceExportTaskResponse' smart constructor.
data CreateInstanceExportTaskResponse = CreateInstanceExportTaskResponse'
  { -- | Information about the export instance task.
    CreateInstanceExportTaskResponse -> Maybe ExportTask
exportTask :: Prelude.Maybe ExportTask,
    -- | The response's http status code.
    CreateInstanceExportTaskResponse -> Int
httpStatus :: Prelude.Int
  }
  deriving (CreateInstanceExportTaskResponse
-> CreateInstanceExportTaskResponse -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: CreateInstanceExportTaskResponse
-> CreateInstanceExportTaskResponse -> Bool
$c/= :: CreateInstanceExportTaskResponse
-> CreateInstanceExportTaskResponse -> Bool
== :: CreateInstanceExportTaskResponse
-> CreateInstanceExportTaskResponse -> Bool
$c== :: CreateInstanceExportTaskResponse
-> CreateInstanceExportTaskResponse -> Bool
Prelude.Eq, ReadPrec [CreateInstanceExportTaskResponse]
ReadPrec CreateInstanceExportTaskResponse
Int -> ReadS CreateInstanceExportTaskResponse
ReadS [CreateInstanceExportTaskResponse]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [CreateInstanceExportTaskResponse]
$creadListPrec :: ReadPrec [CreateInstanceExportTaskResponse]
readPrec :: ReadPrec CreateInstanceExportTaskResponse
$creadPrec :: ReadPrec CreateInstanceExportTaskResponse
readList :: ReadS [CreateInstanceExportTaskResponse]
$creadList :: ReadS [CreateInstanceExportTaskResponse]
readsPrec :: Int -> ReadS CreateInstanceExportTaskResponse
$creadsPrec :: Int -> ReadS CreateInstanceExportTaskResponse
Prelude.Read, Int -> CreateInstanceExportTaskResponse -> ShowS
[CreateInstanceExportTaskResponse] -> ShowS
CreateInstanceExportTaskResponse -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [CreateInstanceExportTaskResponse] -> ShowS
$cshowList :: [CreateInstanceExportTaskResponse] -> ShowS
show :: CreateInstanceExportTaskResponse -> String
$cshow :: CreateInstanceExportTaskResponse -> String
showsPrec :: Int -> CreateInstanceExportTaskResponse -> ShowS
$cshowsPrec :: Int -> CreateInstanceExportTaskResponse -> ShowS
Prelude.Show, forall x.
Rep CreateInstanceExportTaskResponse x
-> CreateInstanceExportTaskResponse
forall x.
CreateInstanceExportTaskResponse
-> Rep CreateInstanceExportTaskResponse x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep CreateInstanceExportTaskResponse x
-> CreateInstanceExportTaskResponse
$cfrom :: forall x.
CreateInstanceExportTaskResponse
-> Rep CreateInstanceExportTaskResponse x
Prelude.Generic)

-- |
-- Create a value of 'CreateInstanceExportTaskResponse' 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:
--
-- 'exportTask', 'createInstanceExportTaskResponse_exportTask' - Information about the export instance task.
--
-- 'httpStatus', 'createInstanceExportTaskResponse_httpStatus' - The response's http status code.
newCreateInstanceExportTaskResponse ::
  -- | 'httpStatus'
  Prelude.Int ->
  CreateInstanceExportTaskResponse
newCreateInstanceExportTaskResponse :: Int -> CreateInstanceExportTaskResponse
newCreateInstanceExportTaskResponse Int
pHttpStatus_ =
  CreateInstanceExportTaskResponse'
    { $sel:exportTask:CreateInstanceExportTaskResponse' :: Maybe ExportTask
exportTask =
        forall a. Maybe a
Prelude.Nothing,
      $sel:httpStatus:CreateInstanceExportTaskResponse' :: Int
httpStatus = Int
pHttpStatus_
    }

-- | Information about the export instance task.
createInstanceExportTaskResponse_exportTask :: Lens.Lens' CreateInstanceExportTaskResponse (Prelude.Maybe ExportTask)
createInstanceExportTaskResponse_exportTask :: Lens' CreateInstanceExportTaskResponse (Maybe ExportTask)
createInstanceExportTaskResponse_exportTask = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\CreateInstanceExportTaskResponse' {Maybe ExportTask
exportTask :: Maybe ExportTask
$sel:exportTask:CreateInstanceExportTaskResponse' :: CreateInstanceExportTaskResponse -> Maybe ExportTask
exportTask} -> Maybe ExportTask
exportTask) (\s :: CreateInstanceExportTaskResponse
s@CreateInstanceExportTaskResponse' {} Maybe ExportTask
a -> CreateInstanceExportTaskResponse
s {$sel:exportTask:CreateInstanceExportTaskResponse' :: Maybe ExportTask
exportTask = Maybe ExportTask
a} :: CreateInstanceExportTaskResponse)

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

instance
  Prelude.NFData
    CreateInstanceExportTaskResponse
  where
  rnf :: CreateInstanceExportTaskResponse -> ()
rnf CreateInstanceExportTaskResponse' {Int
Maybe ExportTask
httpStatus :: Int
exportTask :: Maybe ExportTask
$sel:httpStatus:CreateInstanceExportTaskResponse' :: CreateInstanceExportTaskResponse -> Int
$sel:exportTask:CreateInstanceExportTaskResponse' :: CreateInstanceExportTaskResponse -> Maybe ExportTask
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ExportTask
exportTask
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Int
httpStatus