{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.ElasticBeanstalk.Types.EnvironmentResourceDescription
-- Copyright   : (c) 2013-2021 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay <brendan.g.hay+amazonka@gmail.com>
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.ElasticBeanstalk.Types.EnvironmentResourceDescription where

import qualified Amazonka.Core as Core
import Amazonka.ElasticBeanstalk.Types.AutoScalingGroup
import Amazonka.ElasticBeanstalk.Types.Instance
import Amazonka.ElasticBeanstalk.Types.LaunchConfiguration
import Amazonka.ElasticBeanstalk.Types.LaunchTemplate
import Amazonka.ElasticBeanstalk.Types.LoadBalancer
import Amazonka.ElasticBeanstalk.Types.Queue
import Amazonka.ElasticBeanstalk.Types.Trigger
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Describes the AWS resources in use by this environment. This data is
-- live.
--
-- /See:/ 'newEnvironmentResourceDescription' smart constructor.
data EnvironmentResourceDescription = EnvironmentResourceDescription'
  { -- | The queues used by this environment.
    EnvironmentResourceDescription -> Maybe [Queue]
queues :: Prelude.Maybe [Queue],
    -- | The @AutoScaling@ triggers in use by this environment.
    EnvironmentResourceDescription -> Maybe [Trigger]
triggers :: Prelude.Maybe [Trigger],
    -- | The Amazon EC2 launch templates in use by this environment.
    EnvironmentResourceDescription -> Maybe [LaunchTemplate]
launchTemplates :: Prelude.Maybe [LaunchTemplate],
    -- | The LoadBalancers in use by this environment.
    EnvironmentResourceDescription -> Maybe [LoadBalancer]
loadBalancers :: Prelude.Maybe [LoadBalancer],
    -- | The name of the environment.
    EnvironmentResourceDescription -> Maybe Text
environmentName :: Prelude.Maybe Prelude.Text,
    -- | The Amazon EC2 instances used by this environment.
    EnvironmentResourceDescription -> Maybe [Instance]
instances :: Prelude.Maybe [Instance],
    -- | The Auto Scaling launch configurations in use by this environment.
    EnvironmentResourceDescription -> Maybe [LaunchConfiguration]
launchConfigurations :: Prelude.Maybe [LaunchConfiguration],
    -- | The @AutoScalingGroups@ used by this environment.
    EnvironmentResourceDescription -> Maybe [AutoScalingGroup]
autoScalingGroups :: Prelude.Maybe [AutoScalingGroup]
  }
  deriving (EnvironmentResourceDescription
-> EnvironmentResourceDescription -> Bool
(EnvironmentResourceDescription
 -> EnvironmentResourceDescription -> Bool)
-> (EnvironmentResourceDescription
    -> EnvironmentResourceDescription -> Bool)
-> Eq EnvironmentResourceDescription
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EnvironmentResourceDescription
-> EnvironmentResourceDescription -> Bool
$c/= :: EnvironmentResourceDescription
-> EnvironmentResourceDescription -> Bool
== :: EnvironmentResourceDescription
-> EnvironmentResourceDescription -> Bool
$c== :: EnvironmentResourceDescription
-> EnvironmentResourceDescription -> Bool
Prelude.Eq, ReadPrec [EnvironmentResourceDescription]
ReadPrec EnvironmentResourceDescription
Int -> ReadS EnvironmentResourceDescription
ReadS [EnvironmentResourceDescription]
(Int -> ReadS EnvironmentResourceDescription)
-> ReadS [EnvironmentResourceDescription]
-> ReadPrec EnvironmentResourceDescription
-> ReadPrec [EnvironmentResourceDescription]
-> Read EnvironmentResourceDescription
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EnvironmentResourceDescription]
$creadListPrec :: ReadPrec [EnvironmentResourceDescription]
readPrec :: ReadPrec EnvironmentResourceDescription
$creadPrec :: ReadPrec EnvironmentResourceDescription
readList :: ReadS [EnvironmentResourceDescription]
$creadList :: ReadS [EnvironmentResourceDescription]
readsPrec :: Int -> ReadS EnvironmentResourceDescription
$creadsPrec :: Int -> ReadS EnvironmentResourceDescription
Prelude.Read, Int -> EnvironmentResourceDescription -> ShowS
[EnvironmentResourceDescription] -> ShowS
EnvironmentResourceDescription -> String
(Int -> EnvironmentResourceDescription -> ShowS)
-> (EnvironmentResourceDescription -> String)
-> ([EnvironmentResourceDescription] -> ShowS)
-> Show EnvironmentResourceDescription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EnvironmentResourceDescription] -> ShowS
$cshowList :: [EnvironmentResourceDescription] -> ShowS
show :: EnvironmentResourceDescription -> String
$cshow :: EnvironmentResourceDescription -> String
showsPrec :: Int -> EnvironmentResourceDescription -> ShowS
$cshowsPrec :: Int -> EnvironmentResourceDescription -> ShowS
Prelude.Show, (forall x.
 EnvironmentResourceDescription
 -> Rep EnvironmentResourceDescription x)
