{-# 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.Redshift.Types.ResizeProgressMessage
-- 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.Redshift.Types.ResizeProgressMessage 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 Amazonka.Redshift.Internal

-- | Describes the result of a cluster resize operation.
--
-- /See:/ 'newResizeProgressMessage' smart constructor.
data ResizeProgressMessage = ResizeProgressMessage'
  { -- | The average rate of the resize operation over the last few minutes,
    -- measured in megabytes per second. After the resize operation completes,
    -- this value shows the average rate of the entire resize operation.
    ResizeProgressMessage -> Maybe Double
avgResizeRateInMegaBytesPerSecond :: Prelude.Maybe Prelude.Double,
    -- | The percent of data transferred from source cluster to target cluster.
    ResizeProgressMessage -> Maybe Double
dataTransferProgressPercent :: Prelude.Maybe Prelude.Double,
    -- | The amount of seconds that have elapsed since the resize operation
    -- began. After the resize operation completes, this value shows the total
    -- actual time, in seconds, for the resize operation.
    ResizeProgressMessage -> Maybe Integer
elapsedTimeInSeconds :: Prelude.Maybe Prelude.Integer,
    -- | The estimated time remaining, in seconds, until the resize operation is
    -- complete. This value is calculated based on the average resize rate and
    -- the estimated amount of data remaining to be processed. Once the resize
    -- operation is complete, this value will be 0.
    ResizeProgressMessage -> Maybe Integer
estimatedTimeToCompletionInSeconds :: Prelude.Maybe Prelude.Integer,
    -- | The names of tables that have been completely imported .
    --
    -- Valid Values: List of table names.
    ResizeProgressMessage -> Maybe [Text]
importTablesCompleted :: Prelude.Maybe [Prelude.Text],
    -- | The names of tables that are being currently imported.
    --
    -- Valid Values: List of table names.
    ResizeProgressMessage -> Maybe [Text]
importTablesInProgress :: Prelude.Maybe [Prelude.Text],
    -- | The names of tables that have not been yet imported.
    --
    -- Valid Values: List of table names
    ResizeProgressMessage -> Maybe [Text]
importTablesNotStarted :: Prelude.Maybe [Prelude.Text],
    -- | An optional string to provide additional details about the resize
    -- action.
    ResizeProgressMessage -> Maybe Text
message :: Prelude.Maybe Prelude.Text,
    -- | While the resize operation is in progress, this value shows the current
    -- amount of data, in megabytes, that has been processed so far. When the
    -- resize operation is complete, this value shows the total amount of data,
    -- in megabytes, on the cluster, which may be more or less than
    -- TotalResizeDataInMegaBytes (the estimated total amount of data before
    -- resize).
    ResizeProgressMessage -> Maybe Integer
progressInMegaBytes :: Prelude.Maybe Prelude.Integer,
    -- | An enum with possible values of @ClassicResize@ and @ElasticResize@.
    -- These values describe the type of resize operation being performed.
    ResizeProgressMessage -> Maybe Text
resizeType :: Prelude.Maybe Prelude.Text,
    -- | The status of the resize operation.
    --
    -- Valid Values: @NONE@ | @IN_PROGRESS@ | @FAILED@ | @SUCCEEDED@ |
    -- @CANCELLING@
    ResizeProgressMessage -> Maybe Text
status :: Prelude.Maybe Prelude.Text,
    -- | The cluster type after the resize operation is complete.
    --
    -- Valid Values: @multi-node@ | @single-node@
    ResizeProgressMessage -> Maybe Text
targetClusterType :: Prelude.Maybe Prelude.Text,
    -- | The type of encryption for the cluster after the resize is complete.
    --
    -- Possible values are @KMS@ and @None@.
    ResizeProgressMessage -> Maybe Text
targetEncryptionType :: Prelude.Maybe Prelude.Text,
    -- | The node type that the cluster will have after the resize operation is
    -- complete.
    ResizeProgressMessage -> Maybe Text
targetNodeType :: Prelude.Maybe Prelude.Text,
    -- | The number of nodes that the cluster will have after the resize
    -- operation is complete.
    ResizeProgressMessage -> Maybe Int
targetNumberOfNodes :: Prelude.Maybe Prelude.Int,
    -- | The estimated total amount of data, in megabytes, on the cluster before
    -- the resize operation began.
    ResizeProgressMessage -> Maybe Integer
totalResizeDataInMegaBytes :: Prelude.Maybe Prelude.Integer
  }
  deriving (ResizeProgressMessage -> ResizeProgressMessage -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: ResizeProgressMessage -> ResizeProgressMessage -> Bool
$c/= :: ResizeProgressMessage -> ResizeProgressMessage -> Bool
== :: ResizeProgressMessage -> ResizeProgressMessage -> Bool
$c== :: ResizeProgressMessage -> ResizeProgressMessage -> Bool
Prelude.Eq, ReadPrec [ResizeProgressMessage]
ReadPrec ResizeProgressMessage
Int -> ReadS ResizeProgressMessage
ReadS [ResizeProgressMessage]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [ResizeProgressMessage]
$creadListPrec :: ReadPrec [ResizeProgressMessage]
readPrec :: ReadPrec ResizeProgressMessage
$creadPrec :: ReadPrec ResizeProgressMessage
readList :: ReadS [ResizeProgressMessage]
$creadList :: ReadS [ResizeProgressMessage]
readsPrec :: Int -> ReadS ResizeProgressMessage
$creadsPrec :: Int -> ReadS ResizeProgressMessage
Prelude.Read, Int -> ResizeProgressMessage -> ShowS
[ResizeProgressMessage] -> ShowS
ResizeProgressMessage -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [ResizeProgressMessage] -> ShowS
$cshowList :: [ResizeProgressMessage] -> ShowS
show :: ResizeProgressMessage -> String
$cshow :: ResizeProgressMessage -> String
showsPrec :: Int -> ResizeProgressMessage -> ShowS
$cshowsPrec :: Int -> ResizeProgressMessage -> ShowS
Prelude.Show, forall x. Rep ResizeProgressMessage x -> ResizeProgressMessage
forall x. ResizeProgressMessage -> Rep ResizeProgressMessage x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep ResizeProgressMessage x -> ResizeProgressMessage
$cfrom :: forall x. ResizeProgressMessage -> Rep ResizeProgressMessage x
Prelude.Generic)

-- |
-- Create a value of 'ResizeProgressMessage' 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:
--
-- 'avgResizeRateInMegaBytesPerSecond', 'resizeProgressMessage_avgResizeRateInMegaBytesPerSecond' - The average rate of the resize operation over the last few minutes,
-- measured in megabytes per second. After the resize operation completes,
-- this value shows the average rate of the entire resize operation.
--
-- 'dataTransferProgressPercent', 'resizeProgressMessage_dataTransferProgressPercent' - The percent of data transferred from source cluster to target cluster.
--
-- 'elapsedTimeInSeconds', 'resizeProgressMessage_elapsedTimeInSeconds' - The amount of seconds that have elapsed since the resize operation
-- began. After the resize operation completes, this value shows the total
-- actual time, in seconds, for the resize operation.
--
-- 'estimatedTimeToCompletionInSeconds', 'resizeProgressMessage_estimatedTimeToCompletionInSeconds' - The estimated time remaining, in seconds, until the resize operation is
-- complete. This value is calculated based on the average resize rate and
-- the estimated amount of data remaining to be processed. Once the resize
-- operation is complete, this value will be 0.
--
-- 'importTablesCompleted', 'resizeProgressMessage_importTablesCompleted' - The names of tables that have been completely imported .
--
-- Valid Values: List of table names.
--
-- 'importTablesInProgress', 'resizeProgressMessage_importTablesInProgress' - The names of tables that are being currently imported.
--
-- Valid Values: List of table names.
--
-- 'importTablesNotStarted', 'resizeProgressMessage_importTablesNotStarted' - The names of tables that have not been yet imported.
--
-- Valid Values: List of table names
--
-- 'message', 'resizeProgressMessage_message' - An optional string to provide additional details about the resize
-- action.
--
-- 'progressInMegaBytes', 'resizeProgressMessage_progressInMegaBytes' - While the resize operation is in progress, this value shows the current
-- amount of data, in megabytes, that has been processed so far. When the
-- resize operation is complete, this value shows the total amount of data,
-- in megabytes, on the cluster, which may be more or less than
-- TotalResizeDataInMegaBytes (the estimated total amount of data before
-- resize).
--
-- 'resizeType', 'resizeProgressMessage_resizeType' - An enum with possible values of @ClassicResize@ and @ElasticResize@.
-- These values describe the type of resize operation being performed.
--
-- 'status', 'resizeProgressMessage_status' - The status of the resize operation.
--
-- Valid Values: @NONE@ | @IN_PROGRESS@ | @FAILED@ | @SUCCEEDED@ |
-- @CANCELLING@
--
-- 'targetClusterType', 'resizeProgressMessage_targetClusterType' - The cluster type after the resize operation is complete.
--
-- Valid Values: @multi-node@ | @single-node@
--
-- 'targetEncryptionType', 'resizeProgressMessage_targetEncryptionType' - The type of encryption for the cluster after the resize is complete.
--
-- Possible values are @KMS@ and @None@.
--
-- 'targetNodeType', 'resizeProgressMessage_targetNodeType' - The node type that the cluster will have after the resize operation is
-- complete.
--
-- 'targetNumberOfNodes', 'resizeProgressMessage_targetNumberOfNodes' - The number of nodes that the cluster will have after the resize
-- operation is complete.
--
-- 'totalResizeDataInMegaBytes', 'resizeProgressMessage_totalResizeDataInMegaBytes' - The estimated total amount of data, in megabytes, on the cluster before
-- the resize operation began.
newResizeProgressMessage ::
  ResizeProgressMessage
newResizeProgressMessage :: ResizeProgressMessage
newResizeProgressMessage =
  ResizeProgressMessage'
    { $sel:avgResizeRateInMegaBytesPerSecond:ResizeProgressMessage' :: Maybe Double
avgResizeRateInMegaBytesPerSecond =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dataTransferProgressPercent:ResizeProgressMessage' :: Maybe Double
dataTransferProgressPercent = forall a. Maybe a
Prelude.Nothing,
      $sel:elapsedTimeInSeconds:ResizeProgressMessage' :: Maybe Integer
elapsedTimeInSeconds = forall a. Maybe a
Prelude.Nothing,
      $sel:estimatedTimeToCompletionInSeconds:ResizeProgressMessage' :: Maybe Integer
estimatedTimeToCompletionInSeconds = forall a. Maybe a
Prelude.Nothing,
      $sel:importTablesCompleted:ResizeProgressMessage' :: Maybe [Text]
importTablesCompleted = forall a. Maybe a
Prelude.Nothing,
      $sel:importTablesInProgress:ResizeProgressMessage' :: Maybe [Text]
importTablesInProgress = forall a. Maybe a
Prelude.Nothing,
      $sel:importTablesNotStarted:ResizeProgressMessage' :: Maybe [Text]
importTablesNotStarted = forall a. Maybe a
Prelude.Nothing,
      $sel:message:ResizeProgressMessage' :: Maybe Text
message = forall a. Maybe a
Prelude.Nothing,
      $sel:progressInMegaBytes:ResizeProgressMessage' :: Maybe Integer
progressInMegaBytes = forall a. Maybe a
Prelude.Nothing,
      $sel:resizeType:ResizeProgressMessage' :: Maybe Text
resizeType = forall a. Maybe a
Prelude.Nothing,
      $sel:status:ResizeProgressMessage' :: Maybe Text
status = forall a. Maybe a
Prelude.Nothing,
      $sel:targetClusterType:ResizeProgressMessage' :: Maybe Text
targetClusterType = forall a. Maybe a
Prelude.Nothing,
      $sel:targetEncryptionType:ResizeProgressMessage' :: Maybe Text
targetEncryptionType = forall a. Maybe a
Prelude.Nothing,
      $sel:targetNodeType:ResizeProgressMessage' :: Maybe Text
targetNodeType = forall a. Maybe a
Prelude.Nothing,
      $sel:targetNumberOfNodes:ResizeProgressMessage' :: Maybe Int
targetNumberOfNodes = forall a. Maybe a
Prelude.Nothing,
      $sel:totalResizeDataInMegaBytes:ResizeProgressMessage' :: Maybe Integer
totalResizeDataInMegaBytes = forall a. Maybe a
Prelude.Nothing
    }

-- | The average rate of the resize operation over the last few minutes,
-- measured in megabytes per second. After the resize operation completes,
-- this value shows the average rate of the entire resize operation.
resizeProgressMessage_avgResizeRateInMegaBytesPerSecond :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Double)
resizeProgressMessage_avgResizeRateInMegaBytesPerSecond :: Lens' ResizeProgressMessage (Maybe Double)
resizeProgressMessage_avgResizeRateInMegaBytesPerSecond = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Double
avgResizeRateInMegaBytesPerSecond :: Maybe Double
$sel:avgResizeRateInMegaBytesPerSecond:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Double
avgResizeRateInMegaBytesPerSecond} -> Maybe Double
avgResizeRateInMegaBytesPerSecond) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Double
a -> ResizeProgressMessage
s {$sel:avgResizeRateInMegaBytesPerSecond:ResizeProgressMessage' :: Maybe Double
avgResizeRateInMegaBytesPerSecond = Maybe Double
a} :: ResizeProgressMessage)

