amazonka-emr-0.0.2: gen/Network/AWS/EMR/SetTerminationProtection.hs
{-# 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.EMR.SetTerminationProtection
-- Copyright : (c) 2013-2014 Brendan Hay <brendan.g.hay@gmail.com>
-- 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 <brendan.g.hay@gmail.com>
-- Stability : experimental
-- Portability : non-portable (GHC extensions)
-- | SetTerminationProtection locks a job flow so the Amazon EC2 instances in the
-- cluster cannot be terminated by user intervention, an API call, or in the
-- event of a job-flow error. The cluster still terminates upon successful
-- completion of the job flow. Calling SetTerminationProtection on a job flow is
-- analogous to calling the Amazon EC2 DisableAPITermination API on all of the
-- EC2 instances in a cluster.
--
-- SetTerminationProtection is used to prevent accidental termination of a job
-- flow and to ensure that in the event of an error, the instances will persist
-- so you can recover any data stored in their ephemeral instance storage.
--
-- To terminate a job flow that has been locked by setting
-- SetTerminationProtection to 'true', you must first unlock the job flow by a
-- subsequent call to SetTerminationProtection in which you set the value to 'false'.
--
-- For more information, go to <http://docs.aws.amazon.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_TerminationProtection.html Protecting a Job Flow from Termination> in the /Amazon Elastic MapReduce Developer's Guide./
--
-- <http://docs.aws.amazon.com/ElasticMapReduce/latest/API/API_SetTerminationProtection.html>
module Network.AWS.EMR.SetTerminationProtection
(
-- * Request
SetTerminationProtection
-- ** Request constructor
, setTerminationProtection
-- ** Request lenses
, stpJobFlowIds
, stpTerminationProtected
-- * Response
, SetTerminationProtectionResponse
-- ** Response constructor
, setTerminationProtectionResponse
) where
import Network.AWS.Prelude
import Network.AWS.Request.JSON
import Network.AWS.EMR.Types
import qualified GHC.Exts
data SetTerminationProtection = SetTerminationProtection
{ _stpJobFlowIds :: List "Args" Text
, _stpTerminationProtected :: Bool
} deriving (Eq, Ord, Show)
-- | 'SetTerminationProtection' constructor.
--
-- The fields accessible through corresponding lenses are:
--
-- * 'stpJobFlowIds' @::@ ['Text']
--
-- * 'stpTerminationProtected' @::@ 'Bool'
--
setTerminationProtection :: Bool -- ^ 'stpTerminationProtected'
-> SetTerminationProtection
setTerminationProtection p1 = SetTerminationProtection
{ _stpTerminationProtected = p1
, _stpJobFlowIds = mempty
}
-- | A list of strings that uniquely identify the job flows to protect. This
-- identifier is returned by 'RunJobFlow' and can also be obtained from 'DescribeJobFlows' .
stpJobFlowIds :: Lens' SetTerminationProtection [Text]
stpJobFlowIds = lens _stpJobFlowIds (\s a -> s { _stpJobFlowIds = a }) . _List
-- | A Boolean that indicates whether to protect the job flow and prevent the
-- Amazon EC2 instances in the cluster from shutting down due to API calls, user
-- intervention, or job-flow error.
stpTerminationProtected :: Lens' SetTerminationProtection Bool
stpTerminationProtected =
lens _stpTerminationProtected (\s a -> s { _stpTerminationProtected = a })
data SetTerminationProtectionResponse = SetTerminationProtectionResponse
deriving (Eq, Ord, Show, Generic)
-- | 'SetTerminationProtectionResponse' constructor.
setTerminationProtectionResponse :: SetTerminationProtectionResponse
setTerminationProtectionResponse = SetTerminationProtectionResponse
instance ToPath SetTerminationProtection where
toPath = const "/"
instance ToQuery SetTerminationProtection where
toQuery = const mempty
instance ToHeaders SetTerminationProtection
instance ToJSON SetTerminationProtection where
toJSON SetTerminationProtection{..} = object
[ "JobFlowIds" .= _stpJobFlowIds
, "TerminationProtected" .= _stpTerminationProtected
]
instance AWSRequest SetTerminationProtection where
type Sv SetTerminationProtection = EMR
type Rs SetTerminationProtection = SetTerminationProtectionResponse
request = post "SetTerminationProtection"
response = nullResponse SetTerminationProtectionResponse