{-# LANGUAGE DeriveDataTypeable #-} {-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE TypeFamilies #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-binds #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Network.AWS.StorageGateway.RetrieveTapeArchive -- Copyright : (c) 2013-2018 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Retrieves an archived virtual tape from the virtual tape shelf (VTS) to a tape gateway. Virtual tapes archived in the VTS are not associated with any gateway. However after a tape is retrieved, it is associated with a gateway, even though it is also listed in the VTS, that is, archive. This operation is only supported in the tape gateway type. -- -- -- Once a tape is successfully retrieved to a gateway, it cannot be retrieved again to another gateway. You must archive the tape again before you can retrieve it to another gateway. This operation is only supported in the tape gateway type. -- module Network.AWS.StorageGateway.RetrieveTapeArchive ( -- * Creating a Request retrieveTapeArchive , RetrieveTapeArchive -- * Request Lenses , rtaTapeARN , rtaGatewayARN -- * Destructuring the Response , retrieveTapeArchiveResponse , RetrieveTapeArchiveResponse -- * Response Lenses , rtarsTapeARN , rtarsResponseStatus ) where import Network.AWS.Lens import Network.AWS.Prelude import Network.AWS.Request import Network.AWS.Response import Network.AWS.StorageGateway.Types import Network.AWS.StorageGateway.Types.Product -- | RetrieveTapeArchiveInput -- -- -- -- /See:/ 'retrieveTapeArchive' smart constructor. data RetrieveTapeArchive = RetrieveTapeArchive' { _rtaTapeARN :: !Text , _rtaGatewayARN :: !Text } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'RetrieveTapeArchive' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rtaTapeARN' - The Amazon Resource Name (ARN) of the virtual tape you want to retrieve from the virtual tape shelf (VTS). -- -- * 'rtaGatewayARN' - The Amazon Resource Name (ARN) of the gateway you want to retrieve the virtual tape to. Use the 'ListGateways' operation to return a list of gateways for your account and region. You retrieve archived virtual tapes to only one gateway and the gateway must be a tape gateway. retrieveTapeArchive :: Text -- ^ 'rtaTapeARN' -> Text -- ^ 'rtaGatewayARN' -> RetrieveTapeArchive retrieveTapeArchive pTapeARN_ pGatewayARN_ = RetrieveTapeArchive' {_rtaTapeARN = pTapeARN_, _rtaGatewayARN = pGatewayARN_} -- | The Amazon Resource Name (ARN) of the virtual tape you want to retrieve from the virtual tape shelf (VTS). rtaTapeARN :: Lens' RetrieveTapeArchive Text rtaTapeARN = lens _rtaTapeARN (\ s a -> s{_rtaTapeARN = a}) -- | The Amazon Resource Name (ARN) of the gateway you want to retrieve the virtual tape to. Use the 'ListGateways' operation to return a list of gateways for your account and region. You retrieve archived virtual tapes to only one gateway and the gateway must be a tape gateway. rtaGatewayARN :: Lens' RetrieveTapeArchive Text rtaGatewayARN = lens _rtaGatewayARN (\ s a -> s{_rtaGatewayARN = a}) instance AWSRequest RetrieveTapeArchive where type Rs RetrieveTapeArchive = RetrieveTapeArchiveResponse request = postJSON storageGateway response = receiveJSON (\ s h x -> RetrieveTapeArchiveResponse' <$> (x .?> "TapeARN") <*> (pure (fromEnum s))) instance Hashable RetrieveTapeArchive where instance NFData RetrieveTapeArchive where instance ToHeaders RetrieveTapeArchive where toHeaders = const (mconcat ["X-Amz-Target" =# ("StorageGateway_20130630.RetrieveTapeArchive" :: ByteString), "Content-Type" =# ("application/x-amz-json-1.1" :: ByteString)]) instance ToJSON RetrieveTapeArchive where toJSON RetrieveTapeArchive'{..} = object (catMaybes [Just ("TapeARN" .= _rtaTapeARN), Just ("GatewayARN" .= _rtaGatewayARN)]) instance ToPath RetrieveTapeArchive where toPath = const "/" instance ToQuery RetrieveTapeArchive where toQuery = const mempty -- | RetrieveTapeArchiveOutput -- -- -- -- /See:/ 'retrieveTapeArchiveResponse' smart constructor. data RetrieveTapeArchiveResponse = RetrieveTapeArchiveResponse' { _rtarsTapeARN :: !(Maybe Text) , _rtarsResponseStatus :: !Int } deriving (Eq, Read, Show, Data, Typeable, Generic) -- | Creates a value of 'RetrieveTapeArchiveResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'rtarsTapeARN' - The Amazon Resource Name (ARN) of the retrieved virtual tape. -- -- * 'rtarsResponseStatus' - -- | The response status code. retrieveTapeArchiveResponse :: Int -- ^ 'rtarsResponseStatus' -> RetrieveTapeArchiveResponse retrieveTapeArchiveResponse pResponseStatus_ = RetrieveTapeArchiveResponse' {_rtarsTapeARN = Nothing, _rtarsResponseStatus = pResponseStatus_} -- | The Amazon Resource Name (ARN) of the retrieved virtual tape. rtarsTapeARN :: Lens' RetrieveTapeArchiveResponse (Maybe Text) rtarsTapeARN = lens _rtarsTapeARN (\ s a -> s{_rtarsTapeARN = a}) -- | -- | The response status code. rtarsResponseStatus :: Lens' RetrieveTapeArchiveResponse Int rtarsResponseStatus = lens _rtarsResponseStatus (\ s a -> s{_rtarsResponseStatus = a}) instance NFData RetrieveTapeArchiveResponse where