amazonka-batch-1.6.0: gen/Network/AWS/Batch/RegisterJobDefinition.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.Batch.RegisterJobDefinition
-- 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)
--
-- Registers an AWS Batch job definition.
--
--
module Network.AWS.Batch.RegisterJobDefinition
(
-- * Creating a Request
registerJobDefinition
, RegisterJobDefinition
-- * Request Lenses
, rjdRetryStrategy
, rjdParameters
, rjdTimeout
, rjdContainerProperties
, rjdJobDefinitionName
, rjdType
-- * Destructuring the Response
, registerJobDefinitionResponse
, RegisterJobDefinitionResponse
-- * Response Lenses
, rjdrsResponseStatus
, rjdrsJobDefinitionName
, rjdrsJobDefinitionARN
, rjdrsRevision
) where
import Network.AWS.Batch.Types
import Network.AWS.Batch.Types.Product
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
-- | /See:/ 'registerJobDefinition' smart constructor.
data RegisterJobDefinition = RegisterJobDefinition'
{ _rjdRetryStrategy :: !(Maybe RetryStrategy)
, _rjdParameters :: !(Maybe (Map Text Text))
, _rjdTimeout :: !(Maybe JobTimeout)
, _rjdContainerProperties :: !(Maybe ContainerProperties)
, _rjdJobDefinitionName :: !Text
, _rjdType :: !JobDefinitionType
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'RegisterJobDefinition' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'rjdRetryStrategy' - The retry strategy to use for failed jobs that are submitted with this job definition. Any retry strategy that is specified during a 'SubmitJob' operation overrides the retry strategy defined here. If a job is terminated due to a timeout, it is not retried.
--
-- * 'rjdParameters' - Default parameter substitution placeholders to set in the job definition. Parameters are specified as a key-value pair mapping. Parameters in a @SubmitJob@ request override any corresponding parameter defaults from the job definition.
--
-- * 'rjdTimeout' - The timeout configuration for jobs that are submitted with this job definition, after which AWS Batch terminates your jobs if they have not finished. If a job is terminated due to a timeout, it is not retried. The minimum value for the timeout is 60 seconds. Any timeout configuration that is specified during a 'SubmitJob' operation overrides the timeout configuration defined here. For more information, see <http://docs.aws.amazon.com/AmazonECS/latest/developerguide/job_timeouts.html Job Timeouts> in the /Amazon Elastic Container Service Developer Guide/ .
--
-- * 'rjdContainerProperties' - An object with various properties specific for container-based jobs. This parameter is required if the @type@ parameter is @container@ .
--
-- * 'rjdJobDefinitionName' - The name of the job definition to register. Up to 128 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed.
--
-- * 'rjdType' - The type of job definition.
registerJobDefinition
:: Text -- ^ 'rjdJobDefinitionName'
-> JobDefinitionType -- ^ 'rjdType'
-> RegisterJobDefinition
registerJobDefinition pJobDefinitionName_ pType_ =
RegisterJobDefinition'
{ _rjdRetryStrategy = Nothing
, _rjdParameters = Nothing
, _rjdTimeout = Nothing
, _rjdContainerProperties = Nothing
, _rjdJobDefinitionName = pJobDefinitionName_
, _rjdType = pType_
}
-- | The retry strategy to use for failed jobs that are submitted with this job definition. Any retry strategy that is specified during a 'SubmitJob' operation overrides the retry strategy defined here. If a job is terminated due to a timeout, it is not retried.
rjdRetryStrategy :: Lens' RegisterJobDefinition (Maybe RetryStrategy)
rjdRetryStrategy = lens _rjdRetryStrategy (\ s a -> s{_rjdRetryStrategy = a})
-- | Default parameter substitution placeholders to set in the job definition. Parameters are specified as a key-value pair mapping. Parameters in a @SubmitJob@ request override any corresponding parameter defaults from the job definition.
rjdParameters :: Lens' RegisterJobDefinition (HashMap Text Text)
rjdParameters = lens _rjdParameters (\ s a -> s{_rjdParameters = a}) . _Default . _Map
-- | The timeout configuration for jobs that are submitted with this job definition, after which AWS Batch terminates your jobs if they have not finished. If a job is terminated due to a timeout, it is not retried. The minimum value for the timeout is 60 seconds. Any timeout configuration that is specified during a 'SubmitJob' operation overrides the timeout configuration defined here. For more information, see <http://docs.aws.amazon.com/AmazonECS/latest/developerguide/job_timeouts.html Job Timeouts> in the /Amazon Elastic Container Service Developer Guide/ .
rjdTimeout :: Lens' RegisterJobDefinition (Maybe JobTimeout)
rjdTimeout = lens _rjdTimeout (\ s a -> s{_rjdTimeout = a})
-- | An object with various properties specific for container-based jobs. This parameter is required if the @type@ parameter is @container@ .
rjdContainerProperties :: Lens' RegisterJobDefinition (Maybe ContainerProperties)
rjdContainerProperties = lens _rjdContainerProperties (\ s a -> s{_rjdContainerProperties = a})
-- | The name of the job definition to register. Up to 128 letters (uppercase and lowercase), numbers, hyphens, and underscores are allowed.
rjdJobDefinitionName :: Lens' RegisterJobDefinition Text
rjdJobDefinitionName = lens _rjdJobDefinitionName (\ s a -> s{_rjdJobDefinitionName = a})
-- | The type of job definition.
rjdType :: Lens' RegisterJobDefinition JobDefinitionType
rjdType = lens _rjdType (\ s a -> s{_rjdType = a})
instance AWSRequest RegisterJobDefinition where
type Rs RegisterJobDefinition =
RegisterJobDefinitionResponse
request = postJSON batch
response
= receiveJSON
(\ s h x ->
RegisterJobDefinitionResponse' <$>
(pure (fromEnum s)) <*> (x .:> "jobDefinitionName")
<*> (x .:> "jobDefinitionArn")
<*> (x .:> "revision"))
instance Hashable RegisterJobDefinition where
instance NFData RegisterJobDefinition where
instance ToHeaders RegisterJobDefinition where
toHeaders
= const
(mconcat
["Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON RegisterJobDefinition where
toJSON RegisterJobDefinition'{..}
= object
(catMaybes
[("retryStrategy" .=) <$> _rjdRetryStrategy,
("parameters" .=) <$> _rjdParameters,
("timeout" .=) <$> _rjdTimeout,
("containerProperties" .=) <$>
_rjdContainerProperties,
Just ("jobDefinitionName" .= _rjdJobDefinitionName),
Just ("type" .= _rjdType)])
instance ToPath RegisterJobDefinition where
toPath = const "/v1/registerjobdefinition"
instance ToQuery RegisterJobDefinition where
toQuery = const mempty
-- | /See:/ 'registerJobDefinitionResponse' smart constructor.
data RegisterJobDefinitionResponse = RegisterJobDefinitionResponse'
{ _rjdrsResponseStatus :: !Int
, _rjdrsJobDefinitionName :: !Text
, _rjdrsJobDefinitionARN :: !Text
, _rjdrsRevision :: !Int
} deriving (Eq, Read, Show, Data, Typeable, Generic)
-- | Creates a value of 'RegisterJobDefinitionResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'rjdrsResponseStatus' - -- | The response status code.
--
-- * 'rjdrsJobDefinitionName' - The name of the job definition.
--
-- * 'rjdrsJobDefinitionARN' - The Amazon Resource Name (ARN) of the job definition.
--
-- * 'rjdrsRevision' - The revision of the job definition.
registerJobDefinitionResponse
:: Int -- ^ 'rjdrsResponseStatus'
-> Text -- ^ 'rjdrsJobDefinitionName'
-> Text -- ^ 'rjdrsJobDefinitionARN'
-> Int -- ^ 'rjdrsRevision'
-> RegisterJobDefinitionResponse
registerJobDefinitionResponse pResponseStatus_ pJobDefinitionName_ pJobDefinitionARN_ pRevision_ =
RegisterJobDefinitionResponse'
{ _rjdrsResponseStatus = pResponseStatus_
, _rjdrsJobDefinitionName = pJobDefinitionName_
, _rjdrsJobDefinitionARN = pJobDefinitionARN_
, _rjdrsRevision = pRevision_
}
-- | -- | The response status code.
rjdrsResponseStatus :: Lens' RegisterJobDefinitionResponse Int
rjdrsResponseStatus = lens _rjdrsResponseStatus (\ s a -> s{_rjdrsResponseStatus = a})
-- | The name of the job definition.
rjdrsJobDefinitionName :: Lens' RegisterJobDefinitionResponse Text
rjdrsJobDefinitionName = lens _rjdrsJobDefinitionName (\ s a -> s{_rjdrsJobDefinitionName = a})
-- | The Amazon Resource Name (ARN) of the job definition.
rjdrsJobDefinitionARN :: Lens' RegisterJobDefinitionResponse Text
rjdrsJobDefinitionARN = lens _rjdrsJobDefinitionARN (\ s a -> s{_rjdrsJobDefinitionARN = a})
-- | The revision of the job definition.
rjdrsRevision :: Lens' RegisterJobDefinitionResponse Int
rjdrsRevision = lens _rjdrsRevision (\ s a -> s{_rjdrsRevision = a})
instance NFData RegisterJobDefinitionResponse where