{-# 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.EC2.DescribeAvailabilityZones -- Copyright : (c) 2013-2014 Brendan Hay -- 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 -- Stability : experimental -- Portability : non-portable (GHC extensions) -- | Describes one or more of the Availability Zones that are available to you. -- The results include zones only for the region you're currently using. If -- there is an event impacting an Availability Zone, you can use this request -- to view the state and any provided message for that Availability Zone. For -- more information, see Regions and Availability Zones in the Amazon Elastic -- Compute Cloud User Guide. -- -- module Network.AWS.EC2.DescribeAvailabilityZones ( -- * Request DescribeAvailabilityZones -- ** Request constructor , describeAvailabilityZones -- ** Request lenses , dazDryRun , dazFilters , dazZoneNames -- * Response , DescribeAvailabilityZonesResponse -- ** Response constructor , describeAvailabilityZonesResponse -- ** Response lenses , dazrAvailabilityZones ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.EC2.Types import qualified GHC.Exts data DescribeAvailabilityZones = DescribeAvailabilityZones { _dazDryRun :: Maybe Bool , _dazFilters :: List "Filter" Filter , _dazZoneNames :: List "ZoneName" Text } deriving (Eq, Show) -- | 'DescribeAvailabilityZones' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dazDryRun' @::@ 'Maybe' 'Bool' -- -- * 'dazFilters' @::@ ['Filter'] -- -- * 'dazZoneNames' @::@ ['Text'] -- describeAvailabilityZones :: DescribeAvailabilityZones describeAvailabilityZones = DescribeAvailabilityZones { _dazDryRun = Nothing , _dazZoneNames = mempty , _dazFilters = mempty } dazDryRun :: Lens' DescribeAvailabilityZones (Maybe Bool) dazDryRun = lens _dazDryRun (\s a -> s { _dazDryRun = a }) -- | One or more filters. message - Information about the Availability Zone. -- region-name - The name of the region for the Availability Zone (for -- example, us-east-1). state - The state of the Availability Zone -- (available | impaired | unavailable). zone-name - The name of the -- Availability Zone (for example, us-east-1a). dazFilters :: Lens' DescribeAvailabilityZones [Filter] dazFilters = lens _dazFilters (\s a -> s { _dazFilters = a }) . _List -- | The names of one or more Availability Zones. dazZoneNames :: Lens' DescribeAvailabilityZones [Text] dazZoneNames = lens _dazZoneNames (\s a -> s { _dazZoneNames = a }) . _List newtype DescribeAvailabilityZonesResponse = DescribeAvailabilityZonesResponse { _dazrAvailabilityZones :: List "item" AvailabilityZone } deriving (Eq, Show, Monoid, Semigroup) instance GHC.Exts.IsList DescribeAvailabilityZonesResponse where type Item DescribeAvailabilityZonesResponse = AvailabilityZone fromList = DescribeAvailabilityZonesResponse . GHC.Exts.fromList toList = GHC.Exts.toList . _dazrAvailabilityZones -- | 'DescribeAvailabilityZonesResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dazrAvailabilityZones' @::@ ['AvailabilityZone'] -- describeAvailabilityZonesResponse :: DescribeAvailabilityZonesResponse describeAvailabilityZonesResponse = DescribeAvailabilityZonesResponse { _dazrAvailabilityZones = mempty } -- | Information about one or more Availability Zones. dazrAvailabilityZones :: Lens' DescribeAvailabilityZonesResponse [AvailabilityZone] dazrAvailabilityZones = lens _dazrAvailabilityZones (\s a -> s { _dazrAvailabilityZones = a }) . _List instance ToPath DescribeAvailabilityZones where toPath = const "/" instance ToQuery DescribeAvailabilityZones where toQuery DescribeAvailabilityZones{..} = mconcat [ "dryRun" =? _dazDryRun , "Filter" =? _dazFilters , "ZoneName" =? _dazZoneNames ] instance ToHeaders DescribeAvailabilityZones instance AWSRequest DescribeAvailabilityZones where type Sv DescribeAvailabilityZones = EC2 type Rs DescribeAvailabilityZones = DescribeAvailabilityZonesResponse request = post "DescribeAvailabilityZones" response = xmlResponse instance FromXML DescribeAvailabilityZonesResponse where parseXML x = DescribeAvailabilityZonesResponse <$> x .@ "availabilityZoneInfo"