-> (forall x.
    Rep EnvironmentResourceDescription x
    -> EnvironmentResourceDescription)
-> Generic EnvironmentResourceDescription
forall x.
Rep EnvironmentResourceDescription x
-> EnvironmentResourceDescription
forall x.
EnvironmentResourceDescription
-> Rep EnvironmentResourceDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x.
Rep EnvironmentResourceDescription x
-> EnvironmentResourceDescription
$cfrom :: forall x.
EnvironmentResourceDescription
-> Rep EnvironmentResourceDescription x
Prelude.Generic)

-- |
-- Create a value of 'EnvironmentResourceDescription' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'queues', 'environmentResourceDescription_queues' - The queues used by this environment.
--
-- 'triggers', 'environmentResourceDescription_triggers' - The @AutoScaling@ triggers in use by this environment.
--
-- 'launchTemplates', 'environmentResourceDescription_launchTemplates' - The Amazon EC2 launch templates in use by this environment.
--
-- 'loadBalancers', 'environmentResourceDescription_loadBalancers' - The LoadBalancers in use by this environment.
--
-- 'environmentName', 'environmentResourceDescription_environmentName' - The name of the environment.
--
-- 'instances', 'environmentResourceDescription_instances' - The Amazon EC2 instances used by this environment.
--
-- 'launchConfigurations', 'environmentResourceDescription_launchConfigurations' - The Auto Scaling launch configurations in use by this environment.
--
-- 'autoScalingGroups', 'environmentResourceDescription_autoScalingGroups' - The @AutoScalingGroups@ used by this environment.
newEnvironmentResourceDescription ::
  EnvironmentResourceDescription
newEnvironmentResourceDescription :: EnvironmentResourceDescription
newEnvironmentResourceDescription =
  EnvironmentResourceDescription' :: Maybe [Queue]
-> Maybe [Trigger]
-> Maybe [LaunchTemplate]
-> Maybe [LoadBalancer]
-> Maybe Text
-> Maybe [Instance]
-> Maybe [LaunchConfiguration]
-> Maybe [AutoScalingGroup]
-> EnvironmentResourceDescription
EnvironmentResourceDescription'
    { $sel:queues:EnvironmentResourceDescription' :: Maybe [Queue]
queues =
        Maybe [Queue]
forall a. Maybe a
Prelude.Nothing,
      $sel:triggers:EnvironmentResourceDescription' :: Maybe [Trigger]
triggers = Maybe [Trigger]
forall a. Maybe a
Prelude.Nothing,
      $sel:launchTemplates:EnvironmentResourceDescription' :: Maybe [LaunchTemplate]
launchTemplates = Maybe [LaunchTemplate]
forall a. Maybe a
Prelude.Nothing,
      $sel:loadBalancers:EnvironmentResourceDescription' :: Maybe [LoadBalancer]
loadBalancers = Maybe [LoadBalancer]
forall a. Maybe a
Prelude.Nothing,
      $sel:environmentName:EnvironmentResourceDescription' :: Maybe Text
environmentName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:instances:EnvironmentResourceDescription' :: Maybe [Instance]
instances = Maybe [Instance]
forall a. Maybe a
Prelude.Nothing,
      $sel:launchConfigurations:EnvironmentResourceDescription' :: Maybe [LaunchConfiguration]
launchConfigurations = Maybe [LaunchConfiguration]
forall a. Maybe a
Prelude.Nothing,
      $sel:autoScalingGroups:EnvironmentResourceDescription' :: Maybe [AutoScalingGroup]
autoScalingGroups = Maybe [AutoScalingGroup]
forall a. Maybe a
Prelude.Nothing
    }

