amazonka-opsworks-cm-1.6.0: gen/Network/AWS/OpsWorksCM/CreateBackup.hs
{-# 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.OpsWorksCM.CreateBackup
-- Copyright : (c) 2013-2018 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- Creates an application-level backup of a server. While the server is in the @BACKING_UP@ state, the server cannot be changed, and no additional backup can be created.
--
--
-- Backups can be created for servers in @RUNNING@ , @HEALTHY@ , and @UNHEALTHY@ states. By default, you can create a maximum of 50 manual backups.
--
-- This operation is asynchronous.
--
-- A @LimitExceededException@ is thrown when the maximum number of manual backups is reached. An @InvalidStateException@ is thrown when the server is not in any of the following states: RUNNING, HEALTHY, or UNHEALTHY. A @ResourceNotFoundException@ is thrown when the server is not found. A @ValidationException@ is thrown when parameters of the request are not valid.
--
module Network.AWS.OpsWorksCM.CreateBackup
(
-- * Creating a Request
createBackup
, CreateBackup
-- * Request Lenses
, cbDescription
, cbServerName
-- * Destructuring the Response
, createBackupResponse
, CreateBackupResponse
-- * Response Lenses
, cbrsBackup
, cbrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.OpsWorksCM.Types
import Network.AWS.OpsWorksCM.Types.Product
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'createBackup' smart constructor.
data CreateBackup = CreateBackup'
{ _cbDescription :: !(Maybe Text)
, _cbServerName :: !Text
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateBackup' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cbDescription' - A user-defined description of the backup.
--
-- * 'cbServerName' - The name of the server that you want to back up.
createBackup
:: Text -- ^ 'cbServerName'
-> CreateBackup
createBackup pServerName_ =
CreateBackup' {_cbDescription = Nothing, _cbServerName = pServerName_}
-- | A user-defined description of the backup.
cbDescription :: Lens' CreateBackup (Maybe Text)
cbDescription = lens _cbDescription (\ s a -> s{_cbDescription = a})
-- | The name of the server that you want to back up.
cbServerName :: Lens' CreateBackup Text
cbServerName = lens _cbServerName (\ s a -> s{_cbServerName = a})
instance AWSRequest CreateBackup where
type Rs CreateBackup = CreateBackupResponse
request = postJSON opsWorksCM
response
= receiveJSON
(\ s h x ->
CreateBackupResponse' <$>
(x .?> "Backup") <*> (pure (fromEnum s)))
instance Hashable CreateBackup where
instance NFData CreateBackup where
instance ToHeaders CreateBackup where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("OpsWorksCM_V2016_11_01.CreateBackup" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON CreateBackup where
toJSON CreateBackup'{..}
= object
(catMaybes
[("Description" .=) <$> _cbDescription,
Just ("ServerName" .= _cbServerName)])
instance ToPath CreateBackup where
toPath = const "/"
instance ToQuery CreateBackup where
toQuery = const mempty
-- | /See:/ 'createBackupResponse' smart constructor.
data CreateBackupResponse = CreateBackupResponse'
{ _cbrsBackup :: !(Maybe Backup)
, _cbrsResponseStatus :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'CreateBackupResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'cbrsBackup' - Backup created by request.
--
-- * 'cbrsResponseStatus' - -- | The response status code.
createBackupResponse
:: Int -- ^ 'cbrsResponseStatus'
-> CreateBackupResponse
createBackupResponse pResponseStatus_ =
CreateBackupResponse'
{_cbrsBackup = Nothing, _cbrsResponseStatus = pResponseStatus_}
-- | Backup created by request.
cbrsBackup :: Lens' CreateBackupResponse (Maybe Backup)
cbrsBackup = lens _cbrsBackup (\ s a -> s{_cbrsBackup = a})
-- | -- | The response status code.
cbrsResponseStatus :: Lens' CreateBackupResponse Int
cbrsResponseStatus = lens _cbrsResponseStatus (\ s a -> s{_cbrsResponseStatus = a})
instance NFData CreateBackupResponse where