{-# 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.EC2.Types.ImportVolumeTaskDetails
-- 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.EC2.Types.ImportVolumeTaskDetails where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import Amazonka.EC2.Internal
import Amazonka.EC2.Types.DiskImageDescription
import Amazonka.EC2.Types.DiskImageVolumeDescription
import qualified Amazonka.Prelude as Prelude

-- | Describes an import volume task.
--
-- /See:/ 'newImportVolumeTaskDetails' smart constructor.
data ImportVolumeTaskDetails = ImportVolumeTaskDetails'
  { -- | The Availability Zone where the resulting volume will reside.
    ImportVolumeTaskDetails -> Maybe Text
availabilityZone :: Prelude.Maybe Prelude.Text,
    -- | The number of bytes converted so far.
    ImportVolumeTaskDetails -> Maybe Integer
bytesConverted :: Prelude.Maybe Prelude.Integer,
    -- | The description you provided when starting the import volume task.
    ImportVolumeTaskDetails -> Maybe Text
description :: Prelude.Maybe Prelude.Text,
    -- | The image.
    ImportVolumeTaskDetails -> Maybe DiskImageDescription
image :: Prelude.Maybe DiskImageDescription,
    -- | The volume.
    ImportVolumeTaskDetails -> Maybe DiskImageVolumeDescription
volume :: Prelude.Maybe DiskImageVolumeDescription
  }
  deriving (ImportVolumeTaskDetails -> ImportVolumeTaskDetails -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ImportVolumeTaskDetails -> ImportVolumeTaskDetails -> Bool
$c/= :: ImportVolumeTaskDetails -> ImportVolumeTaskDetails -> Bool
== :: ImportVolumeTaskDetails -> ImportVolumeTaskDetails -> Bool
$c== :: ImportVolumeTaskDetails -> ImportVolumeTaskDetails -> Bool
Prelude.Eq, ReadPrec [ImportVolumeTaskDetails]
ReadPrec ImportVolumeTaskDetails
Int -> ReadS ImportVolumeTaskDetails
ReadS [ImportVolumeTaskDetails]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ImportVolumeTaskDetails]
$creadListPrec :: ReadPrec [ImportVolumeTaskDetails]
readPrec :: ReadPrec ImportVolumeTaskDetails
$creadPrec :: ReadPrec ImportVolumeTaskDetails
readList :: ReadS [ImportVolumeTaskDetails]
$creadList :: ReadS [ImportVolumeTaskDetails]
readsPrec :: Int -> ReadS ImportVolumeTaskDetails
$creadsPrec :: Int -> ReadS ImportVolumeTaskDetails
Prelude.Read, Int -> ImportVolumeTaskDetails -> ShowS
[ImportVolumeTaskDetails] -> ShowS
ImportVolumeTaskDetails -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ImportVolumeTaskDetails] -> ShowS
$cshowList :: [ImportVolumeTaskDetails] -> ShowS
show :: ImportVolumeTaskDetails -> String
$cshow :: ImportVolumeTaskDetails -> String
showsPrec :: Int -> ImportVolumeTaskDetails -> ShowS
$cshowsPrec :: Int -> ImportVolumeTaskDetails -> ShowS
Prelude.Show, forall x. Rep ImportVolumeTaskDetails x -> ImportVolumeTaskDetails
forall x. ImportVolumeTaskDetails -> Rep ImportVolumeTaskDetails x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ImportVolumeTaskDetails x -> ImportVolumeTaskDetails
$cfrom :: forall x. ImportVolumeTaskDetails -> Rep ImportVolumeTaskDetails x
Prelude.Generic)

-- |
-- Create a value of 'ImportVolumeTaskDetails' 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:
--
-- 'availabilityZone', 'importVolumeTaskDetails_availabilityZone' - The Availability Zone where the resulting volume will reside.
--
-- 'bytesConverted', 'importVolumeTaskDetails_bytesConverted' - The number of bytes converted so far.
--
-- 'description', 'importVolumeTaskDetails_description' - The description you provided when starting the import volume task.
--
-- 'image', 'importVolumeTaskDetails_image' - The image.
--
-- 'volume', 'importVolumeTaskDetails_volume' - The volume.
newImportVolumeTaskDetails ::
  ImportVolumeTaskDetails