-- | The queues used by this environment.
environmentResourceDescription_queues :: Lens.Lens' EnvironmentResourceDescription (Prelude.Maybe [Queue])
environmentResourceDescription_queues :: (Maybe [Queue] -> f (Maybe [Queue]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
environmentResourceDescription_queues = (EnvironmentResourceDescription -> Maybe [Queue])
-> (EnvironmentResourceDescription
    -> Maybe [Queue] -> EnvironmentResourceDescription)
-> Lens
     EnvironmentResourceDescription
     EnvironmentResourceDescription
     (Maybe [Queue])
     (Maybe [Queue])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentResourceDescription' {Maybe [Queue]
queues :: Maybe [Queue]
$sel:queues:EnvironmentResourceDescription' :: EnvironmentResourceDescription -> Maybe [Queue]
queues} -> Maybe [Queue]
queues) (\s :: EnvironmentResourceDescription
s@EnvironmentResourceDescription' {} Maybe [Queue]
a -> EnvironmentResourceDescription
s {$sel:queues:EnvironmentResourceDescription' :: Maybe [Queue]
queues = Maybe [Queue]
a} :: EnvironmentResourceDescription) ((Maybe [Queue] -> f (Maybe [Queue]))
 -> EnvironmentResourceDescription
 -> f EnvironmentResourceDescription)
-> ((Maybe [Queue] -> f (Maybe [Queue]))
    -> Maybe [Queue] -> f (Maybe [Queue]))
-> (Maybe [Queue] -> f (Maybe [Queue]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Queue] [Queue] [Queue] [Queue]
-> Iso
     (Maybe [Queue]) (Maybe [Queue]) (Maybe [Queue]) (Maybe [Queue])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Queue] [Queue] [Queue] [Queue]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The @AutoScaling@ triggers in use by this environment.
environmentResourceDescription_triggers :: Lens.Lens' EnvironmentResourceDescription (Prelude.Maybe [Trigger])
environmentResourceDescription_triggers :: (Maybe [Trigger] -> f (Maybe [Trigger]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
environmentResourceDescription_triggers = (EnvironmentResourceDescription -> Maybe [Trigger])
-> (EnvironmentResourceDescription
    -> Maybe [Trigger] -> EnvironmentResourceDescription)
-> Lens
     EnvironmentResourceDescription
     EnvironmentResourceDescription
     (Maybe [Trigger])
     (Maybe [Trigger])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentResourceDescription' {Maybe [Trigger]
triggers :: Maybe [Trigger]
$sel:triggers:EnvironmentResourceDescription' :: EnvironmentResourceDescription -> Maybe [Trigger]
triggers} -> Maybe [Trigger]
triggers) (\s :: EnvironmentResourceDescription
s@EnvironmentResourceDescription' {} Maybe [Trigger]
a -> EnvironmentResourceDescription
s {$sel:triggers:EnvironmentResourceDescription' :: Maybe [Trigger]
triggers = Maybe [Trigger]
a} :: EnvironmentResourceDescription) ((Maybe [Trigger] -> f (Maybe [Trigger]))
 -> EnvironmentResourceDescription
 -> f EnvironmentResourceDescription)
-> ((Maybe [Trigger] -> f (Maybe [Trigger]))
    -> Maybe [Trigger] -> f (Maybe [Trigger]))
-> (Maybe [Trigger] -> f (Maybe [Trigger]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Trigger] [Trigger] [Trigger] [Trigger]
-> Iso
     (Maybe [Trigger])
     (Maybe [Trigger])
     (Maybe [Trigger])
     (Maybe [Trigger])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Trigger] [Trigger] [Trigger] [Trigger]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Amazon EC2 launch templates in use by this environment.
environmentResourceDescription_launchTemplates :: Lens.Lens' EnvironmentResourceDescription (Prelude.Maybe [LaunchTemplate])
environmentResourceDescription_launchTemplates :: (Maybe [LaunchTemplate] -> f (Maybe [LaunchTemplate]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
environmentResourceDescription_launchTemplates = (EnvironmentResourceDescription -> Maybe [LaunchTemplate])
-> (EnvironmentResourceDescription
    -> Maybe [LaunchTemplate] -> EnvironmentResourceDescription)
-> Lens
     EnvironmentResourceDescription
     EnvironmentResourceDescription
     (Maybe [LaunchTemplate])
     (Maybe [LaunchTemplate])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentResourceDescription' {Maybe [LaunchTemplate]
launchTemplates :: Maybe [LaunchTemplate]
$sel:launchTemplates:EnvironmentResourceDescription' :: EnvironmentResourceDescription -> Maybe [LaunchTemplate]
launchTemplates} -> Maybe [LaunchTemplate]
launchTemplates) (\s :: EnvironmentResourceDescription
s@EnvironmentResourceDescription' {} Maybe [LaunchTemplate]
a -> EnvironmentResourceDescription
s {$sel:launchTemplates:EnvironmentResourceDescription' :: Maybe [LaunchTemplate]
launchTemplates = Maybe [LaunchTemplate]
a} :: EnvironmentResourceDescription) ((Maybe [LaunchTemplate] -> f (Maybe [LaunchTemplate]))
 -> EnvironmentResourceDescription
 -> f EnvironmentResourceDescription)