-- | The percent of data transferred from source cluster to target cluster.
resizeProgressMessage_dataTransferProgressPercent :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Double)
resizeProgressMessage_dataTransferProgressPercent :: Lens' ResizeProgressMessage (Maybe Double)
resizeProgressMessage_dataTransferProgressPercent = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Double
dataTransferProgressPercent :: Maybe Double
$sel:dataTransferProgressPercent:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Double
dataTransferProgressPercent} -> Maybe Double
dataTransferProgressPercent) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Double
a -> ResizeProgressMessage
s {$sel:dataTransferProgressPercent:ResizeProgressMessage' :: Maybe Double
dataTransferProgressPercent = Maybe Double
a} :: ResizeProgressMessage)

-- | The amount of seconds that have elapsed since the resize operation
-- began. After the resize operation completes, this value shows the total
-- actual time, in seconds, for the resize operation.
resizeProgressMessage_elapsedTimeInSeconds :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Integer)
resizeProgressMessage_elapsedTimeInSeconds :: Lens' ResizeProgressMessage (Maybe Integer)
resizeProgressMessage_elapsedTimeInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Integer
elapsedTimeInSeconds :: Maybe Integer
$sel:elapsedTimeInSeconds:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
elapsedTimeInSeconds} -> Maybe Integer
elapsedTimeInSeconds) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Integer
a -> ResizeProgressMessage
s {$sel:elapsedTimeInSeconds:ResizeProgressMessage' :: Maybe Integer
elapsedTimeInSeconds = Maybe Integer
a} :: ResizeProgressMessage)