newImportVolumeTaskDetails :: ImportVolumeTaskDetails
newImportVolumeTaskDetails =
  ImportVolumeTaskDetails'
    { $sel:availabilityZone:ImportVolumeTaskDetails' :: Maybe Text
availabilityZone =
        forall a. Maybe a
Prelude.Nothing,
      $sel:bytesConverted:ImportVolumeTaskDetails' :: Maybe Integer
bytesConverted = forall a. Maybe a
Prelude.Nothing,
      $sel:description:ImportVolumeTaskDetails' :: Maybe Text
description = forall a. Maybe a
Prelude.Nothing,
      $sel:image:ImportVolumeTaskDetails' :: Maybe DiskImageDescription
image = forall a. Maybe a
Prelude.Nothing,
      $sel:volume:ImportVolumeTaskDetails' :: Maybe DiskImageVolumeDescription
volume = forall a. Maybe a
Prelude.Nothing
    }

-- | The Availability Zone where the resulting volume will reside.
importVolumeTaskDetails_availabilityZone :: Lens.Lens' ImportVolumeTaskDetails (Prelude.Maybe Prelude.Text)
importVolumeTaskDetails_availabilityZone :: Lens' ImportVolumeTaskDetails (Maybe Text)
importVolumeTaskDetails_availabilityZone = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ImportVolumeTaskDetails' {Maybe Text
availabilityZone :: Maybe Text
$sel:availabilityZone:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Text
availabilityZone} -> Maybe Text
availabilityZone) (\s :: ImportVolumeTaskDetails
s@ImportVolumeTaskDetails' {} Maybe Text
a -> ImportVolumeTaskDetails
s {$sel:availabilityZone:ImportVolumeTaskDetails' :: Maybe Text
availabilityZone = Maybe Text
a} :: ImportVolumeTaskDetails)

-- | The number of bytes converted so far.
importVolumeTaskDetails_bytesConverted :: Lens.Lens' ImportVolumeTaskDetails (Prelude.Maybe Prelude.Integer)
importVolumeTaskDetails_bytesConverted :: Lens' ImportVolumeTaskDetails (Maybe Integer)
importVolumeTaskDetails_bytesConverted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ImportVolumeTaskDetails' {Maybe Integer
bytesConverted :: Maybe Integer
$sel:bytesConverted:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Integer
bytesConverted} -> Maybe Integer
bytesConverted) (\s :: ImportVolumeTaskDetails
s@ImportVolumeTaskDetails' {} Maybe Integer
a -> ImportVolumeTaskDetails
s {$sel:bytesConverted:ImportVolumeTaskDetails' :: Maybe Integer
bytesConverted = Maybe Integer
a} :: ImportVolumeTaskDetails)

-- | The description you provided when starting the import volume task.
importVolumeTaskDetails_description :: Lens.Lens' ImportVolumeTaskDetails (Prelude.Maybe Prelude.Text)
importVolumeTaskDetails_description :: Lens' ImportVolumeTaskDetails (Maybe Text)
importVolumeTaskDetails_description = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ImportVolumeTaskDetails' {Maybe Text
description :: Maybe Text
$sel:description:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Text
description} -> Maybe Text
description) (\s :: ImportVolumeTaskDetails
s@ImportVolumeTaskDetails' {} Maybe Text
a -> ImportVolumeTaskDetails
s {$sel:description:ImportVolumeTaskDetails' :: Maybe Text
description = Maybe Text
a} :: ImportVolumeTaskDetails)