-> ((Maybe [LaunchTemplate] -> f (Maybe [LaunchTemplate]))
    -> Maybe [LaunchTemplate] -> f (Maybe [LaunchTemplate]))
-> (Maybe [LaunchTemplate] -> f (Maybe [LaunchTemplate]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [LaunchTemplate] [LaunchTemplate] [LaunchTemplate] [LaunchTemplate]
-> Iso
     (Maybe [LaunchTemplate])
     (Maybe [LaunchTemplate])
     (Maybe [LaunchTemplate])
     (Maybe [LaunchTemplate])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [LaunchTemplate] [LaunchTemplate] [LaunchTemplate] [LaunchTemplate]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The LoadBalancers in use by this environment.
environmentResourceDescription_loadBalancers :: Lens.Lens' EnvironmentResourceDescription (Prelude.Maybe [LoadBalancer])
environmentResourceDescription_loadBalancers :: (Maybe [LoadBalancer] -> f (Maybe [LoadBalancer]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
environmentResourceDescription_loadBalancers = (EnvironmentResourceDescription -> Maybe [LoadBalancer])
-> (EnvironmentResourceDescription
    -> Maybe [LoadBalancer] -> EnvironmentResourceDescription)
-> Lens
     EnvironmentResourceDescription
     EnvironmentResourceDescription
     (Maybe [LoadBalancer])
     (Maybe [LoadBalancer])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentResourceDescription' {Maybe [LoadBalancer]
loadBalancers :: Maybe [LoadBalancer]
$sel:loadBalancers:EnvironmentResourceDescription' :: EnvironmentResourceDescription -> Maybe [LoadBalancer]
loadBalancers} -> Maybe [LoadBalancer]
loadBalancers) (\s :: EnvironmentResourceDescription
s@EnvironmentResourceDescription' {} Maybe [LoadBalancer]
a -> EnvironmentResourceDescription
s {$sel:loadBalancers:EnvironmentResourceDescription' :: Maybe [LoadBalancer]
loadBalancers = Maybe [LoadBalancer]
a} :: EnvironmentResourceDescription) ((Maybe [LoadBalancer] -> f (Maybe [LoadBalancer]))
 -> EnvironmentResourceDescription
 -> f EnvironmentResourceDescription)
-> ((Maybe [LoadBalancer] -> f (Maybe [LoadBalancer]))
    -> Maybe [LoadBalancer] -> f (Maybe [LoadBalancer]))
-> (Maybe [LoadBalancer] -> f (Maybe [LoadBalancer]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [LoadBalancer] [LoadBalancer] [LoadBalancer] [LoadBalancer]
-> Iso
     (Maybe [LoadBalancer])
     (Maybe [LoadBalancer])
     (Maybe [LoadBalancer])
     (Maybe [LoadBalancer])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [LoadBalancer] [LoadBalancer] [LoadBalancer] [LoadBalancer]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The name of the environment.
environmentResourceDescription_environmentName :: Lens.Lens' EnvironmentResourceDescription (Prelude.Maybe Prelude.Text)
environmentResourceDescription_environmentName :: (Maybe Text -> f (Maybe Text))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
environmentResourceDescription_environmentName = (EnvironmentResourceDescription -> Maybe Text)
-> (EnvironmentResourceDescription
    -> Maybe Text -> EnvironmentResourceDescription)
-> Lens
     EnvironmentResourceDescription
     EnvironmentResourceDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentResourceDescription' {Maybe Text
environmentName :: Maybe Text
$sel:environmentName:EnvironmentResourceDescription' :: EnvironmentResourceDescription -> Maybe Text
environmentName} -> Maybe Text
environmentName) (\s :: EnvironmentResourceDescription
s@EnvironmentResourceDescription' {} Maybe Text
a -> EnvironmentResourceDescription
s {$sel:environmentName:EnvironmentResourceDescription' :: Maybe Text
environmentName = Maybe Text
a} :: EnvironmentResourceDescription)

-- | The Amazon EC2 instances used by this environment.
environmentResourceDescription_instances :: Lens.Lens' EnvironmentResourceDescription (Prelude.Maybe [Instance])
environmentResourceDescription_instances :: (Maybe [Instance] -> f (Maybe [Instance]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
environmentResourceDescription_instances = (EnvironmentResourceDescription -> Maybe [Instance])
-> (EnvironmentResourceDescription
    -> Maybe [Instance] -> EnvironmentResourceDescription)
-> Lens
     EnvironmentResourceDescription
     EnvironmentResourceDescription
     (Maybe [Instance])
     (Maybe [Instance])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentResourceDescription' {Maybe [Instance]
instances :: Maybe [Instance]
$sel:instances:EnvironmentResourceDescription' :: EnvironmentResourceDescription -> Maybe [Instance]
instances} -> Maybe [Instance]
instances) (\s :: EnvironmentResourceDescription
s@EnvironmentResourceDescription' {} Maybe [Instance]
a -> EnvironmentResourceDescription
s {$sel:instances:EnvironmentResourceDescription' :: Maybe [Instance]
instances = Maybe [Instance]
a} :: EnvironmentResourceDescription) ((Maybe [Instance] -> f (Maybe [Instance]))
 -> EnvironmentResourceDescription
 -> f EnvironmentResourceDescription)
-> ((Maybe [Instance] -> f (Maybe [Instance]))
    -> Maybe [Instance] -> f (Maybe [Instance]))
-> (Maybe [Instance] -> f (Maybe [Instance]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso [Instance] [Instance] [Instance] [Instance]
-> Iso
     (Maybe [Instance])
     (Maybe [Instance])
     (Maybe [Instance])
     (Maybe [Instance])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso [Instance] [Instance] [Instance] [Instance]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The Auto Scaling launch configurations in use by this environment.
environmentResourceDescription_launchConfigurations :: Lens.Lens' EnvironmentResourceDescription (Prelude.Maybe [LaunchConfiguration])
environmentResourceDescription_launchConfigurations :: (Maybe [LaunchConfiguration] -> f (Maybe [LaunchConfiguration]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
environmentResourceDescription_launchConfigurations = (EnvironmentResourceDescription -> Maybe [LaunchConfiguration])
-> (EnvironmentResourceDescription
    -> Maybe [LaunchConfiguration] -> EnvironmentResourceDescription)
-> Lens
     EnvironmentResourceDescription
     EnvironmentResourceDescription
     (Maybe [LaunchConfiguration])
     (Maybe [LaunchConfiguration])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentResourceDescription' {Maybe [LaunchConfiguration]
launchConfigurations :: Maybe [LaunchConfiguration]
$sel:launchConfigurations:EnvironmentResourceDescription' :: EnvironmentResourceDescription -> Maybe [LaunchConfiguration]
launchConfigurations} -> Maybe [LaunchConfiguration]
launchConfigurations) (\s :: EnvironmentResourceDescription
s@EnvironmentResourceDescription' {} Maybe [LaunchConfiguration]
a -> EnvironmentResourceDescription
s {$sel:launchConfigurations:EnvironmentResourceDescription' :: Maybe [LaunchConfiguration]
launchConfigurations = Maybe [LaunchConfiguration]
a} :: EnvironmentResourceDescription) ((Maybe [LaunchConfiguration] -> f (Maybe [LaunchConfiguration]))
 -> EnvironmentResourceDescription
 -> f EnvironmentResourceDescription)
-> ((Maybe [LaunchConfiguration]
     -> f (Maybe [LaunchConfiguration]))
    -> Maybe [LaunchConfiguration] -> f (Maybe [LaunchConfiguration]))
-> (Maybe [LaunchConfiguration] -> f (Maybe [LaunchConfiguration]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [LaunchConfiguration]
  [LaunchConfiguration]
  [LaunchConfiguration]
  [LaunchConfiguration]
-> Iso
     (Maybe [LaunchConfiguration])
     (Maybe [LaunchConfiguration])
     (Maybe [LaunchConfiguration])
     (Maybe [LaunchConfiguration])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [LaunchConfiguration]
  [LaunchConfiguration]
  [LaunchConfiguration]
  [LaunchConfiguration]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | The @AutoScalingGroups@ used by this environment.
environmentResourceDescription_autoScalingGroups :: Lens.Lens' EnvironmentResourceDescription (Prelude.Maybe [AutoScalingGroup])
environmentResourceDescription_autoScalingGroups :: (Maybe [AutoScalingGroup] -> f (Maybe [AutoScalingGroup]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
environmentResourceDescription_autoScalingGroups = (EnvironmentResourceDescription -> Maybe [AutoScalingGroup])
-> (EnvironmentResourceDescription
    -> Maybe [AutoScalingGroup] -> EnvironmentResourceDescription)
-> Lens
     EnvironmentResourceDescription
     EnvironmentResourceDescription
     (Maybe [AutoScalingGroup])
     (Maybe [AutoScalingGroup])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentResourceDescription' {Maybe [AutoScalingGroup]
autoScalingGroups :: Maybe [AutoScalingGroup]
$sel:autoScalingGroups:EnvironmentResourceDescription' :: EnvironmentResourceDescription -> Maybe [AutoScalingGroup]
autoScalingGroups} -> Maybe [AutoScalingGroup]
autoScalingGroups) (\s :: EnvironmentResourceDescription
s@EnvironmentResourceDescription' {} Maybe [AutoScalingGroup]
a -> EnvironmentResourceDescription
s {$sel:autoScalingGroups:EnvironmentResourceDescription' :: Maybe [AutoScalingGroup]
autoScalingGroups = Maybe [AutoScalingGroup]
a} :: EnvironmentResourceDescription) ((Maybe [AutoScalingGroup] -> f (Maybe [AutoScalingGroup]))
 -> EnvironmentResourceDescription
 -> f EnvironmentResourceDescription)
-> ((Maybe [AutoScalingGroup] -> f (Maybe [AutoScalingGroup]))
    -> Maybe [AutoScalingGroup] -> f (Maybe [AutoScalingGroup]))
-> (Maybe [AutoScalingGroup] -> f (Maybe [AutoScalingGroup]))
-> EnvironmentResourceDescription
-> f EnvironmentResourceDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [AutoScalingGroup]
  [AutoScalingGroup]
  [AutoScalingGroup]
  [AutoScalingGroup]
-> Iso
     (Maybe [AutoScalingGroup])
     (Maybe [AutoScalingGroup])
     (Maybe [AutoScalingGroup])
     (Maybe [AutoScalingGroup])
forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping AnIso
  [AutoScalingGroup]
  [AutoScalingGroup]
  [AutoScalingGroup]
  [AutoScalingGroup]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

instance Core.FromXML EnvironmentResourceDescription where
  parseXML :: [Node] -> Either String EnvironmentResourceDescription
parseXML [Node]
x =
    Maybe [Queue]
-> Maybe [Trigger]
-> Maybe [LaunchTemplate]
-> Maybe [LoadBalancer]
-> Maybe Text
-> Maybe [Instance]
-> Maybe [LaunchConfiguration]
-> Maybe [AutoScalingGroup]
-> EnvironmentResourceDescription
EnvironmentResourceDescription'
      (Maybe [Queue]
 -> Maybe [Trigger]
 -> Maybe [LaunchTemplate]
 -> Maybe [LoadBalancer]
 -> Maybe Text
 -> Maybe [Instance]
 -> Maybe [LaunchConfiguration]
 -> Maybe [AutoScalingGroup]
 -> EnvironmentResourceDescription)
-> Either String (Maybe [Queue])
-> Either
     String
     (Maybe [Trigger]
      -> Maybe [LaunchTemplate]
      -> Maybe [LoadBalancer]
      -> Maybe Text
      -> Maybe [Instance]
      -> Maybe [LaunchConfiguration]
      -> Maybe [AutoScalingGroup]
      -> EnvironmentResourceDescription)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Queues" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [Queue]))
-> Either String (Maybe [Queue])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Queue])
-> [Node] -> Either String (Maybe [Queue])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Queue]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe [Trigger]
   -> Maybe [LaunchTemplate]
   -> Maybe [LoadBalancer]
   -> Maybe Text
   -> Maybe [Instance]
   -> Maybe [LaunchConfiguration]
   -> Maybe [AutoScalingGroup]
   -> EnvironmentResourceDescription)
-> Either String (Maybe [Trigger])
-> Either
     String
     (Maybe [LaunchTemplate]
      -> Maybe [LoadBalancer]
      -> Maybe Text
      -> Maybe [Instance]
      -> Maybe [LaunchConfiguration]
      -> Maybe [AutoScalingGroup]
      -> EnvironmentResourceDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Triggers" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [Trigger]))
-> Either String (Maybe [Trigger])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Trigger])
-> [Node] -> Either String (Maybe [Trigger])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Trigger]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe [LaunchTemplate]
   -> Maybe [LoadBalancer]
   -> Maybe Text
   -> Maybe [Instance]
   -> Maybe [LaunchConfiguration]
   -> Maybe [AutoScalingGroup]
   -> EnvironmentResourceDescription)
