{-# 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.VolumeModification
-- 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.VolumeModification 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.VolumeModificationState
import Amazonka.EC2.Types.VolumeType
import qualified Amazonka.Prelude as Prelude

-- | Describes the modification status of an EBS volume.
--
-- If the volume has never been modified, some element values will be null.
--
-- /See:/ 'newVolumeModification' smart constructor.
data VolumeModification = VolumeModification'
  { -- | The modification completion or failure time.
    VolumeModification -> Maybe ISO8601
endTime :: Prelude.Maybe Data.ISO8601,
    -- | The current modification state. The modification state is null for
    -- unmodified volumes.
    VolumeModification -> Maybe VolumeModificationState
modificationState :: Prelude.Maybe VolumeModificationState,
    -- | The original IOPS rate of the volume.
    VolumeModification -> Maybe Int
originalIops :: Prelude.Maybe Prelude.Int,
    -- | The original setting for Amazon EBS Multi-Attach.
    VolumeModification -> Maybe Bool
originalMultiAttachEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The original size of the volume, in GiB.
    VolumeModification -> Maybe Int
originalSize :: Prelude.Maybe Prelude.Int,
    -- | The original throughput of the volume, in MiB\/s.
    VolumeModification -> Maybe Int
originalThroughput :: Prelude.Maybe Prelude.Int,
    -- | The original EBS volume type of the volume.
    VolumeModification -> Maybe VolumeType
originalVolumeType :: Prelude.Maybe VolumeType,
    -- | The modification progress, from 0 to 100 percent complete.
    VolumeModification -> Maybe Integer
progress :: Prelude.Maybe Prelude.Integer,
    -- | The modification start time.
    VolumeModification -> Maybe ISO8601
startTime :: Prelude.Maybe Data.ISO8601,
    -- | A status message about the modification progress or failure.
    VolumeModification -> Maybe Text
statusMessage :: Prelude.Maybe Prelude.Text,
    -- | The target IOPS rate of the volume.
    VolumeModification -> Maybe Int
targetIops :: Prelude.Maybe Prelude.Int,
    -- | The target setting for Amazon EBS Multi-Attach.
    VolumeModification -> Maybe Bool
targetMultiAttachEnabled :: Prelude.Maybe Prelude.Bool,
    -- | The target size of the volume, in GiB.
    VolumeModification -> Maybe Int
targetSize :: Prelude.Maybe Prelude.Int,
    -- | The target throughput of the volume, in MiB\/s.
    VolumeModification -> Maybe Int
targetThroughput :: Prelude.Maybe Prelude.Int,
    -- | The target EBS volume type of the volume.
    VolumeModification -> Maybe VolumeType
targetVolumeType :: Prelude.Maybe VolumeType,
    -- | The ID of the volume.
    VolumeModification -> Maybe Text
volumeId :: Prelude.Maybe Prelude.Text
  }
  deriving (VolumeModification -> VolumeModification -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VolumeModification -> VolumeModification -> Bool
$c/= :: VolumeModification -> VolumeModification -> Bool
== :: VolumeModification -> VolumeModification -> Bool
$c== :: VolumeModification -> VolumeModification -> Bool
Prelude.Eq, ReadPrec [VolumeModification]
ReadPrec VolumeModification
Int -> ReadS VolumeModification
ReadS [VolumeModification]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [VolumeModification]
$creadListPrec :: ReadPrec [VolumeModification]
readPrec :: ReadPrec VolumeModification
$creadPrec :: ReadPrec VolumeModification
readList :: ReadS [VolumeModification]
$creadList :: ReadS [VolumeModification]
readsPrec :: Int -> ReadS VolumeModification
$creadsPrec :: Int -> ReadS VolumeModification
Prelude.Read, Int -> VolumeModification -> ShowS
[VolumeModification] -> ShowS
VolumeModification -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [VolumeModification] -> ShowS
$cshowList :: [VolumeModification] -> ShowS
show :: VolumeModification -> String
$cshow :: VolumeModification -> String
showsPrec :: Int -> VolumeModification -> ShowS
$cshowsPrec :: Int -> VolumeModification -> ShowS
Prelude.Show, forall x. Rep VolumeModification x -> VolumeModification
forall x. VolumeModification -> Rep VolumeModification x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep VolumeModification x -> VolumeModification
$cfrom :: forall x. VolumeModification -> Rep VolumeModification x
Prelude.Generic)

-- |
-- Create a value of 'VolumeModification' 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:
--
-- 'endTime', 'volumeModification_endTime' - The modification completion or failure time.
--
-- 'modificationState', 'volumeModification_modificationState' - The current modification state. The modification state is null for
-- unmodified volumes.
--
-- 'originalIops', 'volumeModification_originalIops' - The original IOPS rate of the volume.
--
-- 'originalMultiAttachEnabled', 'volumeModification_originalMultiAttachEnabled' - The original setting for Amazon EBS Multi-Attach.
--
-- 'originalSize', 'volumeModification_originalSize' - The original size of the volume, in GiB.
--
-- 'originalThroughput', 'volumeModification_originalThroughput' - The original throughput of the volume, in MiB\/s.
--
-- 'originalVolumeType', 'volumeModification_originalVolumeType' - The original EBS volume type of the volume.
--
-- 'progress', 'volumeModification_progress' - The modification progress, from 0 to 100 percent complete.
--
-- 'startTime', 'volumeModification_startTime' - The modification start time.
--
-- 'statusMessage', 'volumeModification_statusMessage' - A status message about the modification progress or failure.
--
-- 'targetIops', 'volumeModification_targetIops' - The target IOPS rate of the volume.
--
-- 'targetMultiAttachEnabled', 'volumeModification_targetMultiAttachEnabled' - The target setting for Amazon EBS Multi-Attach.
--
-- 'targetSize', 'volumeModification_targetSize' - The target size of the volume, in GiB.
--
-- 'targetThroughput', 'volumeModification_targetThroughput' - The target throughput of the volume, in MiB\/s.
--
-- 'targetVolumeType', 'volumeModification_targetVolumeType' - The target EBS volume type of the volume.
--
-- 'volumeId', 'volumeModification_volumeId' - The ID of the volume.
newVolumeModification ::
  VolumeModification
newVolumeModification :: VolumeModification
newVolumeModification =
  VolumeModification'
    { $sel:endTime:VolumeModification' :: Maybe ISO8601
endTime = forall a. Maybe a
Prelude.Nothing,
      $sel:modificationState:VolumeModification' :: Maybe VolumeModificationState
modificationState = forall a. Maybe a
Prelude.Nothing,
      $sel:originalIops:VolumeModification' :: Maybe Int
originalIops = forall a. Maybe a
Prelude.Nothing,
      $sel:originalMultiAttachEnabled:VolumeModification' :: Maybe Bool
originalMultiAttachEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:originalSize:VolumeModification' :: Maybe Int
originalSize = forall a. Maybe a
Prelude.Nothing,
      $sel:originalThroughput:VolumeModification' :: Maybe Int
originalThroughput = forall a. Maybe a
Prelude.Nothing,
      $sel:originalVolumeType:VolumeModification' :: Maybe VolumeType
originalVolumeType = forall a. Maybe a
Prelude.Nothing,
      $sel:progress:VolumeModification' :: Maybe Integer
progress = forall a. Maybe a
Prelude.Nothing,
      $sel:startTime:VolumeModification' :: Maybe ISO8601
startTime = forall a. Maybe a
Prelude.Nothing,
      $sel:statusMessage:VolumeModification' :: Maybe Text
statusMessage = forall a. Maybe a
Prelude.Nothing,
      $sel:targetIops:VolumeModification' :: Maybe Int
targetIops = forall a. Maybe a
Prelude.Nothing,
      $sel:targetMultiAttachEnabled:VolumeModification' :: Maybe Bool
targetMultiAttachEnabled = forall a. Maybe a
Prelude.Nothing,
      $sel:targetSize:VolumeModification' :: Maybe Int
targetSize = forall a. Maybe a
Prelude.Nothing,
      $sel:targetThroughput:VolumeModification' :: Maybe Int
targetThroughput = forall a. Maybe a
Prelude.Nothing,
      $sel:targetVolumeType:VolumeModification' :: Maybe VolumeType
targetVolumeType = forall a. Maybe a
Prelude.Nothing,
      $sel:volumeId:VolumeModification' :: Maybe Text
volumeId = forall a. Maybe a
Prelude.Nothing
    }

-- | The modification completion or failure time.
volumeModification_endTime :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.UTCTime)
volumeModification_endTime :: Lens' VolumeModification (Maybe UTCTime)
volumeModification_endTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe ISO8601
endTime :: Maybe ISO8601
$sel:endTime:VolumeModification' :: VolumeModification -> Maybe ISO8601
endTime} -> Maybe ISO8601
endTime) (\s :: VolumeModification
s@VolumeModification' {} Maybe ISO8601
a -> VolumeModification
s {$sel:endTime:VolumeModification' :: Maybe ISO8601
endTime = Maybe ISO8601
a} :: VolumeModification) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | The current modification state. The modification state is null for
-- unmodified volumes.
volumeModification_modificationState :: Lens.Lens' VolumeModification (Prelude.Maybe VolumeModificationState)
volumeModification_modificationState :: Lens' VolumeModification (Maybe VolumeModificationState)
volumeModification_modificationState = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe VolumeModificationState
modificationState :: Maybe VolumeModificationState
$sel:modificationState:VolumeModification' :: VolumeModification -> Maybe VolumeModificationState
modificationState} -> Maybe VolumeModificationState
modificationState) (\s :: VolumeModification
s@VolumeModification' {} Maybe VolumeModificationState
a -> VolumeModification
s {$sel:modificationState:VolumeModification' :: Maybe VolumeModificationState
modificationState = Maybe VolumeModificationState
a} :: VolumeModification)