-- | The estimated time remaining, in seconds, until the resize operation is
-- complete. This value is calculated based on the average resize rate and
-- the estimated amount of data remaining to be processed. Once the resize
-- operation is complete, this value will be 0.
resizeProgressMessage_estimatedTimeToCompletionInSeconds :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Integer)
resizeProgressMessage_estimatedTimeToCompletionInSeconds :: Lens' ResizeProgressMessage (Maybe Integer)
resizeProgressMessage_estimatedTimeToCompletionInSeconds = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Integer
estimatedTimeToCompletionInSeconds :: Maybe Integer
$sel:estimatedTimeToCompletionInSeconds:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
estimatedTimeToCompletionInSeconds} -> Maybe Integer
estimatedTimeToCompletionInSeconds) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Integer
a -> ResizeProgressMessage
s {$sel:estimatedTimeToCompletionInSeconds:ResizeProgressMessage' :: Maybe Integer
estimatedTimeToCompletionInSeconds = Maybe Integer
a} :: ResizeProgressMessage)

-- | The names of tables that have been completely imported .
--
-- Valid Values: List of table names.
resizeProgressMessage_importTablesCompleted :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe [Prelude.Text])
resizeProgressMessage_importTablesCompleted :: Lens' ResizeProgressMessage (Maybe [Text])
resizeProgressMessage_importTablesCompleted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe [Text]
importTablesCompleted :: Maybe [Text]
$sel:importTablesCompleted:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
importTablesCompleted} -> Maybe [Text]
importTablesCompleted) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe [Text]
a -> ResizeProgressMessage
s {$sel:importTablesCompleted:ResizeProgressMessage' :: Maybe [Text]
importTablesCompleted = Maybe [Text]
a} :: ResizeProgressMessage) 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 names of tables that are being currently imported.
--
-- Valid Values: List of table names.
resizeProgressMessage_importTablesInProgress :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe [Prelude.Text])
resizeProgressMessage_importTablesInProgress :: Lens' ResizeProgressMessage (Maybe [Text])
resizeProgressMessage_importTablesInProgress = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe [Text]
importTablesInProgress :: Maybe [Text]
$sel:importTablesInProgress:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
importTablesInProgress} -> Maybe [Text]
importTablesInProgress) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe [Text]
a -> ResizeProgressMessage
s {$sel:importTablesInProgress:ResizeProgressMessage' :: Maybe [Text]
importTablesInProgress = Maybe [Text]
a} :: ResizeProgressMessage) 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 names of tables that have not been yet imported.
--
-- Valid Values: List of table names
resizeProgressMessage_importTablesNotStarted :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe [Prelude.Text])
resizeProgressMessage_importTablesNotStarted :: Lens' ResizeProgressMessage (Maybe [Text])
resizeProgressMessage_importTablesNotStarted = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe [Text]
importTablesNotStarted :: Maybe [Text]
$sel:importTablesNotStarted:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
importTablesNotStarted} -> Maybe [Text]
importTablesNotStarted) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe [Text]
a -> ResizeProgressMessage
s {$sel:importTablesNotStarted:ResizeProgressMessage' :: Maybe [Text]
importTablesNotStarted = Maybe [Text]
a} :: ResizeProgressMessage) 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