-> Either String (Maybe [LaunchTemplate])
-> Either
     String
     (Maybe [LoadBalancer]
      -> Maybe Text
      -> Maybe [Instance]
      -> Maybe [LaunchConfiguration]
      -> Maybe [AutoScalingGroup]
      -> EnvironmentResourceDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"LaunchTemplates" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [LaunchTemplate]))
-> Either String (Maybe [LaunchTemplate])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [LaunchTemplate])
-> [Node] -> Either String (Maybe [LaunchTemplate])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [LaunchTemplate]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe [LoadBalancer]
   -> Maybe Text
   -> Maybe [Instance]
   -> Maybe [LaunchConfiguration]
   -> Maybe [AutoScalingGroup]
   -> EnvironmentResourceDescription)
-> Either String (Maybe [LoadBalancer])
-> Either
     String
     (Maybe Text
      -> Maybe [Instance]
      -> Maybe [LaunchConfiguration]
      -> Maybe [AutoScalingGroup]
      -> EnvironmentResourceDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"LoadBalancers" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [LoadBalancer]))
-> Either String (Maybe [LoadBalancer])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [LoadBalancer])
-> [Node] -> Either String (Maybe [LoadBalancer])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [LoadBalancer]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe Text
   -> Maybe [Instance]
   -> Maybe [LaunchConfiguration]
   -> Maybe [AutoScalingGroup]
   -> EnvironmentResourceDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe [Instance]
      -> Maybe [LaunchConfiguration]
      -> Maybe [AutoScalingGroup]
      -> EnvironmentResourceDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Text)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"EnvironmentName")
      Either
  String
  (Maybe [Instance]
   -> Maybe [LaunchConfiguration]
   -> Maybe [AutoScalingGroup]
   -> EnvironmentResourceDescription)
