amazonka-route53-1.4.0: gen/Network/AWS/Route53/UpdateTrafficPolicyInstance.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.Route53.UpdateTrafficPolicyInstance
-- 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)
--
-- Updates the resource record sets in a specified hosted zone that were
-- created based on the settings in a specified traffic policy version.
--
-- The DNS type of the resource record sets that you\'re updating must
-- match the DNS type in the JSON document that is associated with the
-- traffic policy version that you\'re using to update the traffic policy
-- instance.
--
-- When you update a traffic policy instance, Amazon Route 53 continues to
-- respond to DNS queries for the root resource record set name (such as
-- example.com) while it replaces one group of resource record sets with
-- another. Amazon Route 53 performs the following operations:
--
-- 1. Amazon Route 53 creates a new group of resource record sets based on
-- the specified traffic policy. This is true regardless of how
-- substantial the differences are between the existing resource record
-- sets and the new resource record sets.
-- 2. When all of the new resource record sets have been created, Amazon
-- Route 53 starts to respond to DNS queries for the root resource
-- record set name (such as example.com) by using the new resource
-- record sets.
-- 3. Amazon Route 53 deletes the old group of resource record sets that
-- are associated with the root resource record set name.
--
-- To update a traffic policy instance, send a 'POST' request to the
-- '\/Route 53 API version\/trafficpolicyinstance\/traffic policy ID'
-- resource. The request body must include a document with an
-- 'UpdateTrafficPolicyInstanceRequest' element.
module Network.AWS.Route53.UpdateTrafficPolicyInstance
(
-- * Creating a Request
updateTrafficPolicyInstance
, UpdateTrafficPolicyInstance
-- * Request Lenses
, utpiId
, utpiTTL
, utpiTrafficPolicyId
, utpiTrafficPolicyVersion
-- * Destructuring the Response
, updateTrafficPolicyInstanceResponse
, UpdateTrafficPolicyInstanceResponse
-- * Response Lenses
, utpirsResponseStatus
, utpirsTrafficPolicyInstance
) where
import Network.AWS.Lens
import Network.AWS.Prelude
import Network.AWS.Request
import Network.AWS.Response
import Network.AWS.Route53.Types
import Network.AWS.Route53.Types.Product
-- | A complex type that contains information about the resource record sets
-- that you want to update based on a specified traffic policy instance.
--
-- /See:/ 'updateTrafficPolicyInstance' smart constructor.
data UpdateTrafficPolicyInstance = UpdateTrafficPolicyInstance'
{ _utpiId :: !Text
, _utpiTTL :: !Nat
, _utpiTrafficPolicyId :: !Text
, _utpiTrafficPolicyVersion :: !Nat
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'UpdateTrafficPolicyInstance' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'utpiId'
--
-- * 'utpiTTL'
--
-- * 'utpiTrafficPolicyId'
--
-- * 'utpiTrafficPolicyVersion'
updateTrafficPolicyInstance
:: Text -- ^ 'utpiId'
-> Natural -- ^ 'utpiTTL'
-> Text -- ^ 'utpiTrafficPolicyId'
-> Natural -- ^ 'utpiTrafficPolicyVersion'
-> UpdateTrafficPolicyInstance
updateTrafficPolicyInstance pId_ pTTL_ pTrafficPolicyId_ pTrafficPolicyVersion_ =
UpdateTrafficPolicyInstance'
{ _utpiId = pId_
, _utpiTTL = _Nat # pTTL_
, _utpiTrafficPolicyId = pTrafficPolicyId_
, _utpiTrafficPolicyVersion = _Nat # pTrafficPolicyVersion_
}
-- | The ID of the traffic policy instance that you want to update.
utpiId :: Lens' UpdateTrafficPolicyInstance Text
utpiId = lens _utpiId (\ s a -> s{_utpiId = a});
-- | The TTL that you want Amazon Route 53 to assign to all of the updated
-- resource record sets.
utpiTTL :: Lens' UpdateTrafficPolicyInstance Natural
utpiTTL = lens _utpiTTL (\ s a -> s{_utpiTTL = a}) . _Nat;
-- | The ID of the traffic policy that you want Amazon Route 53 to use to
-- update resource record sets for the specified traffic policy instance.
utpiTrafficPolicyId :: Lens' UpdateTrafficPolicyInstance Text
utpiTrafficPolicyId = lens _utpiTrafficPolicyId (\ s a -> s{_utpiTrafficPolicyId = a});
-- | The version of the traffic policy that you want Amazon Route 53 to use
-- to update resource record sets for the specified traffic policy
-- instance.
utpiTrafficPolicyVersion :: Lens' UpdateTrafficPolicyInstance Natural
utpiTrafficPolicyVersion = lens _utpiTrafficPolicyVersion (\ s a -> s{_utpiTrafficPolicyVersion = a}) . _Nat;
instance AWSRequest UpdateTrafficPolicyInstance where
type Rs UpdateTrafficPolicyInstance =
UpdateTrafficPolicyInstanceResponse
request = postXML route53
response
= receiveXML
(\ s h x ->
UpdateTrafficPolicyInstanceResponse' <$>
(pure (fromEnum s)) <*>
(x .@ "TrafficPolicyInstance"))
instance Hashable UpdateTrafficPolicyInstance
instance ToElement UpdateTrafficPolicyInstance where
toElement
= mkElement
"{https://route53.amazonaws.com/doc/2013-04-01/}UpdateTrafficPolicyInstanceRequest"
instance ToHeaders UpdateTrafficPolicyInstance where
toHeaders = const mempty
instance ToPath UpdateTrafficPolicyInstance where
toPath UpdateTrafficPolicyInstance'{..}
= mconcat
["/2013-04-01/trafficpolicyinstance/", toBS _utpiId]
instance ToQuery UpdateTrafficPolicyInstance where
toQuery = const mempty
instance ToXML UpdateTrafficPolicyInstance where
toXML UpdateTrafficPolicyInstance'{..}
= mconcat
["TTL" @= _utpiTTL,
"TrafficPolicyId" @= _utpiTrafficPolicyId,
"TrafficPolicyVersion" @= _utpiTrafficPolicyVersion]
-- | A complex type that contains information about the resource record sets
-- that Amazon Route 53 created based on a specified traffic policy.
--
-- /See:/ 'updateTrafficPolicyInstanceResponse' smart constructor.
data UpdateTrafficPolicyInstanceResponse = UpdateTrafficPolicyInstanceResponse'
{ _utpirsResponseStatus :: !Int
, _utpirsTrafficPolicyInstance :: !TrafficPolicyInstance
} deriving (Eq,Read,Show,Data,Typeable,Generic)
-- | Creates a value of 'UpdateTrafficPolicyInstanceResponse' with the minimum fields required to make a request.
--
-- Use one of the following lenses to modify other fields as desired:
--
-- * 'utpirsResponseStatus'
--
-- * 'utpirsTrafficPolicyInstance'
updateTrafficPolicyInstanceResponse
:: Int -- ^ 'utpirsResponseStatus'
-> TrafficPolicyInstance -- ^ 'utpirsTrafficPolicyInstance'
-> UpdateTrafficPolicyInstanceResponse
updateTrafficPolicyInstanceResponse pResponseStatus_ pTrafficPolicyInstance_ =
UpdateTrafficPolicyInstanceResponse'
{ _utpirsResponseStatus = pResponseStatus_
, _utpirsTrafficPolicyInstance = pTrafficPolicyInstance_
}
-- | The response status code.
utpirsResponseStatus :: Lens' UpdateTrafficPolicyInstanceResponse Int
utpirsResponseStatus = lens _utpirsResponseStatus (\ s a -> s{_utpirsResponseStatus = a});
-- | A complex type that contains settings for the updated traffic policy
-- instance.
utpirsTrafficPolicyInstance :: Lens' UpdateTrafficPolicyInstanceResponse TrafficPolicyInstance
utpirsTrafficPolicyInstance = lens _utpirsTrafficPolicyInstance (\ s a -> s{_utpirsTrafficPolicyInstance = a});