-- | An optional string to provide additional details about the resize
-- action.
resizeProgressMessage_message :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Text)
resizeProgressMessage_message :: Lens' ResizeProgressMessage (Maybe Text)
resizeProgressMessage_message = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Text
message :: Maybe Text
$sel:message:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
message} -> Maybe Text
message) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Text
a -> ResizeProgressMessage
s {$sel:message:ResizeProgressMessage' :: Maybe Text
message = Maybe Text
a} :: ResizeProgressMessage)

-- | While the resize operation is in progress, this value shows the current
-- amount of data, in megabytes, that has been processed so far. When the
-- resize operation is complete, this value shows the total amount of data,
-- in megabytes, on the cluster, which may be more or less than
-- TotalResizeDataInMegaBytes (the estimated total amount of data before
-- resize).
resizeProgressMessage_progressInMegaBytes :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Integer)
resizeProgressMessage_progressInMegaBytes :: Lens' ResizeProgressMessage (Maybe Integer)
resizeProgressMessage_progressInMegaBytes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Integer
progressInMegaBytes :: Maybe Integer
$sel:progressInMegaBytes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
progressInMegaBytes} -> Maybe Integer
progressInMegaBytes) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Integer
a -> ResizeProgressMessage
s {$sel:progressInMegaBytes:ResizeProgressMessage' :: Maybe Integer
progressInMegaBytes = Maybe Integer
a} :: ResizeProgressMessage)

