{-# LANGUAGE DataKinds #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE GeneralizedNewtypeDeriving #-} {-# LANGUAGE LambdaCase #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} -- Module : Network.AWS.Redshift.DescribeResize -- Copyright : (c) 2013-2014 Brendan Hay -- License : This Source Code Form is subject to the terms of -- the Mozilla Public License, v. 2.0. -- A copy of the MPL can be found in the LICENSE file or -- you can obtain it at http://mozilla.org/MPL/2.0/. -- Maintainer : Brendan Hay -- Stability : experimental -- Portability : non-portable (GHC extensions) -- | Returns information about the last resize operation for the specified -- cluster. If no resize operation has ever been initiated for the specified -- cluster, a HTTP 404 error is returned. If a resize operation was initiated -- and completed, the status of the resize remains as SUCCEEDED until the next -- resize. A resize operation can be requested using ModifyCluster and -- specifying a different number or type of nodes for the cluster. -- -- module Network.AWS.Redshift.DescribeResize ( -- * Request DescribeResize -- ** Request constructor , describeResize -- ** Request lenses , drClusterIdentifier -- * Response , DescribeResizeResponse -- ** Response constructor , describeResizeResponse -- ** Response lenses , drrAvgResizeRateInMegaBytesPerSecond , drrElapsedTimeInSeconds , drrEstimatedTimeToCompletionInSeconds , drrImportTablesCompleted , drrImportTablesInProgress , drrImportTablesNotStarted , drrProgressInMegaBytes , drrStatus , drrTargetClusterType , drrTargetNodeType , drrTargetNumberOfNodes , drrTotalResizeDataInMegaBytes ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.Redshift.Types import qualified GHC.Exts newtype DescribeResize = DescribeResize { _drClusterIdentifier :: Text } deriving (Eq, Ord, Show, Monoid, IsString) -- | 'DescribeResize' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'drClusterIdentifier' @::@ 'Text' -- describeResize :: Text -- ^ 'drClusterIdentifier' -> DescribeResize describeResize p1 = DescribeResize { _drClusterIdentifier = p1 } -- | The unique identifier of a cluster whose resize progress you are -- requesting. This parameter is case-sensitive. By default, resize -- operations for all clusters defined for an AWS account are returned. drClusterIdentifier :: Lens' DescribeResize Text drClusterIdentifier = lens _drClusterIdentifier (\s a -> s { _drClusterIdentifier = a }) data DescribeResizeResponse = DescribeResizeResponse { _drrAvgResizeRateInMegaBytesPerSecond :: Maybe Double , _drrElapsedTimeInSeconds :: Maybe Integer , _drrEstimatedTimeToCompletionInSeconds :: Maybe Integer , _drrImportTablesCompleted :: List "ImportTablesCompleted" Text , _drrImportTablesInProgress :: List "ImportTablesInProgress" Text , _drrImportTablesNotStarted :: List "ImportTablesNotStarted" Text , _drrProgressInMegaBytes :: Maybe Integer , _drrStatus :: Maybe Text , _drrTargetClusterType :: Maybe Text , _drrTargetNodeType :: Maybe Text , _drrTargetNumberOfNodes :: Maybe Int , _drrTotalResizeDataInMegaBytes :: Maybe Integer } deriving (Eq, Ord, Show) -- | 'DescribeResizeResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'drrAvgResizeRateInMegaBytesPerSecond' @::@ 'Maybe' 'Double' -- -- * 'drrElapsedTimeInSeconds' @::@ 'Maybe' 'Integer' -- -- * 'drrEstimatedTimeToCompletionInSeconds' @::@ 'Maybe' 'Integer' -- -- * 'drrImportTablesCompleted' @::@ ['Text'] -- -- * 'drrImportTablesInProgress' @::@ ['Text'] -- -- * 'drrImportTablesNotStarted' @::@ ['Text'] -- -- * 'drrProgressInMegaBytes' @::@ 'Maybe' 'Integer' -- -- * 'drrStatus' @::@ 'Maybe' 'Text' -- -- * 'drrTargetClusterType' @::@ 'Maybe' 'Text' -- -- * 'drrTargetNodeType' @::@ 'Maybe' 'Text' -- -- * 'drrTargetNumberOfNodes' @::@ 'Maybe' 'Int' -- -- * 'drrTotalResizeDataInMegaBytes' @::@ 'Maybe' 'Integer' -- describeResizeResponse :: DescribeResizeResponse describeResizeResponse = DescribeResizeResponse { _drrTargetNodeType = Nothing , _drrTargetNumberOfNodes = Nothing , _drrTargetClusterType = Nothing , _drrStatus = Nothing , _drrImportTablesCompleted = mempty , _drrImportTablesInProgress = mempty , _drrImportTablesNotStarted = mempty , _drrAvgResizeRateInMegaBytesPerSecond = Nothing , _drrTotalResizeDataInMegaBytes = Nothing , _drrProgressInMegaBytes = Nothing , _drrElapsedTimeInSeconds = Nothing , _drrEstimatedTimeToCompletionInSeconds = 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. drrAvgResizeRateInMegaBytesPerSecond :: Lens' DescribeResizeResponse (Maybe Double) drrAvgResizeRateInMegaBytesPerSecond = lens _drrAvgResizeRateInMegaBytesPerSecond (\s a -> s { _drrAvgResizeRateInMegaBytesPerSecond = a }) -- | 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. drrElapsedTimeInSeconds :: Lens' DescribeResizeResponse (Maybe Integer) drrElapsedTimeInSeconds = lens _drrElapsedTimeInSeconds (\s a -> s { _drrElapsedTimeInSeconds = a }) -- | 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. drrEstimatedTimeToCompletionInSeconds :: Lens' DescribeResizeResponse (Maybe Integer) drrEstimatedTimeToCompletionInSeconds = lens _drrEstimatedTimeToCompletionInSeconds (\s a -> s { _drrEstimatedTimeToCompletionInSeconds = a }) -- | The names of tables that have been completely imported . Valid Values: -- List of table names. drrImportTablesCompleted :: Lens' DescribeResizeResponse [Text] drrImportTablesCompleted = lens _drrImportTablesCompleted (\s a -> s { _drrImportTablesCompleted = a }) . _List -- | The names of tables that are being currently imported. Valid Values: List -- of table names. drrImportTablesInProgress :: Lens' DescribeResizeResponse [Text] drrImportTablesInProgress = lens _drrImportTablesInProgress (\s a -> s { _drrImportTablesInProgress = a }) . _List -- | The names of tables that have not been yet imported. Valid Values: List -- of table names. drrImportTablesNotStarted :: Lens' DescribeResizeResponse [Text] drrImportTablesNotStarted = lens _drrImportTablesNotStarted (\s a -> s { _drrImportTablesNotStarted = a }) . _List -- | 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). drrProgressInMegaBytes :: Lens' DescribeResizeResponse (Maybe Integer) drrProgressInMegaBytes = lens _drrProgressInMegaBytes (\s a -> s { _drrProgressInMegaBytes = a }) -- | The status of the resize operation. Valid Values: NONE | IN_PROGRESS | -- FAILED | SUCCEEDED. drrStatus :: Lens' DescribeResizeResponse (Maybe Text) drrStatus = lens _drrStatus (\s a -> s { _drrStatus = a }) -- | The cluster type after the resize operation is complete. Valid Values: -- multi-node | single-node. drrTargetClusterType :: Lens' DescribeResizeResponse (Maybe Text) drrTargetClusterType = lens _drrTargetClusterType (\s a -> s { _drrTargetClusterType = a }) -- | The node type that the cluster will have after the resize operation is -- complete. drrTargetNodeType :: Lens' DescribeResizeResponse (Maybe Text) drrTargetNodeType = lens _drrTargetNodeType (\s a -> s { _drrTargetNodeType = a }) -- | The number of nodes that the cluster will have after the resize operation -- is complete. drrTargetNumberOfNodes :: Lens' DescribeResizeResponse (Maybe Int) drrTargetNumberOfNodes = lens _drrTargetNumberOfNodes (\s a -> s { _drrTargetNumberOfNodes = a }) -- | The estimated total amount of data, in megabytes, on the cluster before -- the resize operation began. drrTotalResizeDataInMegaBytes :: Lens' DescribeResizeResponse (Maybe Integer) drrTotalResizeDataInMegaBytes = lens _drrTotalResizeDataInMegaBytes (\s a -> s { _drrTotalResizeDataInMegaBytes = a }) instance ToPath DescribeResize where toPath = const "/" instance ToQuery DescribeResize where toQuery DescribeResize{..} = mconcat [ "ClusterIdentifier" =? _drClusterIdentifier ] instance ToHeaders DescribeResize instance AWSRequest DescribeResize where type Sv DescribeResize = Redshift type Rs DescribeResize = DescribeResizeResponse request = post "DescribeResize" response = xmlResponse instance FromXML DescribeResizeResponse where parseXML = withElement "DescribeResizeResult" $ \x -> DescribeResizeResponse <$> x .@? "AvgResizeRateInMegaBytesPerSecond" <*> x .@? "ElapsedTimeInSeconds" <*> x .@? "EstimatedTimeToCompletionInSeconds" <*> x .@ "ImportTablesCompleted" <*> x .@ "ImportTablesInProgress" <*> x .@ "ImportTablesNotStarted" <*> x .@? "ProgressInMegaBytes" <*> x .@? "Status" <*> x .@? "TargetClusterType" <*> x .@? "TargetNodeType" <*> x .@? "TargetNumberOfNodes" <*> x .@? "TotalResizeDataInMegaBytes"