-- | The original IOPS rate of the volume.
volumeModification_originalIops :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Int)
volumeModification_originalIops :: Lens' VolumeModification (Maybe Int)
volumeModification_originalIops = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Int
originalIops :: Maybe Int
$sel:originalIops:VolumeModification' :: VolumeModification -> Maybe Int
originalIops} -> Maybe Int
originalIops) (\s :: VolumeModification
s@VolumeModification' {} Maybe Int
a -> VolumeModification
s {$sel:originalIops:VolumeModification' :: Maybe Int
originalIops = Maybe Int
a} :: VolumeModification)

-- | The original setting for Amazon EBS Multi-Attach.
volumeModification_originalMultiAttachEnabled :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Bool)
volumeModification_originalMultiAttachEnabled :: Lens' VolumeModification (Maybe Bool)
volumeModification_originalMultiAttachEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Bool
originalMultiAttachEnabled :: Maybe Bool
$sel:originalMultiAttachEnabled:VolumeModification' :: VolumeModification -> Maybe Bool
originalMultiAttachEnabled} -> Maybe Bool
originalMultiAttachEnabled) (\s :: VolumeModification
s@VolumeModification' {} Maybe Bool
a -> VolumeModification
s {$sel:originalMultiAttachEnabled:VolumeModification' :: Maybe Bool
originalMultiAttachEnabled = Maybe Bool
a} :: VolumeModification)

