amazonka-snowball-1.4.4: gen/Network/AWS/Snowball/UpdateJob.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.Snowball.UpdateJob
-- Copyright : (c) 2013-2016 Brendan Hay
-- License : Mozilla Public License, v. 2.0.
-- Maintainer : Brendan Hay <brendan.g.hay@gmail.com>
-- Stability : auto-generated
-- Portability : non-portable (GHC extensions)
--
-- While a job\'s 'JobState' value is 'New', you can update some of the information associated with a job. Once the job changes to a different job state, usually within 60 minutes of the job being created, this action is no longer available.
module Network.AWS.Snowball.UpdateJob
(
-- * Creating a Request
updateJob
, UpdateJob
-- * Request Lenses
, ujNotification
, ujAddressId
, ujShippingOption
, ujResources
, ujDescription
, ujRoleARN
, ujSnowballCapacityPreference
, ujJobId
-- * Destructuring the Response
, updateJobResponse
, UpdateJobResponse
-- * Response Lenses
, ujrsResponseStatus
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.Snowball.Types
import Network.AWS.Snowball.Types.Product
-- | /See:/ 'updateJob' smart constructor.
data UpdateJob = UpdateJob'
{ _ujNotification :: !(Maybe Notification)
, _ujAddressId :: !(Maybe Text)
, _ujShippingOption :: !(Maybe ShippingOption)
, _ujResources :: !(Maybe JobResource)
, _ujDescription :: !(Maybe Text)
, _ujRoleARN :: !(Maybe Text)
, _ujSnowballCapacityPreference :: !(Maybe SnowballCapacity)
, _ujJobId :: !Text
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'UpdateJob' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ujNotification'
--
-- * 'ujAddressId'
--
-- * 'ujShippingOption'
--
-- * 'ujResources'
--
-- * 'ujDescription'
--
-- * 'ujRoleARN'
--
-- * 'ujSnowballCapacityPreference'
--
-- * 'ujJobId'
updateJob
:: Text -- ^ 'ujJobId'
-> UpdateJob
updateJob pJobId_ =
UpdateJob'
{ _ujNotification = Nothing
, _ujAddressId = Nothing
, _ujShippingOption = Nothing
, _ujResources = Nothing
, _ujDescription = Nothing
, _ujRoleARN = Nothing
, _ujSnowballCapacityPreference = Nothing
, _ujJobId = pJobId_
}
-- | The new or updated < Notification> object.
ujNotification :: Lens' UpdateJob (Maybe Notification)
ujNotification = lens _ujNotification (\ s a -> s{_ujNotification = a});
-- | The ID of the updated < Address> object.
ujAddressId :: Lens' UpdateJob (Maybe Text)
ujAddressId = lens _ujAddressId (\ s a -> s{_ujAddressId = a});
-- | The updated shipping option value of this job\'s < ShippingDetails> object.
ujShippingOption :: Lens' UpdateJob (Maybe ShippingOption)
ujShippingOption = lens _ujShippingOption (\ s a -> s{_ujShippingOption = a});
-- | The updated < S3Resource> object (for a single Amazon S3 bucket or key range), or the updated < JobResource> object (for multiple buckets or key ranges).
ujResources :: Lens' UpdateJob (Maybe JobResource)
ujResources = lens _ujResources (\ s a -> s{_ujResources = a});
-- | The updated description of this job\'s < JobMetadata> object.
ujDescription :: Lens' UpdateJob (Maybe Text)
ujDescription = lens _ujDescription (\ s a -> s{_ujDescription = a});
-- | The new role Amazon Resource Name (ARN) that you want to associate with this job. To create a role ARN, use the <http://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateRole.html CreateRole> AWS Identity and Access Management (IAM) API action.
ujRoleARN :: Lens' UpdateJob (Maybe Text)
ujRoleARN = lens _ujRoleARN (\ s a -> s{_ujRoleARN = a});
-- | The updated 'SnowballCapacityPreference' of this job\'s < JobMetadata> object. Note that the 50 TB Snowballs are only available in the US regions.
ujSnowballCapacityPreference :: Lens' UpdateJob (Maybe SnowballCapacity)
ujSnowballCapacityPreference = lens _ujSnowballCapacityPreference (\ s a -> s{_ujSnowballCapacityPreference = a});
-- | The job ID of the job that you want to update, for example 'JID123e4567-e89b-12d3-a456-426655440000'.
ujJobId :: Lens' UpdateJob Text
ujJobId = lens _ujJobId (\ s a -> s{_ujJobId = a});
instance AWSRequest UpdateJob where
type Rs UpdateJob = UpdateJobResponse
request = postJSON snowball
response
= receiveEmpty
(\ s h x ->
UpdateJobResponse' <$> (pure (fromEnum s)))
instance Hashable UpdateJob
instance NFData UpdateJob
instance ToHeaders UpdateJob where
toHeaders
= const
(mconcat
["X-Amz-Target" =#
("AWSIESnowballJobManagementService.UpdateJob" ::
ByteString),
"Content-Type" =#
("application/x-amz-json-1.1" :: ByteString)])
instance ToJSON UpdateJob where
toJSON UpdateJob'{..}
= object
(catMaybes
[("Notification" .=) <$> _ujNotification,
("AddressId" .=) <$> _ujAddressId,
("ShippingOption" .=) <$> _ujShippingOption,
("Resources" .=) <$> _ujResources,
("Description" .=) <$> _ujDescription,
("RoleARN" .=) <$> _ujRoleARN,
("SnowballCapacityPreference" .=) <$>
_ujSnowballCapacityPreference,
Just ("JobId" .= _ujJobId)])
instance ToPath UpdateJob where
toPath = const "/"
instance ToQuery UpdateJob where
toQuery = const mempty
-- | /See:/ 'updateJobResponse' smart constructor.
newtype UpdateJobResponse = UpdateJobResponse'
{ _ujrsResponseStatus :: Int
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'UpdateJobResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'ujrsResponseStatus'
updateJobResponse
:: Int -- ^ 'ujrsResponseStatus'
-> UpdateJobResponse
updateJobResponse pResponseStatus_ =
UpdateJobResponse'
{ _ujrsResponseStatus = pResponseStatus_
}
-- | The response status code.
ujrsResponseStatus :: Lens' UpdateJobResponse Int
ujrsResponseStatus = lens _ujrsResponseStatus (\ s a -> s{_ujrsResponseStatus = a});
instance NFData UpdateJobResponse