{-# 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.ELB.DisableAvailabilityZonesForLoadBalancer -- 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) -- -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | Removes the specified EC2 Availability Zones from the set of configured -- Availability Zones for the load balancer. -- -- There must be at least one Availability Zone registered with a load -- balancer at all times. Once an Availability Zone is removed, all the -- instances registered with the load balancer that are in the removed -- Availability Zone go into the /OutOfService/ state. Upon Availability Zone -- removal, the load balancer attempts to equally balance the traffic among its -- remaining usable Availability Zones. Trying to remove an Availability Zone -- that was not associated with the load balancer does nothing. -- -- For more information, see in the /Elastic Load Balancing Developer Guide/. -- -- module Network.AWS.ELB.DisableAvailabilityZonesForLoadBalancer ( -- * Request DisableAvailabilityZonesForLoadBalancer -- ** Request constructor , disableAvailabilityZonesForLoadBalancer -- ** Request lenses , dazflbAvailabilityZones , dazflbLoadBalancerName -- * Response , DisableAvailabilityZonesForLoadBalancerResponse -- ** Response constructor , disableAvailabilityZonesForLoadBalancerResponse -- ** Response lenses , dazflbrAvailabilityZones ) where import Network.AWS.Prelude import Network.AWS.Request.Query import Network.AWS.ELB.Types import qualified GHC.Exts data DisableAvailabilityZonesForLoadBalancer = DisableAvailabilityZonesForLoadBalancer { _dazflbAvailabilityZones :: List "member" Text , _dazflbLoadBalancerName :: Text } deriving (Eq, Ord, Show) -- | 'DisableAvailabilityZonesForLoadBalancer' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dazflbAvailabilityZones' @::@ ['Text'] -- -- * 'dazflbLoadBalancerName' @::@ 'Text' -- disableAvailabilityZonesForLoadBalancer :: Text -- ^ 'dazflbLoadBalancerName' -> DisableAvailabilityZonesForLoadBalancer disableAvailabilityZonesForLoadBalancer p1 = DisableAvailabilityZonesForLoadBalancer { _dazflbLoadBalancerName = p1 , _dazflbAvailabilityZones = mempty } -- | A list of Availability Zones to be removed from the load balancer. -- -- There must be at least one Availability Zone registered with a load -- balancer at all times. Specified Availability Zones must be in the same -- region. dazflbAvailabilityZones :: Lens' DisableAvailabilityZonesForLoadBalancer [Text] dazflbAvailabilityZones = lens _dazflbAvailabilityZones (\s a -> s { _dazflbAvailabilityZones = a }) . _List -- | The name associated with the load balancer. dazflbLoadBalancerName :: Lens' DisableAvailabilityZonesForLoadBalancer Text dazflbLoadBalancerName = lens _dazflbLoadBalancerName (\s a -> s { _dazflbLoadBalancerName = a }) newtype DisableAvailabilityZonesForLoadBalancerResponse = DisableAvailabilityZonesForLoadBalancerResponse { _dazflbrAvailabilityZones :: List "member" Text } deriving (Eq, Ord, Show, Monoid, Semigroup) instance GHC.Exts.IsList DisableAvailabilityZonesForLoadBalancerResponse where type Item DisableAvailabilityZonesForLoadBalancerResponse = Text fromList = DisableAvailabilityZonesForLoadBalancerResponse . GHC.Exts.fromList toList = GHC.Exts.toList . _dazflbrAvailabilityZones -- | 'DisableAvailabilityZonesForLoadBalancerResponse' constructor. -- -- The fields accessible through corresponding lenses are: -- -- * 'dazflbrAvailabilityZones' @::@ ['Text'] -- disableAvailabilityZonesForLoadBalancerResponse :: DisableAvailabilityZonesForLoadBalancerResponse disableAvailabilityZonesForLoadBalancerResponse = DisableAvailabilityZonesForLoadBalancerResponse { _dazflbrAvailabilityZones = mempty } -- | A list of updated Availability Zones for the load balancer. dazflbrAvailabilityZones :: Lens' DisableAvailabilityZonesForLoadBalancerResponse [Text] dazflbrAvailabilityZones = lens _dazflbrAvailabilityZones (\s a -> s { _dazflbrAvailabilityZones = a }) . _List instance ToPath DisableAvailabilityZonesForLoadBalancer where toPath = const "/" instance ToQuery DisableAvailabilityZonesForLoadBalancer where toQuery DisableAvailabilityZonesForLoadBalancer{..} = mconcat [ "AvailabilityZones" =? _dazflbAvailabilityZones , "LoadBalancerName" =? _dazflbLoadBalancerName ] instance ToHeaders DisableAvailabilityZonesForLoadBalancer instance AWSRequest DisableAvailabilityZonesForLoadBalancer where type Sv DisableAvailabilityZonesForLoadBalancer = ELB type Rs DisableAvailabilityZonesForLoadBalancer = DisableAvailabilityZonesForLoadBalancerResponse request = post "DisableAvailabilityZonesForLoadBalancer" response = xmlResponse instance FromXML DisableAvailabilityZonesForLoadBalancerResponse where parseXML = withElement "DisableAvailabilityZonesForLoadBalancerResult" $ \x -> DisableAvailabilityZonesForLoadBalancerResponse <$> x .@? "AvailabilityZones" .!@ mempty