-- | The original size of the volume, in GiB.
volumeModification_originalSize :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Int)
volumeModification_originalSize :: Lens' VolumeModification (Maybe Int)
volumeModification_originalSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Int
originalSize :: Maybe Int
$sel:originalSize:VolumeModification' :: VolumeModification -> Maybe Int
originalSize} -> Maybe Int
originalSize) (\s :: VolumeModification
s@VolumeModification' {} Maybe Int
a -> VolumeModification
s {$sel:originalSize:VolumeModification' :: Maybe Int
originalSize = Maybe Int
a} :: VolumeModification)

-- | The original throughput of the volume, in MiB\/s.
volumeModification_originalThroughput :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Int)
volumeModification_originalThroughput :: Lens' VolumeModification (Maybe Int)
volumeModification_originalThroughput = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Int
originalThroughput :: Maybe Int
$sel:originalThroughput:VolumeModification' :: VolumeModification -> Maybe Int
originalThroughput} -> Maybe Int
originalThroughput) (\s :: VolumeModification
s@VolumeModification' {} Maybe Int
a -> VolumeModification
s {$sel:originalThroughput:VolumeModification' :: Maybe Int
originalThroughput = Maybe Int
a} :: VolumeModification)

-- | The original EBS volume type of the volume.
volumeModification_originalVolumeType :: Lens.Lens' VolumeModification (Prelude.Maybe VolumeType)
volumeModification_originalVolumeType :: Lens' VolumeModification (Maybe VolumeType)
volumeModification_originalVolumeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe VolumeType
originalVolumeType :: Maybe VolumeType
$sel:originalVolumeType:VolumeModification' :: VolumeModification -> Maybe VolumeType
originalVolumeType} -> Maybe VolumeType
originalVolumeType) (\s :: VolumeModification
s@VolumeModification' {} Maybe VolumeType
a -> VolumeModification
s {$sel:originalVolumeType:VolumeModification' :: Maybe VolumeType
originalVolumeType = Maybe VolumeType
a} :: VolumeModification)