-- | An enum with possible values of @ClassicResize@ and @ElasticResize@.
-- These values describe the type of resize operation being performed.
resizeProgressMessage_resizeType :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Text)
resizeProgressMessage_resizeType :: Lens' ResizeProgressMessage (Maybe Text)
resizeProgressMessage_resizeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Text
resizeType :: Maybe Text
$sel:resizeType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
resizeType} -> Maybe Text
resizeType) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Text
a -> ResizeProgressMessage
s {$sel:resizeType:ResizeProgressMessage' :: Maybe Text
resizeType = Maybe Text
a} :: ResizeProgressMessage)

-- | The status of the resize operation.
--
-- Valid Values: @NONE@ | @IN_PROGRESS@ | @FAILED@ | @SUCCEEDED@ |
-- @CANCELLING@
resizeProgressMessage_status :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Text)
resizeProgressMessage_status :: Lens' ResizeProgressMessage (Maybe Text)
resizeProgressMessage_status = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Text
status :: Maybe Text
$sel:status:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
status} -> Maybe Text
status) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Text
a -> ResizeProgressMessage
s {$sel:status:ResizeProgressMessage' :: Maybe Text
status = Maybe Text
a} :: ResizeProgressMessage)

-- | The cluster type after the resize operation is complete.
--
-- Valid Values: @multi-node@ | @single-node@
resizeProgressMessage_targetClusterType :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Text)
resizeProgressMessage_targetClusterType :: Lens' ResizeProgressMessage (Maybe Text)
resizeProgressMessage_targetClusterType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Text
targetClusterType :: Maybe Text
$sel:targetClusterType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
targetClusterType} -> Maybe Text
targetClusterType) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Text
a -> ResizeProgressMessage
s {$sel:targetClusterType:ResizeProgressMessage' :: Maybe Text
targetClusterType = Maybe Text
a} :: ResizeProgressMessage)