-> Either String (Maybe [Instance])
-> Either
     String
     (Maybe [LaunchConfiguration]
      -> Maybe [AutoScalingGroup] -> EnvironmentResourceDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Instances" Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [Instance]))
-> Either String (Maybe [Instance])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [Instance])
-> [Node] -> Either String (Maybe [Instance])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [Instance]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String
  (Maybe [LaunchConfiguration]
   -> Maybe [AutoScalingGroup] -> EnvironmentResourceDescription)
-> Either String (Maybe [LaunchConfiguration])
-> Either
     String (Maybe [AutoScalingGroup] -> EnvironmentResourceDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"LaunchConfigurations"
                      Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [LaunchConfiguration]))
-> Either String (Maybe [LaunchConfiguration])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [LaunchConfiguration])
-> [Node] -> Either String (Maybe [LaunchConfiguration])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [LaunchConfiguration]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either
  String (Maybe [AutoScalingGroup] -> EnvironmentResourceDescription)
-> Either String (Maybe [AutoScalingGroup])
-> Either String EnvironmentResourceDescription
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ( [Node]
x [Node] -> Text -> Either String (Maybe [Node])
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"AutoScalingGroups"
                      Either String (Maybe [Node]) -> [Node] -> Either String [Node]
forall (f :: * -> *) a. Functor f => f (Maybe a) -> a -> f a
Core..!@ [Node]
forall a. Monoid a => a
Prelude.mempty
                      Either String [Node]
-> ([Node] -> Either String (Maybe [AutoScalingGroup]))
-> Either String (Maybe [AutoScalingGroup])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [AutoScalingGroup])
-> [Node] -> Either String (Maybe [AutoScalingGroup])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [AutoScalingGroup]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )

instance
  Prelude.Hashable
    EnvironmentResourceDescription

instance
  Prelude.NFData
    EnvironmentResourceDescription