-- | The modification progress, from 0 to 100 percent complete.
volumeModification_progress :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Integer)
volumeModification_progress :: Lens' VolumeModification (Maybe Integer)
volumeModification_progress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Integer
progress :: Maybe Integer
$sel:progress:VolumeModification' :: VolumeModification -> Maybe Integer
progress} -> Maybe Integer
progress) (\s :: VolumeModification
s@VolumeModification' {} Maybe Integer
a -> VolumeModification
s {$sel:progress:VolumeModification' :: Maybe Integer
progress = Maybe Integer
a} :: VolumeModification)

-- | The modification start time.
volumeModification_startTime :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.UTCTime)
volumeModification_startTime :: Lens' VolumeModification (Maybe UTCTime)
volumeModification_startTime = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe ISO8601
startTime :: Maybe ISO8601
$sel:startTime:VolumeModification' :: VolumeModification -> Maybe ISO8601
startTime} -> Maybe ISO8601
startTime) (\s :: VolumeModification
s@VolumeModification' {} Maybe ISO8601
a -> VolumeModification
s {$sel:startTime:VolumeModification' :: Maybe ISO8601
startTime = Maybe ISO8601
a} :: VolumeModification) 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 (a :: Format). Iso' (Time a) UTCTime
Data._Time

-- | A status message about the modification progress or failure.
volumeModification_statusMessage :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Text)
volumeModification_statusMessage :: Lens' VolumeModification (Maybe Text)
volumeModification_statusMessage = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Text
statusMessage :: Maybe Text
$sel:statusMessage:VolumeModification' :: VolumeModification -> Maybe Text
statusMessage} -> Maybe Text
statusMessage) (\s :: VolumeModification
s@VolumeModification' {} Maybe Text
a -> VolumeModification
s {$sel:statusMessage:VolumeModification' :: Maybe Text
statusMessage = Maybe Text
a} :: VolumeModification)

-- | The target IOPS rate of the volume.
volumeModification_targetIops :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Int)
volumeModification_targetIops :: Lens' VolumeModification (Maybe Int)
volumeModification_targetIops = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Int
targetIops :: Maybe Int
$sel:targetIops:VolumeModification' :: VolumeModification -> Maybe Int
targetIops} -> Maybe Int
targetIops) (\s :: VolumeModification
s@VolumeModification' {} Maybe Int
a -> VolumeModification
s {$sel:targetIops:VolumeModification' :: Maybe Int
targetIops = Maybe Int
a} :: VolumeModification)

-- | The target setting for Amazon EBS Multi-Attach.
volumeModification_targetMultiAttachEnabled :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Bool)
volumeModification_targetMultiAttachEnabled :: Lens' VolumeModification (Maybe Bool)
volumeModification_targetMultiAttachEnabled = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Bool
targetMultiAttachEnabled :: Maybe Bool
$sel:targetMultiAttachEnabled:VolumeModification' :: VolumeModification -> Maybe Bool
targetMultiAttachEnabled} -> Maybe Bool
targetMultiAttachEnabled) (\s :: VolumeModification
s@VolumeModification' {} Maybe Bool
a -> VolumeModification
s {$sel:targetMultiAttachEnabled:VolumeModification' :: Maybe Bool
targetMultiAttachEnabled = Maybe Bool
a} :: VolumeModification)

-- | The target size of the volume, in GiB.
volumeModification_targetSize :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Int)
volumeModification_targetSize :: Lens' VolumeModification (Maybe Int)
volumeModification_targetSize = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Int
targetSize :: Maybe Int
$sel:targetSize:VolumeModification' :: VolumeModification -> Maybe Int
targetSize} -> Maybe Int
targetSize) (\s :: VolumeModification
s@VolumeModification' {} Maybe Int
a -> VolumeModification
s {$sel:targetSize:VolumeModification' :: Maybe Int
targetSize = Maybe Int
a} :: VolumeModification)