-- | The image.
importVolumeTaskDetails_image :: Lens.Lens' ImportVolumeTaskDetails (Prelude.Maybe DiskImageDescription)
importVolumeTaskDetails_image :: Lens' ImportVolumeTaskDetails (Maybe DiskImageDescription)
importVolumeTaskDetails_image = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ImportVolumeTaskDetails' {Maybe DiskImageDescription
image :: Maybe DiskImageDescription
$sel:image:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe DiskImageDescription
image} -> Maybe DiskImageDescription
image) (\s :: ImportVolumeTaskDetails
s@ImportVolumeTaskDetails' {} Maybe DiskImageDescription
a -> ImportVolumeTaskDetails
s {$sel:image:ImportVolumeTaskDetails' :: Maybe DiskImageDescription
image = Maybe DiskImageDescription
a} :: ImportVolumeTaskDetails)

-- | The volume.
importVolumeTaskDetails_volume :: Lens.Lens' ImportVolumeTaskDetails (Prelude.Maybe DiskImageVolumeDescription)
importVolumeTaskDetails_volume :: Lens' ImportVolumeTaskDetails (Maybe DiskImageVolumeDescription)
importVolumeTaskDetails_volume = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ImportVolumeTaskDetails' {Maybe DiskImageVolumeDescription
volume :: Maybe DiskImageVolumeDescription
$sel:volume:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe DiskImageVolumeDescription
volume} -> Maybe DiskImageVolumeDescription
volume) (\s :: ImportVolumeTaskDetails
s@ImportVolumeTaskDetails' {} Maybe DiskImageVolumeDescription
a -> ImportVolumeTaskDetails
s {$sel:volume:ImportVolumeTaskDetails' :: Maybe DiskImageVolumeDescription
volume = Maybe DiskImageVolumeDescription
a} :: ImportVolumeTaskDetails)

instance Data.FromXML ImportVolumeTaskDetails where
  parseXML :: [Node] -> Either String ImportVolumeTaskDetails
parseXML [Node]
x =
    Maybe Text
-> Maybe Integer
-> Maybe Text
-> Maybe DiskImageDescription
-> Maybe DiskImageVolumeDescription
-> ImportVolumeTaskDetails
ImportVolumeTaskDetails'
      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
"availabilityZone")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"bytesConverted")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"description")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"image")
      forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Data..@? Text
"volume")

instance Prelude.Hashable ImportVolumeTaskDetails where
  hashWithSalt :: Int -> ImportVolumeTaskDetails -> Int
hashWithSalt Int
_salt ImportVolumeTaskDetails' {Maybe Integer
Maybe Text
Maybe DiskImageDescription
Maybe DiskImageVolumeDescription
volume :: Maybe DiskImageVolumeDescription
image :: Maybe DiskImageDescription
description :: Maybe Text
bytesConverted :: Maybe Integer
availabilityZone :: Maybe Text
$sel:volume:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe DiskImageVolumeDescription
$sel:image:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe DiskImageDescription
$sel:description:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Text
$sel:bytesConverted:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Integer
$sel:availabilityZone:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Text
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
availabilityZone
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
bytesConverted
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
description
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DiskImageDescription
image
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DiskImageVolumeDescription
volume

instance Prelude.NFData ImportVolumeTaskDetails where
  rnf :: ImportVolumeTaskDetails -> ()
rnf ImportVolumeTaskDetails' {Maybe Integer
Maybe Text
Maybe DiskImageDescription
Maybe DiskImageVolumeDescription
volume :: Maybe DiskImageVolumeDescription
image :: Maybe DiskImageDescription
description :: Maybe Text
bytesConverted :: Maybe Integer
availabilityZone :: Maybe Text
$sel:volume:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe DiskImageVolumeDescription
$sel:image:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe DiskImageDescription
$sel:description:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Text
$sel:bytesConverted:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Integer
$sel:availabilityZone:ImportVolumeTaskDetails' :: ImportVolumeTaskDetails -> Maybe Text
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
availabilityZone
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
bytesConverted
      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 DiskImageDescription
image
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DiskImageVolumeDescription
volume