{-# 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.ListTrafficPolicyInstancesByPolicy -- Copyright : (c) 2013-2016 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) -- -- Gets information about the traffic policy instances that you created by using a specify traffic policy version. -- -- After you submit a 'CreateTrafficPolicyInstance' or an 'UpdateTrafficPolicyInstance' request, there\'s a brief delay while Amazon Route 53 creates the resource record sets that are specified in the traffic policy definition. For more information, see the 'State' response element. -- -- Send a 'GET' request to the '\/Route 53 API version\/trafficpolicyinstance' resource and include the ID and version of the traffic policy. -- -- Amazon Route 53 returns a maximum of 100 items in each response. If you have a lot of traffic policy instances, you can use the 'MaxItems' parameter to list them in groups of up to 100. -- -- The response includes five values that help you navigate from one group of 'MaxItems' traffic policy instances to the next: -- -- - __IsTruncated__ -- -- If the value of 'IsTruncated' in the response is 'true', there are more traffic policy instances associated with the specified traffic policy. -- -- If 'IsTruncated' is 'false', this response includes the last traffic policy instance that is associated with the specified traffic policy. -- -- - __MaxItems__ -- -- The value that you specified for the 'MaxItems' parameter in the request that produced the current response. -- -- - __HostedZoneIdMarker__, __TrafficPolicyInstanceNameMarker__, and __TrafficPolicyInstanceTypeMarker__ -- -- If 'IsTruncated' is 'true', these values in the response represent the first traffic policy instance in the next group of 'MaxItems' traffic policy instances. To list more traffic policy instances, make another call to 'ListTrafficPolicyInstancesByPolicy', and specify these values in the corresponding request parameters. -- -- If 'IsTruncated' is 'false', all three elements are omitted from the response. -- module Network.AWS.Route53.ListTrafficPolicyInstancesByPolicy ( -- * Creating a Request listTrafficPolicyInstancesByPolicy , ListTrafficPolicyInstancesByPolicy -- * Request Lenses , ltpibpTrafficPolicyInstanceTypeMarker , ltpibpMaxItems , ltpibpHostedZoneIdMarker , ltpibpTrafficPolicyInstanceNameMarker , ltpibpTrafficPolicyId , ltpibpTrafficPolicyVersion -- * Destructuring the Response , listTrafficPolicyInstancesByPolicyResponse , ListTrafficPolicyInstancesByPolicyResponse -- * Response Lenses , ltpibprsTrafficPolicyInstanceTypeMarker , ltpibprsHostedZoneIdMarker , ltpibprsTrafficPolicyInstanceNameMarker , ltpibprsResponseStatus , ltpibprsTrafficPolicyInstances , ltpibprsIsTruncated , ltpibprsMaxItems ) 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 the information about the request to list your traffic policy instances. -- -- /See:/ 'listTrafficPolicyInstancesByPolicy' smart constructor. data ListTrafficPolicyInstancesByPolicy = ListTrafficPolicyInstancesByPolicy' { _ltpibpTrafficPolicyInstanceTypeMarker :: !(Maybe RecordType) , _ltpibpMaxItems :: !(Maybe Text) , _ltpibpHostedZoneIdMarker :: !(Maybe Text) , _ltpibpTrafficPolicyInstanceNameMarker :: !(Maybe Text) , _ltpibpTrafficPolicyId :: !Text , _ltpibpTrafficPolicyVersion :: !Nat } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ListTrafficPolicyInstancesByPolicy' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ltpibpTrafficPolicyInstanceTypeMarker' -- -- * 'ltpibpMaxItems' -- -- * 'ltpibpHostedZoneIdMarker' -- -- * 'ltpibpTrafficPolicyInstanceNameMarker' -- -- * 'ltpibpTrafficPolicyId' -- -- * 'ltpibpTrafficPolicyVersion' listTrafficPolicyInstancesByPolicy :: Text -- ^ 'ltpibpTrafficPolicyId' -> Natural -- ^ 'ltpibpTrafficPolicyVersion' -> ListTrafficPolicyInstancesByPolicy listTrafficPolicyInstancesByPolicy pTrafficPolicyId_ pTrafficPolicyVersion_ = ListTrafficPolicyInstancesByPolicy' { _ltpibpTrafficPolicyInstanceTypeMarker = Nothing , _ltpibpMaxItems = Nothing , _ltpibpHostedZoneIdMarker = Nothing , _ltpibpTrafficPolicyInstanceNameMarker = Nothing , _ltpibpTrafficPolicyId = pTrafficPolicyId_ , _ltpibpTrafficPolicyVersion = _Nat # pTrafficPolicyVersion_ } -- | For the first request to 'ListTrafficPolicyInstancesByPolicy', omit this value. -- -- If the value of 'IsTruncated' in the previous response was 'true', 'TrafficPolicyInstanceTypeMarker' is the DNS type of the first traffic policy instance in the next group of 'MaxItems' traffic policy instances. -- -- If the value of 'IsTruncated' in the previous response was 'false', there are no more traffic policy instances to get for this hosted zone. ltpibpTrafficPolicyInstanceTypeMarker :: Lens' ListTrafficPolicyInstancesByPolicy (Maybe RecordType) ltpibpTrafficPolicyInstanceTypeMarker = lens _ltpibpTrafficPolicyInstanceTypeMarker (\ s a -> s{_ltpibpTrafficPolicyInstanceTypeMarker = a}); -- | The maximum number of traffic policy instances to be included in the response body for this request. If you have more than 'MaxItems' traffic policy instances, the value of the 'IsTruncated' element in the response is 'true', and the values of 'HostedZoneIdMarker', 'TrafficPolicyInstanceNameMarker', and 'TrafficPolicyInstanceTypeMarker' represent the first traffic policy instance in the next group of 'MaxItems' traffic policy instances. ltpibpMaxItems :: Lens' ListTrafficPolicyInstancesByPolicy (Maybe Text) ltpibpMaxItems = lens _ltpibpMaxItems (\ s a -> s{_ltpibpMaxItems = a}); -- | For the first request to 'ListTrafficPolicyInstancesByPolicy', omit this value. -- -- If the value of 'IsTruncated' in the previous response was 'true', 'HostedZoneIdMarker' is the ID of the hosted zone for the first traffic policy instance in the next group of 'MaxItems' traffic policy instances. -- -- If the value of 'IsTruncated' in the previous response was 'false', there are no more traffic policy instances to get for this hosted zone. -- -- If the value of 'IsTruncated' in the previous response was 'false', omit this value. ltpibpHostedZoneIdMarker :: Lens' ListTrafficPolicyInstancesByPolicy (Maybe Text) ltpibpHostedZoneIdMarker = lens _ltpibpHostedZoneIdMarker (\ s a -> s{_ltpibpHostedZoneIdMarker = a}); -- | For the first request to 'ListTrafficPolicyInstancesByPolicy', omit this value. -- -- If the value of 'IsTruncated' in the previous response was 'true', 'TrafficPolicyInstanceNameMarker' is the name of the first traffic policy instance in the next group of 'MaxItems' traffic policy instances. -- -- If the value of 'IsTruncated' in the previous response was 'false', there are no more traffic policy instances to get for this hosted zone. -- -- If the value of 'IsTruncated' in the previous response was 'false', omit this value. ltpibpTrafficPolicyInstanceNameMarker :: Lens' ListTrafficPolicyInstancesByPolicy (Maybe Text) ltpibpTrafficPolicyInstanceNameMarker = lens _ltpibpTrafficPolicyInstanceNameMarker (\ s a -> s{_ltpibpTrafficPolicyInstanceNameMarker = a}); -- | The ID of the traffic policy for which you want to list traffic policy instances. ltpibpTrafficPolicyId :: Lens' ListTrafficPolicyInstancesByPolicy Text ltpibpTrafficPolicyId = lens _ltpibpTrafficPolicyId (\ s a -> s{_ltpibpTrafficPolicyId = a}); -- | The version of the traffic policy for which you want to list traffic policy instances. The version must be associated with the traffic policy that is specified by 'TrafficPolicyId'. ltpibpTrafficPolicyVersion :: Lens' ListTrafficPolicyInstancesByPolicy Natural ltpibpTrafficPolicyVersion = lens _ltpibpTrafficPolicyVersion (\ s a -> s{_ltpibpTrafficPolicyVersion = a}) . _Nat; instance AWSRequest ListTrafficPolicyInstancesByPolicy where type Rs ListTrafficPolicyInstancesByPolicy = ListTrafficPolicyInstancesByPolicyResponse request = get route53 response = receiveXML (\ s h x -> ListTrafficPolicyInstancesByPolicyResponse' <$> (x .@? "TrafficPolicyInstanceTypeMarker") <*> (x .@? "HostedZoneIdMarker") <*> (x .@? "TrafficPolicyInstanceNameMarker") <*> (pure (fromEnum s)) <*> (x .@? "TrafficPolicyInstances" .!@ mempty >>= parseXMLList "TrafficPolicyInstance") <*> (x .@ "IsTruncated") <*> (x .@ "MaxItems")) instance Hashable ListTrafficPolicyInstancesByPolicy instance NFData ListTrafficPolicyInstancesByPolicy instance ToHeaders ListTrafficPolicyInstancesByPolicy where toHeaders = const mempty instance ToPath ListTrafficPolicyInstancesByPolicy where toPath = const "/2013-04-01/trafficpolicyinstances/trafficpolicy" instance ToQuery ListTrafficPolicyInstancesByPolicy where toQuery ListTrafficPolicyInstancesByPolicy'{..} = mconcat ["trafficpolicyinstancetype" =: _ltpibpTrafficPolicyInstanceTypeMarker, "maxitems" =: _ltpibpMaxItems, "hostedzoneid" =: _ltpibpHostedZoneIdMarker, "trafficpolicyinstancename" =: _ltpibpTrafficPolicyInstanceNameMarker, "id" =: _ltpibpTrafficPolicyId, "version" =: _ltpibpTrafficPolicyVersion] -- | A complex type that contains the response information for the request. -- -- /See:/ 'listTrafficPolicyInstancesByPolicyResponse' smart constructor. data ListTrafficPolicyInstancesByPolicyResponse = ListTrafficPolicyInstancesByPolicyResponse' { _ltpibprsTrafficPolicyInstanceTypeMarker :: !(Maybe RecordType) , _ltpibprsHostedZoneIdMarker :: !(Maybe Text) , _ltpibprsTrafficPolicyInstanceNameMarker :: !(Maybe Text) , _ltpibprsResponseStatus :: !Int , _ltpibprsTrafficPolicyInstances :: ![TrafficPolicyInstance] , _ltpibprsIsTruncated :: !Bool , _ltpibprsMaxItems :: !Text } deriving (Eq,Read,Show,Data,Typeable,Generic) -- | Creates a value of 'ListTrafficPolicyInstancesByPolicyResponse' with the minimum fields required to make a request. -- -- Use one of the following lenses to modify other fields as desired: -- -- * 'ltpibprsTrafficPolicyInstanceTypeMarker' -- -- * 'ltpibprsHostedZoneIdMarker' -- -- * 'ltpibprsTrafficPolicyInstanceNameMarker' -- -- * 'ltpibprsResponseStatus' -- -- * 'ltpibprsTrafficPolicyInstances' -- -- * 'ltpibprsIsTruncated' -- -- * 'ltpibprsMaxItems' listTrafficPolicyInstancesByPolicyResponse :: Int -- ^ 'ltpibprsResponseStatus' -> Bool -- ^ 'ltpibprsIsTruncated' -> Text -- ^ 'ltpibprsMaxItems' -> ListTrafficPolicyInstancesByPolicyResponse listTrafficPolicyInstancesByPolicyResponse pResponseStatus_ pIsTruncated_ pMaxItems_ = ListTrafficPolicyInstancesByPolicyResponse' { _ltpibprsTrafficPolicyInstanceTypeMarker = Nothing , _ltpibprsHostedZoneIdMarker = Nothing , _ltpibprsTrafficPolicyInstanceNameMarker = Nothing , _ltpibprsResponseStatus = pResponseStatus_ , _ltpibprsTrafficPolicyInstances = mempty , _ltpibprsIsTruncated = pIsTruncated_ , _ltpibprsMaxItems = pMaxItems_ } -- | If 'IsTruncated' is 'true', 'TrafficPolicyInstanceTypeMarker' is the DNS type of the resource record sets that are associated with the first traffic policy instance in the next group of 'MaxItems' traffic policy instances. ltpibprsTrafficPolicyInstanceTypeMarker :: Lens' ListTrafficPolicyInstancesByPolicyResponse (Maybe RecordType) ltpibprsTrafficPolicyInstanceTypeMarker = lens _ltpibprsTrafficPolicyInstanceTypeMarker (\ s a -> s{_ltpibprsTrafficPolicyInstanceTypeMarker = a}); -- | If 'IsTruncated' is 'true', 'HostedZoneIdMarker' is the ID of the hosted zone of the first traffic policy instance in the next group of 'MaxItems' traffic policy instances. ltpibprsHostedZoneIdMarker :: Lens' ListTrafficPolicyInstancesByPolicyResponse (Maybe Text) ltpibprsHostedZoneIdMarker = lens _ltpibprsHostedZoneIdMarker (\ s a -> s{_ltpibprsHostedZoneIdMarker = a}); -- | If 'IsTruncated' is 'true', 'TrafficPolicyInstanceNameMarker' is the name of the first traffic policy instance in the next group of 'MaxItems' traffic policy instances. ltpibprsTrafficPolicyInstanceNameMarker :: Lens' ListTrafficPolicyInstancesByPolicyResponse (Maybe Text) ltpibprsTrafficPolicyInstanceNameMarker = lens _ltpibprsTrafficPolicyInstanceNameMarker (\ s a -> s{_ltpibprsTrafficPolicyInstanceNameMarker = a}); -- | The response status code. ltpibprsResponseStatus :: Lens' ListTrafficPolicyInstancesByPolicyResponse Int ltpibprsResponseStatus = lens _ltpibprsResponseStatus (\ s a -> s{_ltpibprsResponseStatus = a}); -- | A list that contains one 'TrafficPolicyInstance' element for each traffic policy instance that matches the elements in the request. ltpibprsTrafficPolicyInstances :: Lens' ListTrafficPolicyInstancesByPolicyResponse [TrafficPolicyInstance] ltpibprsTrafficPolicyInstances = lens _ltpibprsTrafficPolicyInstances (\ s a -> s{_ltpibprsTrafficPolicyInstances = a}) . _Coerce; -- | A flag that indicates whether there are more traffic policy instances to be listed. If the response was truncated, you can get the next group of 'MaxItems' traffic policy instances by calling 'ListTrafficPolicyInstancesByPolicy' again and specifying the values of the 'HostedZoneIdMarker', 'TrafficPolicyInstanceNameMarker', and 'TrafficPolicyInstanceTypeMarker' elements in the corresponding request parameters. ltpibprsIsTruncated :: Lens' ListTrafficPolicyInstancesByPolicyResponse Bool ltpibprsIsTruncated = lens _ltpibprsIsTruncated (\ s a -> s{_ltpibprsIsTruncated = a}); -- | The value that you specified for the 'MaxItems' parameter in the call to 'ListTrafficPolicyInstancesByPolicy' that produced the current response. ltpibprsMaxItems :: Lens' ListTrafficPolicyInstancesByPolicyResponse Text ltpibprsMaxItems = lens _ltpibprsMaxItems (\ s a -> s{_ltpibprsMaxItems = a}); instance NFData ListTrafficPolicyInstancesByPolicyResponse