-- | The target throughput of the volume, in MiB\/s.
volumeModification_targetThroughput :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Int)
volumeModification_targetThroughput :: Lens' VolumeModification (Maybe Int)
volumeModification_targetThroughput = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Int
targetThroughput :: Maybe Int
$sel:targetThroughput:VolumeModification' :: VolumeModification -> Maybe Int
targetThroughput} -> Maybe Int
targetThroughput) (\s :: VolumeModification
s@VolumeModification' {} Maybe Int
a -> VolumeModification
s {$sel:targetThroughput:VolumeModification' :: Maybe Int
targetThroughput = Maybe Int
a} :: VolumeModification)

-- | The target EBS volume type of the volume.
volumeModification_targetVolumeType :: Lens.Lens' VolumeModification (Prelude.Maybe VolumeType)
volumeModification_targetVolumeType :: Lens' VolumeModification (Maybe VolumeType)
volumeModification_targetVolumeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe VolumeType
targetVolumeType :: Maybe VolumeType
$sel:targetVolumeType:VolumeModification' :: VolumeModification -> Maybe VolumeType
targetVolumeType} -> Maybe VolumeType
targetVolumeType) (\s :: VolumeModification
s@VolumeModification' {} Maybe VolumeType
a -> VolumeModification
s {$sel:targetVolumeType:VolumeModification' :: Maybe VolumeType
targetVolumeType = Maybe VolumeType
a} :: VolumeModification)

-- | The ID of the volume.
volumeModification_volumeId :: Lens.Lens' VolumeModification (Prelude.Maybe Prelude.Text)
volumeModification_volumeId :: Lens' VolumeModification (Maybe Text)
volumeModification_volumeId = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\VolumeModification' {Maybe Text
volumeId :: Maybe Text
$sel:volumeId:VolumeModification' :: VolumeModification -> Maybe Text
volumeId} -> Maybe Text
volumeId) (\s :: VolumeModification
s@VolumeModification' {} Maybe Text
a -> VolumeModification
s {$sel:volumeId:VolumeModification' :: Maybe Text
volumeId = Maybe Text
a} :: VolumeModification)

instance Data.FromXML VolumeModification where
  parseXML :: [Node] -> Either String VolumeModification
parseXML [Node]
x =
    Maybe ISO8601
-> Maybe VolumeModificationState
-> Maybe Int
-> Maybe Bool
-> Maybe Int
-> Maybe Int
-> Maybe VolumeType
-> Maybe Integer
-> Maybe ISO8601
-> Maybe Text
-> Maybe Int
-> Maybe Bool
-> Maybe Int
-> Maybe Int
-> Maybe VolumeType
-> Maybe Text
-> VolumeModification
VolumeModification'
      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
"endTime")
      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
"modificationState")
      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
"originalIops")
      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
"originalMultiAttachEnabled")
      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
"originalSize")
      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
"originalThroughput")
      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
"originalVolumeType")
      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
"progress")
      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
"startTime")
      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
"statusMessage")
      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
"targetIops")
      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
"targetMultiAttachEnabled")
      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
"targetSize")
      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
"targetThroughput")
      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
"targetVolumeType")
      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
"volumeId")

instance Prelude.Hashable VolumeModification where
  hashWithSalt :: Int -> VolumeModification -> Int