-- | The type of encryption for the cluster after the resize is complete.
--
-- Possible values are @KMS@ and @None@.
resizeProgressMessage_targetEncryptionType :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Text)
resizeProgressMessage_targetEncryptionType :: Lens' ResizeProgressMessage (Maybe Text)
resizeProgressMessage_targetEncryptionType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Text
targetEncryptionType :: Maybe Text
$sel:targetEncryptionType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
targetEncryptionType} -> Maybe Text
targetEncryptionType) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Text
a -> ResizeProgressMessage
s {$sel:targetEncryptionType:ResizeProgressMessage' :: Maybe Text
targetEncryptionType = Maybe Text
a} :: ResizeProgressMessage)

-- | The node type that the cluster will have after the resize operation is
-- complete.
resizeProgressMessage_targetNodeType :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Text)
resizeProgressMessage_targetNodeType :: Lens' ResizeProgressMessage (Maybe Text)
resizeProgressMessage_targetNodeType = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Text
targetNodeType :: Maybe Text
$sel:targetNodeType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
targetNodeType} -> Maybe Text
targetNodeType) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Text
a -> ResizeProgressMessage
s {$sel:targetNodeType:ResizeProgressMessage' :: Maybe Text
targetNodeType = Maybe Text
a} :: ResizeProgressMessage)

-- | The number of nodes that the cluster will have after the resize
-- operation is complete.
resizeProgressMessage_targetNumberOfNodes :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Int)
resizeProgressMessage_targetNumberOfNodes :: Lens' ResizeProgressMessage (Maybe Int)
resizeProgressMessage_targetNumberOfNodes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Int
targetNumberOfNodes :: Maybe Int
$sel:targetNumberOfNodes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Int
targetNumberOfNodes} -> Maybe Int
targetNumberOfNodes) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Int
a -> ResizeProgressMessage
s {$sel:targetNumberOfNodes:ResizeProgressMessage' :: Maybe Int
targetNumberOfNodes = Maybe Int
a} :: ResizeProgressMessage)

-- | The estimated total amount of data, in megabytes, on the cluster before
-- the resize operation began.
resizeProgressMessage_totalResizeDataInMegaBytes :: Lens.Lens' ResizeProgressMessage (Prelude.Maybe Prelude.Integer)
resizeProgressMessage_totalResizeDataInMegaBytes :: Lens' ResizeProgressMessage (Maybe Integer)
resizeProgressMessage_totalResizeDataInMegaBytes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\ResizeProgressMessage' {Maybe Integer
totalResizeDataInMegaBytes :: Maybe Integer
$sel:totalResizeDataInMegaBytes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
totalResizeDataInMegaBytes} -> Maybe Integer
totalResizeDataInMegaBytes) (\s :: ResizeProgressMessage
s@ResizeProgressMessage' {} Maybe Integer
a -> ResizeProgressMessage
s {$sel:totalResizeDataInMegaBytes:ResizeProgressMessage' :: Maybe Integer
totalResizeDataInMegaBytes = Maybe Integer
a} :: ResizeProgressMessage)

instance Data.FromXML ResizeProgressMessage where
  parseXML :: [Node] -> Either String ResizeProgressMessage
parseXML [Node]
x =
    Maybe Double
-> Maybe Double
-> Maybe Integer
-> Maybe Integer
-> Maybe [Text]
-> Maybe [Text]
-> Maybe [Text]
-> Maybe Text
-> Maybe Integer
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Int
-> Maybe Integer
-> ResizeProgressMessage
ResizeProgressMessage'
      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
"AvgResizeRateInMegaBytesPerSecond")
      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
"DataTransferProgressPercent")
      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
"ElapsedTimeInSeconds")
      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
"EstimatedTimeToCompletionInSeconds")
      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
"ImportTablesCompleted"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      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
"ImportTablesInProgress"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      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
"ImportTablesNotStarted"
                      forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ forall a. Monoid a => a
Prelude.mempty
                      forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (forall a. FromXML a => Text -> [Node] -> Either String [a]
Data.parseXMLList Text
"member")
                  )
      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
"Message")
      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
"ProgressInMegaBytes")
      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
"ResizeType")
      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
"Status")
      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
"TargetClusterType")
      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
"TargetEncryptionType")
      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
"TargetNodeType")
      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