hashWithSalt Int
_salt VolumeModification' {Maybe Bool
Maybe Int
Maybe Integer
Maybe Text
Maybe ISO8601
Maybe VolumeModificationState
Maybe VolumeType
volumeId :: Maybe Text
targetVolumeType :: Maybe VolumeType
targetThroughput :: Maybe Int
targetSize :: Maybe Int
targetMultiAttachEnabled :: Maybe Bool
targetIops :: Maybe Int
statusMessage :: Maybe Text
startTime :: Maybe ISO8601
progress :: Maybe Integer
originalVolumeType :: Maybe VolumeType
originalThroughput :: Maybe Int
originalSize :: Maybe Int
originalMultiAttachEnabled :: Maybe Bool
originalIops :: Maybe Int
modificationState :: Maybe VolumeModificationState
endTime :: Maybe ISO8601
$sel:volumeId:VolumeModification' :: VolumeModification -> Maybe Text
$sel:targetVolumeType:VolumeModification' :: VolumeModification -> Maybe VolumeType
$sel:targetThroughput:VolumeModification' :: VolumeModification -> Maybe Int
$sel:targetSize:VolumeModification' :: VolumeModification -> Maybe Int
$sel:targetMultiAttachEnabled:VolumeModification' :: VolumeModification -> Maybe Bool
$sel:targetIops:VolumeModification' :: VolumeModification -> Maybe Int
$sel:statusMessage:VolumeModification' :: VolumeModification -> Maybe Text
$sel:startTime:VolumeModification' :: VolumeModification -> Maybe ISO8601
$sel:progress:VolumeModification' :: VolumeModification -> Maybe Integer
$sel:originalVolumeType:VolumeModification' :: VolumeModification -> Maybe VolumeType
$sel:originalThroughput:VolumeModification' :: VolumeModification -> Maybe Int
$sel:originalSize:VolumeModification' :: VolumeModification -> Maybe Int
$sel:originalMultiAttachEnabled:VolumeModification' :: VolumeModification -> Maybe Bool
$sel:originalIops:VolumeModification' :: VolumeModification -> Maybe Int
$sel:modificationState:VolumeModification' :: VolumeModification -> Maybe VolumeModificationState
$sel:endTime:VolumeModification' :: VolumeModification -> Maybe ISO8601
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
endTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VolumeModificationState
modificationState
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
originalIops
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
originalMultiAttachEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
originalSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
originalThroughput
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VolumeType
originalVolumeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
progress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ISO8601
startTime
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
statusMessage
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
targetIops
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Bool
targetMultiAttachEnabled
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
targetSize
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
targetThroughput
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe VolumeType
targetVolumeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
volumeId

instance Prelude.NFData VolumeModification where
  rnf :: VolumeModification -> ()
rnf VolumeModification' {Maybe Bool
Maybe Int
Maybe Integer
Maybe Text
Maybe ISO8601
Maybe VolumeModificationState
Maybe VolumeType
volumeId :: Maybe Text
targetVolumeType :: Maybe VolumeType
targetThroughput :: Maybe Int
targetSize :: Maybe Int
targetMultiAttachEnabled :: Maybe Bool
targetIops :: Maybe Int
statusMessage :: Maybe Text
startTime :: Maybe ISO8601
progress :: Maybe Integer
originalVolumeType :: Maybe VolumeType
originalThroughput :: Maybe Int
originalSize :: Maybe Int
originalMultiAttachEnabled :: Maybe Bool
originalIops :: Maybe Int
modificationState :: Maybe VolumeModificationState
endTime :: Maybe ISO8601
$sel:volumeId:VolumeModification' :: VolumeModification -> Maybe Text
$sel:targetVolumeType:VolumeModification' :: VolumeModification -> Maybe VolumeType
$sel:targetThroughput:VolumeModification' :: VolumeModification -> Maybe Int
$sel:targetSize:VolumeModification' :: VolumeModification -> Maybe Int
$sel:targetMultiAttachEnabled:VolumeModification' :: VolumeModification -> Maybe Bool
$sel:targetIops:VolumeModification' :: VolumeModification -> Maybe Int
$sel:statusMessage:VolumeModification' :: VolumeModification -> Maybe Text
$sel:startTime:VolumeModification' :: VolumeModification -> Maybe ISO8601
$sel:progress:VolumeModification' :: VolumeModification -> Maybe Integer
$sel:originalVolumeType:VolumeModification' :: VolumeModification -> Maybe VolumeType
$sel:originalThroughput:VolumeModification' :: VolumeModification -> Maybe Int
$sel:originalSize:VolumeModification' :: VolumeModification -> Maybe Int
$sel:originalMultiAttachEnabled:VolumeModification' :: VolumeModification -> Maybe Bool
$sel:originalIops:VolumeModification' :: VolumeModification -> Maybe Int
$sel:modificationState:VolumeModification' :: VolumeModification -> Maybe VolumeModificationState
$sel:endTime:VolumeModification' :: VolumeModification -> Maybe ISO8601
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
endTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VolumeModificationState
modificationState
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
originalIops
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
originalMultiAttachEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
originalSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
originalThroughput
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VolumeType
originalVolumeType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
progress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ISO8601
startTime
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
statusMessage
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
targetIops
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Bool
targetMultiAttachEnabled
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
targetSize
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
targetThroughput
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe VolumeType
targetVolumeType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
volumeId