"TargetNumberOfNodes")
      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
"TotalResizeDataInMegaBytes")

instance Prelude.Hashable ResizeProgressMessage where
  hashWithSalt :: Int -> ResizeProgressMessage -> Int
hashWithSalt Int
_salt ResizeProgressMessage' {Maybe Double
Maybe Int
Maybe Integer
Maybe [Text]
Maybe Text
totalResizeDataInMegaBytes :: Maybe Integer
targetNumberOfNodes :: Maybe Int
targetNodeType :: Maybe Text
targetEncryptionType :: Maybe Text
targetClusterType :: Maybe Text
status :: Maybe Text
resizeType :: Maybe Text
progressInMegaBytes :: Maybe Integer
message :: Maybe Text
importTablesNotStarted :: Maybe [Text]
importTablesInProgress :: Maybe [Text]
importTablesCompleted :: Maybe [Text]
estimatedTimeToCompletionInSeconds :: Maybe Integer
elapsedTimeInSeconds :: Maybe Integer
dataTransferProgressPercent :: Maybe Double
avgResizeRateInMegaBytesPerSecond :: Maybe Double
$sel:totalResizeDataInMegaBytes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
$sel:targetNumberOfNodes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Int
$sel:targetNodeType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:targetEncryptionType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:targetClusterType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:status:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:resizeType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:progressInMegaBytes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
$sel:message:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:importTablesNotStarted:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
$sel:importTablesInProgress:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
$sel:importTablesCompleted:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
$sel:estimatedTimeToCompletionInSeconds:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
$sel:elapsedTimeInSeconds:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
$sel:dataTransferProgressPercent:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Double
$sel:avgResizeRateInMegaBytesPerSecond:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Double
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
avgResizeRateInMegaBytesPerSecond
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Double
dataTransferProgressPercent
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
elapsedTimeInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
estimatedTimeToCompletionInSeconds
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
importTablesCompleted
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
importTablesInProgress
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [Text]
importTablesNotStarted
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
message
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
progressInMegaBytes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
resizeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
status
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
targetClusterType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
targetEncryptionType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
targetNodeType
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Int
targetNumberOfNodes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Integer
totalResizeDataInMegaBytes

instance Prelude.NFData ResizeProgressMessage where
  rnf :: ResizeProgressMessage -> ()
rnf ResizeProgressMessage' {Maybe Double
Maybe Int
Maybe Integer
Maybe [Text]
Maybe Text
totalResizeDataInMegaBytes :: Maybe Integer
targetNumberOfNodes :: Maybe Int
targetNodeType :: Maybe Text
targetEncryptionType :: Maybe Text
targetClusterType :: Maybe Text
status :: Maybe Text
resizeType :: Maybe Text
progressInMegaBytes :: Maybe Integer
message :: Maybe Text
importTablesNotStarted :: Maybe [Text]
importTablesInProgress :: Maybe [Text]
importTablesCompleted :: Maybe [Text]
estimatedTimeToCompletionInSeconds :: Maybe Integer
elapsedTimeInSeconds :: Maybe Integer
dataTransferProgressPercent :: Maybe Double
avgResizeRateInMegaBytesPerSecond :: Maybe Double
$sel:totalResizeDataInMegaBytes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
$sel:targetNumberOfNodes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Int
$sel:targetNodeType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:targetEncryptionType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:targetClusterType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:status:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:resizeType:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:progressInMegaBytes:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
$sel:message:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Text
$sel:importTablesNotStarted:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
$sel:importTablesInProgress:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
$sel:importTablesCompleted:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe [Text]
$sel:estimatedTimeToCompletionInSeconds:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
$sel:elapsedTimeInSeconds:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Integer
$sel:dataTransferProgressPercent:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Double
$sel:avgResizeRateInMegaBytesPerSecond:ResizeProgressMessage' :: ResizeProgressMessage -> Maybe Double
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
avgResizeRateInMegaBytesPerSecond
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Double
dataTransferProgressPercent
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
elapsedTimeInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
estimatedTimeToCompletionInSeconds
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
importTablesCompleted
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
importTablesInProgress
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [Text]
importTablesNotStarted
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
message
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
progressInMegaBytes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
resizeType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
status
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
targetClusterType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
targetEncryptionType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
targetNodeType
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Int
targetNumberOfNodes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Integer
totalResizeDataInMegaBytes