{-# 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.EnvironmentDescription
-- 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.EnvironmentDescription where

import qualified Amazonka.Core as Core
import Amazonka.ElasticBeanstalk.Types.EnvironmentHealth
import Amazonka.ElasticBeanstalk.Types.EnvironmentHealthStatus
import Amazonka.ElasticBeanstalk.Types.EnvironmentLink
import Amazonka.ElasticBeanstalk.Types.EnvironmentResourcesDescription
import Amazonka.ElasticBeanstalk.Types.EnvironmentStatus
import Amazonka.ElasticBeanstalk.Types.EnvironmentTier
import qualified Amazonka.Lens as Lens
import qualified Amazonka.Prelude as Prelude

-- | Describes the properties of an environment.
--
-- /See:/ 'newEnvironmentDescription' smart constructor.
data EnvironmentDescription = EnvironmentDescription'
  { -- | The current operational status of the environment:
    --
    -- -   @Launching@: Environment is in the process of initial deployment.
    --
    -- -   @Updating@: Environment is in the process of updating its
    --     configuration settings or application version.
    --
    -- -   @Ready@: Environment is available to have an action performed on it,
    --     such as update or terminate.
    --
    -- -   @Terminating@: Environment is in the shut-down process.
    --
    -- -   @Terminated@: Environment is not running.
    EnvironmentDescription -> Maybe EnvironmentStatus
status :: Prelude.Maybe EnvironmentStatus,
    -- | The URL to the CNAME for this environment.
    EnvironmentDescription -> Maybe Text
cname :: Prelude.Maybe Prelude.Text,
    -- | The name of the configuration template used to originally launch this
    -- environment.
    EnvironmentDescription -> Maybe Text
templateName :: Prelude.Maybe Prelude.Text,
    -- | Indicates if there is an in-progress environment configuration update or
    -- application version deployment that you can cancel.
    --
    -- @true:@ There is an update in progress.
    --
    -- @false:@ There are no updates currently in progress.
    EnvironmentDescription -> Maybe Bool
abortableOperationInProgress :: Prelude.Maybe Prelude.Bool,
    -- | For load-balanced, autoscaling environments, the URL to the
    -- LoadBalancer. For single-instance environments, the IP address of the
    -- instance.
    EnvironmentDescription -> Maybe Text
endpointURL :: Prelude.Maybe Prelude.Text,
    -- | The description of the AWS resources used by this environment.
    EnvironmentDescription -> Maybe EnvironmentResourcesDescription
resources :: Prelude.Maybe EnvironmentResourcesDescription,
    -- | The last modified date for this environment.
    EnvironmentDescription -> Maybe ISO8601
dateUpdated :: Prelude.Maybe Core.ISO8601,
    -- | The creation date for this environment.
    EnvironmentDescription -> Maybe ISO8601
dateCreated :: Prelude.Maybe Core.ISO8601,
    -- | Describes the health status of the environment. AWS Elastic Beanstalk
    -- indicates the failure levels for a running environment:
    --
    -- -   @Red@: Indicates the environment is not responsive. Occurs when
    --     three or more consecutive failures occur for an environment.
    --
    -- -   @Yellow@: Indicates that something is wrong. Occurs when two
    --     consecutive failures occur for an environment.
    --
    -- -   @Green@: Indicates the environment is healthy and fully functional.
    --
    -- -   @Grey@: Default health for a new environment. The environment is not
    --     fully launched and health checks have not started or health checks
    --     are suspended during an @UpdateEnvironment@ or @RestartEnvironment@
    --     request.
    --
    -- Default: @Grey@
    EnvironmentDescription -> Maybe EnvironmentHealth
health :: Prelude.Maybe EnvironmentHealth,
    -- | The application version deployed in this environment.
    EnvironmentDescription -> Maybe Text
versionLabel :: Prelude.Maybe Prelude.Text,
    -- | The Amazon Resource Name (ARN) of the environment\'s operations role.
    -- For more information, see
    -- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-operationsrole.html Operations roles>
    -- in the /AWS Elastic Beanstalk Developer Guide/.
    EnvironmentDescription -> Maybe Text
operationsRole :: Prelude.Maybe Prelude.Text,
    -- | The ARN of the platform version.
    EnvironmentDescription -> Maybe Text
platformArn :: Prelude.Maybe Prelude.Text,
    -- | Describes the current tier of this environment.
    EnvironmentDescription -> Maybe EnvironmentTier
tier :: Prelude.Maybe EnvironmentTier,
    -- | The name of this environment.
    EnvironmentDescription -> Maybe Text
environmentName :: Prelude.Maybe Prelude.Text,
    -- | The name of the application associated with this environment.
    EnvironmentDescription -> Maybe Text
applicationName :: Prelude.Maybe Prelude.Text,
    -- | The environment\'s Amazon Resource Name (ARN), which can be used in
    -- other API requests that require an ARN.
    EnvironmentDescription -> Maybe Text
environmentArn :: Prelude.Maybe Prelude.Text,
    -- | The name of the @SolutionStack@ deployed with this environment.
    EnvironmentDescription -> Maybe Text
solutionStackName :: Prelude.Maybe Prelude.Text,
    -- | The ID of this environment.
    EnvironmentDescription -> Maybe Text
environmentId :: Prelude.Maybe Prelude.Text,
    -- | Returns the health status of the application running in your
    -- environment. For more information, see
    -- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html Health Colors and Statuses>.
    EnvironmentDescription -> Maybe EnvironmentHealthStatus
healthStatus :: Prelude.Maybe EnvironmentHealthStatus,
    -- | A list of links to other environments in the same group.
    EnvironmentDescription -> Maybe [EnvironmentLink]
environmentLinks :: Prelude.Maybe [EnvironmentLink],
    -- | Describes this environment.
    EnvironmentDescription -> Maybe Text
description :: Prelude.Maybe Prelude.Text
  }
  deriving (EnvironmentDescription -> EnvironmentDescription -> Bool
(EnvironmentDescription -> EnvironmentDescription -> Bool)
-> (EnvironmentDescription -> EnvironmentDescription -> Bool)
-> Eq EnvironmentDescription
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: EnvironmentDescription -> EnvironmentDescription -> Bool
$c/= :: EnvironmentDescription -> EnvironmentDescription -> Bool
== :: EnvironmentDescription -> EnvironmentDescription -> Bool
$c== :: EnvironmentDescription -> EnvironmentDescription -> Bool
Prelude.Eq, ReadPrec [EnvironmentDescription]
ReadPrec EnvironmentDescription
Int -> ReadS EnvironmentDescription
ReadS [EnvironmentDescription]
(Int -> ReadS EnvironmentDescription)
-> ReadS [EnvironmentDescription]
-> ReadPrec EnvironmentDescription
-> ReadPrec [EnvironmentDescription]
-> Read EnvironmentDescription
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [EnvironmentDescription]
$creadListPrec :: ReadPrec [EnvironmentDescription]
readPrec :: ReadPrec EnvironmentDescription
$creadPrec :: ReadPrec EnvironmentDescription
readList :: ReadS [EnvironmentDescription]
$creadList :: ReadS [EnvironmentDescription]
readsPrec :: Int -> ReadS EnvironmentDescription
$creadsPrec :: Int -> ReadS EnvironmentDescription
Prelude.Read, Int -> EnvironmentDescription -> ShowS
[EnvironmentDescription] -> ShowS
EnvironmentDescription -> String
(Int -> EnvironmentDescription -> ShowS)
-> (EnvironmentDescription -> String)
-> ([EnvironmentDescription] -> ShowS)
-> Show EnvironmentDescription
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [EnvironmentDescription] -> ShowS
$cshowList :: [EnvironmentDescription] -> ShowS
show :: EnvironmentDescription -> String
$cshow :: EnvironmentDescription -> String
showsPrec :: Int -> EnvironmentDescription -> ShowS
$cshowsPrec :: Int -> EnvironmentDescription -> ShowS
Prelude.Show, (forall x. EnvironmentDescription -> Rep EnvironmentDescription x)
-> (forall x.
    Rep EnvironmentDescription x -> EnvironmentDescription)
-> Generic EnvironmentDescription
forall x. Rep EnvironmentDescription x -> EnvironmentDescription
forall x. EnvironmentDescription -> Rep EnvironmentDescription x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep EnvironmentDescription x -> EnvironmentDescription
$cfrom :: forall x. EnvironmentDescription -> Rep EnvironmentDescription x
Prelude.Generic)

-- |
-- Create a value of 'EnvironmentDescription' 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:
--
-- 'status', 'environmentDescription_status' - The current operational status of the environment:
--
-- -   @Launching@: Environment is in the process of initial deployment.
--
-- -   @Updating@: Environment is in the process of updating its
--     configuration settings or application version.
--
-- -   @Ready@: Environment is available to have an action performed on it,
--     such as update or terminate.
--
-- -   @Terminating@: Environment is in the shut-down process.
--
-- -   @Terminated@: Environment is not running.
--
-- 'cname', 'environmentDescription_cname' - The URL to the CNAME for this environment.
--
-- 'templateName', 'environmentDescription_templateName' - The name of the configuration template used to originally launch this
-- environment.
--
-- 'abortableOperationInProgress', 'environmentDescription_abortableOperationInProgress' - Indicates if there is an in-progress environment configuration update or
-- application version deployment that you can cancel.
--
-- @true:@ There is an update in progress.
--
-- @false:@ There are no updates currently in progress.
--
-- 'endpointURL', 'environmentDescription_endpointURL' - For load-balanced, autoscaling environments, the URL to the
-- LoadBalancer. For single-instance environments, the IP address of the
-- instance.
--
-- 'resources', 'environmentDescription_resources' - The description of the AWS resources used by this environment.
--
-- 'dateUpdated', 'environmentDescription_dateUpdated' - The last modified date for this environment.
--
-- 'dateCreated', 'environmentDescription_dateCreated' - The creation date for this environment.
--
-- 'health', 'environmentDescription_health' - Describes the health status of the environment. AWS Elastic Beanstalk
-- indicates the failure levels for a running environment:
--
-- -   @Red@: Indicates the environment is not responsive. Occurs when
--     three or more consecutive failures occur for an environment.
--
-- -   @Yellow@: Indicates that something is wrong. Occurs when two
--     consecutive failures occur for an environment.
--
-- -   @Green@: Indicates the environment is healthy and fully functional.
--
-- -   @Grey@: Default health for a new environment. The environment is not
--     fully launched and health checks have not started or health checks
--     are suspended during an @UpdateEnvironment@ or @RestartEnvironment@
--     request.
--
-- Default: @Grey@
--
-- 'versionLabel', 'environmentDescription_versionLabel' - The application version deployed in this environment.
--
-- 'operationsRole', 'environmentDescription_operationsRole' - The Amazon Resource Name (ARN) of the environment\'s operations role.
-- For more information, see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-operationsrole.html Operations roles>
-- in the /AWS Elastic Beanstalk Developer Guide/.
--
-- 'platformArn', 'environmentDescription_platformArn' - The ARN of the platform version.
--
-- 'tier', 'environmentDescription_tier' - Describes the current tier of this environment.
--
-- 'environmentName', 'environmentDescription_environmentName' - The name of this environment.
--
-- 'applicationName', 'environmentDescription_applicationName' - The name of the application associated with this environment.
--
-- 'environmentArn', 'environmentDescription_environmentArn' - The environment\'s Amazon Resource Name (ARN), which can be used in
-- other API requests that require an ARN.
--
-- 'solutionStackName', 'environmentDescription_solutionStackName' - The name of the @SolutionStack@ deployed with this environment.
--
-- 'environmentId', 'environmentDescription_environmentId' - The ID of this environment.
--
-- 'healthStatus', 'environmentDescription_healthStatus' - Returns the health status of the application running in your
-- environment. For more information, see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html Health Colors and Statuses>.
--
-- 'environmentLinks', 'environmentDescription_environmentLinks' - A list of links to other environments in the same group.
--
-- 'description', 'environmentDescription_description' - Describes this environment.
newEnvironmentDescription ::
  EnvironmentDescription
newEnvironmentDescription :: EnvironmentDescription
newEnvironmentDescription =
  EnvironmentDescription' :: Maybe EnvironmentStatus
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe EnvironmentResourcesDescription
-> Maybe ISO8601
-> Maybe ISO8601
-> Maybe EnvironmentHealth
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe EnvironmentTier
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe EnvironmentHealthStatus
-> Maybe [EnvironmentLink]
-> Maybe Text
-> EnvironmentDescription
EnvironmentDescription'
    { $sel:status:EnvironmentDescription' :: Maybe EnvironmentStatus
status = Maybe EnvironmentStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:cname:EnvironmentDescription' :: Maybe Text
cname = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:templateName:EnvironmentDescription' :: Maybe Text
templateName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:abortableOperationInProgress:EnvironmentDescription' :: Maybe Bool
abortableOperationInProgress = Maybe Bool
forall a. Maybe a
Prelude.Nothing,
      $sel:endpointURL:EnvironmentDescription' :: Maybe Text
endpointURL = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:resources:EnvironmentDescription' :: Maybe EnvironmentResourcesDescription
resources = Maybe EnvironmentResourcesDescription
forall a. Maybe a
Prelude.Nothing,
      $sel:dateUpdated:EnvironmentDescription' :: Maybe ISO8601
dateUpdated = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:dateCreated:EnvironmentDescription' :: Maybe ISO8601
dateCreated = Maybe ISO8601
forall a. Maybe a
Prelude.Nothing,
      $sel:health:EnvironmentDescription' :: Maybe EnvironmentHealth
health = Maybe EnvironmentHealth
forall a. Maybe a
Prelude.Nothing,
      $sel:versionLabel:EnvironmentDescription' :: Maybe Text
versionLabel = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:operationsRole:EnvironmentDescription' :: Maybe Text
operationsRole = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:platformArn:EnvironmentDescription' :: Maybe Text
platformArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:tier:EnvironmentDescription' :: Maybe EnvironmentTier
tier = Maybe EnvironmentTier
forall a. Maybe a
Prelude.Nothing,
      $sel:environmentName:EnvironmentDescription' :: Maybe Text
environmentName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:applicationName:EnvironmentDescription' :: Maybe Text
applicationName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:environmentArn:EnvironmentDescription' :: Maybe Text
environmentArn = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:solutionStackName:EnvironmentDescription' :: Maybe Text
solutionStackName = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:environmentId:EnvironmentDescription' :: Maybe Text
environmentId = Maybe Text
forall a. Maybe a
Prelude.Nothing,
      $sel:healthStatus:EnvironmentDescription' :: Maybe EnvironmentHealthStatus
healthStatus = Maybe EnvironmentHealthStatus
forall a. Maybe a
Prelude.Nothing,
      $sel:environmentLinks:EnvironmentDescription' :: Maybe [EnvironmentLink]
environmentLinks = Maybe [EnvironmentLink]
forall a. Maybe a
Prelude.Nothing,
      $sel:description:EnvironmentDescription' :: Maybe Text
description = Maybe Text
forall a. Maybe a
Prelude.Nothing
    }

-- | The current operational status of the environment:
--
-- -   @Launching@: Environment is in the process of initial deployment.
--
-- -   @Updating@: Environment is in the process of updating its
--     configuration settings or application version.
--
-- -   @Ready@: Environment is available to have an action performed on it,
--     such as update or terminate.
--
-- -   @Terminating@: Environment is in the shut-down process.
--
-- -   @Terminated@: Environment is not running.
environmentDescription_status :: Lens.Lens' EnvironmentDescription (Prelude.Maybe EnvironmentStatus)
environmentDescription_status :: (Maybe EnvironmentStatus -> f (Maybe EnvironmentStatus))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_status = (EnvironmentDescription -> Maybe EnvironmentStatus)
-> (EnvironmentDescription
    -> Maybe EnvironmentStatus -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe EnvironmentStatus)
     (Maybe EnvironmentStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe EnvironmentStatus
status :: Maybe EnvironmentStatus
$sel:status:EnvironmentDescription' :: EnvironmentDescription -> Maybe EnvironmentStatus
status} -> Maybe EnvironmentStatus
status) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe EnvironmentStatus
a -> EnvironmentDescription
s {$sel:status:EnvironmentDescription' :: Maybe EnvironmentStatus
status = Maybe EnvironmentStatus
a} :: EnvironmentDescription)

-- | The URL to the CNAME for this environment.
environmentDescription_cname :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_cname :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_cname = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
cname :: Maybe Text
$sel:cname:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
cname} -> Maybe Text
cname) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:cname:EnvironmentDescription' :: Maybe Text
cname = Maybe Text
a} :: EnvironmentDescription)

-- | The name of the configuration template used to originally launch this
-- environment.
environmentDescription_templateName :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_templateName :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_templateName = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
templateName :: Maybe Text
$sel:templateName:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
templateName} -> Maybe Text
templateName) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:templateName:EnvironmentDescription' :: Maybe Text
templateName = Maybe Text
a} :: EnvironmentDescription)

-- | Indicates if there is an in-progress environment configuration update or
-- application version deployment that you can cancel.
--
-- @true:@ There is an update in progress.
--
-- @false:@ There are no updates currently in progress.
environmentDescription_abortableOperationInProgress :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Bool)
environmentDescription_abortableOperationInProgress :: (Maybe Bool -> f (Maybe Bool))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_abortableOperationInProgress = (EnvironmentDescription -> Maybe Bool)
-> (EnvironmentDescription -> Maybe Bool -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Bool)
     (Maybe Bool)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Bool
abortableOperationInProgress :: Maybe Bool
$sel:abortableOperationInProgress:EnvironmentDescription' :: EnvironmentDescription -> Maybe Bool
abortableOperationInProgress} -> Maybe Bool
abortableOperationInProgress) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Bool
a -> EnvironmentDescription
s {$sel:abortableOperationInProgress:EnvironmentDescription' :: Maybe Bool
abortableOperationInProgress = Maybe Bool
a} :: EnvironmentDescription)

-- | For load-balanced, autoscaling environments, the URL to the
-- LoadBalancer. For single-instance environments, the IP address of the
-- instance.
environmentDescription_endpointURL :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_endpointURL :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_endpointURL = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
endpointURL :: Maybe Text
$sel:endpointURL:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
endpointURL} -> Maybe Text
endpointURL) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:endpointURL:EnvironmentDescription' :: Maybe Text
endpointURL = Maybe Text
a} :: EnvironmentDescription)

-- | The description of the AWS resources used by this environment.
environmentDescription_resources :: Lens.Lens' EnvironmentDescription (Prelude.Maybe EnvironmentResourcesDescription)
environmentDescription_resources :: (Maybe EnvironmentResourcesDescription
 -> f (Maybe EnvironmentResourcesDescription))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_resources = (EnvironmentDescription -> Maybe EnvironmentResourcesDescription)
-> (EnvironmentDescription
    -> Maybe EnvironmentResourcesDescription -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe EnvironmentResourcesDescription)
     (Maybe EnvironmentResourcesDescription)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe EnvironmentResourcesDescription
resources :: Maybe EnvironmentResourcesDescription
$sel:resources:EnvironmentDescription' :: EnvironmentDescription -> Maybe EnvironmentResourcesDescription
resources} -> Maybe EnvironmentResourcesDescription
resources) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe EnvironmentResourcesDescription
a -> EnvironmentDescription
s {$sel:resources:EnvironmentDescription' :: Maybe EnvironmentResourcesDescription
resources = Maybe EnvironmentResourcesDescription
a} :: EnvironmentDescription)

-- | The last modified date for this environment.
environmentDescription_dateUpdated :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.UTCTime)
environmentDescription_dateUpdated :: (Maybe UTCTime -> f (Maybe UTCTime))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_dateUpdated = (EnvironmentDescription -> Maybe ISO8601)
-> (EnvironmentDescription
    -> Maybe ISO8601 -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe ISO8601)
     (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe ISO8601
dateUpdated :: Maybe ISO8601
$sel:dateUpdated:EnvironmentDescription' :: EnvironmentDescription -> Maybe ISO8601
dateUpdated} -> Maybe ISO8601
dateUpdated) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe ISO8601
a -> EnvironmentDescription
s {$sel:dateUpdated:EnvironmentDescription' :: Maybe ISO8601
dateUpdated = Maybe ISO8601
a} :: EnvironmentDescription) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> EnvironmentDescription -> f EnvironmentDescription)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> EnvironmentDescription
-> f EnvironmentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (Maybe UTCTime) (Maybe UTCTime)
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 ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | The creation date for this environment.
environmentDescription_dateCreated :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.UTCTime)
environmentDescription_dateCreated :: (Maybe UTCTime -> f (Maybe UTCTime))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_dateCreated = (EnvironmentDescription -> Maybe ISO8601)
-> (EnvironmentDescription
    -> Maybe ISO8601 -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe ISO8601)
     (Maybe ISO8601)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe ISO8601
dateCreated :: Maybe ISO8601
$sel:dateCreated:EnvironmentDescription' :: EnvironmentDescription -> Maybe ISO8601
dateCreated} -> Maybe ISO8601
dateCreated) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe ISO8601
a -> EnvironmentDescription
s {$sel:dateCreated:EnvironmentDescription' :: Maybe ISO8601
dateCreated = Maybe ISO8601
a} :: EnvironmentDescription) ((Maybe ISO8601 -> f (Maybe ISO8601))
 -> EnvironmentDescription -> f EnvironmentDescription)
-> ((Maybe UTCTime -> f (Maybe UTCTime))
    -> Maybe ISO8601 -> f (Maybe ISO8601))
-> (Maybe UTCTime -> f (Maybe UTCTime))
-> EnvironmentDescription
-> f EnvironmentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso ISO8601 ISO8601 UTCTime UTCTime
-> Iso
     (Maybe ISO8601) (Maybe ISO8601) (Maybe UTCTime) (Maybe UTCTime)
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 ISO8601 ISO8601 UTCTime UTCTime
forall (a :: Format). Iso' (Time a) UTCTime
Core._Time

-- | Describes the health status of the environment. AWS Elastic Beanstalk
-- indicates the failure levels for a running environment:
--
-- -   @Red@: Indicates the environment is not responsive. Occurs when
--     three or more consecutive failures occur for an environment.
--
-- -   @Yellow@: Indicates that something is wrong. Occurs when two
--     consecutive failures occur for an environment.
--
-- -   @Green@: Indicates the environment is healthy and fully functional.
--
-- -   @Grey@: Default health for a new environment. The environment is not
--     fully launched and health checks have not started or health checks
--     are suspended during an @UpdateEnvironment@ or @RestartEnvironment@
--     request.
--
-- Default: @Grey@
environmentDescription_health :: Lens.Lens' EnvironmentDescription (Prelude.Maybe EnvironmentHealth)
environmentDescription_health :: (Maybe EnvironmentHealth -> f (Maybe EnvironmentHealth))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_health = (EnvironmentDescription -> Maybe EnvironmentHealth)
-> (EnvironmentDescription
    -> Maybe EnvironmentHealth -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe EnvironmentHealth)
     (Maybe EnvironmentHealth)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe EnvironmentHealth
health :: Maybe EnvironmentHealth
$sel:health:EnvironmentDescription' :: EnvironmentDescription -> Maybe EnvironmentHealth
health} -> Maybe EnvironmentHealth
health) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe EnvironmentHealth
a -> EnvironmentDescription
s {$sel:health:EnvironmentDescription' :: Maybe EnvironmentHealth
health = Maybe EnvironmentHealth
a} :: EnvironmentDescription)

-- | The application version deployed in this environment.
environmentDescription_versionLabel :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_versionLabel :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_versionLabel = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
versionLabel :: Maybe Text
$sel:versionLabel:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
versionLabel} -> Maybe Text
versionLabel) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:versionLabel:EnvironmentDescription' :: Maybe Text
versionLabel = Maybe Text
a} :: EnvironmentDescription)

-- | The Amazon Resource Name (ARN) of the environment\'s operations role.
-- For more information, see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/iam-operationsrole.html Operations roles>
-- in the /AWS Elastic Beanstalk Developer Guide/.
environmentDescription_operationsRole :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_operationsRole :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_operationsRole = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
operationsRole :: Maybe Text
$sel:operationsRole:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
operationsRole} -> Maybe Text
operationsRole) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:operationsRole:EnvironmentDescription' :: Maybe Text
operationsRole = Maybe Text
a} :: EnvironmentDescription)

-- | The ARN of the platform version.
environmentDescription_platformArn :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_platformArn :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_platformArn = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
platformArn :: Maybe Text
$sel:platformArn:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
platformArn} -> Maybe Text
platformArn) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:platformArn:EnvironmentDescription' :: Maybe Text
platformArn = Maybe Text
a} :: EnvironmentDescription)

-- | Describes the current tier of this environment.
environmentDescription_tier :: Lens.Lens' EnvironmentDescription (Prelude.Maybe EnvironmentTier)
environmentDescription_tier :: (Maybe EnvironmentTier -> f (Maybe EnvironmentTier))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_tier = (EnvironmentDescription -> Maybe EnvironmentTier)
-> (EnvironmentDescription
    -> Maybe EnvironmentTier -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe EnvironmentTier)
     (Maybe EnvironmentTier)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe EnvironmentTier
tier :: Maybe EnvironmentTier
$sel:tier:EnvironmentDescription' :: EnvironmentDescription -> Maybe EnvironmentTier
tier} -> Maybe EnvironmentTier
tier) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe EnvironmentTier
a -> EnvironmentDescription
s {$sel:tier:EnvironmentDescription' :: Maybe EnvironmentTier
tier = Maybe EnvironmentTier
a} :: EnvironmentDescription)

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

-- | The name of the application associated with this environment.
environmentDescription_applicationName :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_applicationName :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_applicationName = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
applicationName :: Maybe Text
$sel:applicationName:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
applicationName} -> Maybe Text
applicationName) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:applicationName:EnvironmentDescription' :: Maybe Text
applicationName = Maybe Text
a} :: EnvironmentDescription)

-- | The environment\'s Amazon Resource Name (ARN), which can be used in
-- other API requests that require an ARN.
environmentDescription_environmentArn :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_environmentArn :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_environmentArn = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
environmentArn :: Maybe Text
$sel:environmentArn:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
environmentArn} -> Maybe Text
environmentArn) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:environmentArn:EnvironmentDescription' :: Maybe Text
environmentArn = Maybe Text
a} :: EnvironmentDescription)

-- | The name of the @SolutionStack@ deployed with this environment.
environmentDescription_solutionStackName :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_solutionStackName :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_solutionStackName = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
solutionStackName :: Maybe Text
$sel:solutionStackName:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
solutionStackName} -> Maybe Text
solutionStackName) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:solutionStackName:EnvironmentDescription' :: Maybe Text
solutionStackName = Maybe Text
a} :: EnvironmentDescription)

-- | The ID of this environment.
environmentDescription_environmentId :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_environmentId :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_environmentId = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
environmentId :: Maybe Text
$sel:environmentId:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
environmentId} -> Maybe Text
environmentId) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:environmentId:EnvironmentDescription' :: Maybe Text
environmentId = Maybe Text
a} :: EnvironmentDescription)

-- | Returns the health status of the application running in your
-- environment. For more information, see
-- <https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/health-enhanced-status.html Health Colors and Statuses>.
environmentDescription_healthStatus :: Lens.Lens' EnvironmentDescription (Prelude.Maybe EnvironmentHealthStatus)
environmentDescription_healthStatus :: (Maybe EnvironmentHealthStatus
 -> f (Maybe EnvironmentHealthStatus))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_healthStatus = (EnvironmentDescription -> Maybe EnvironmentHealthStatus)
-> (EnvironmentDescription
    -> Maybe EnvironmentHealthStatus -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe EnvironmentHealthStatus)
     (Maybe EnvironmentHealthStatus)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe EnvironmentHealthStatus
healthStatus :: Maybe EnvironmentHealthStatus
$sel:healthStatus:EnvironmentDescription' :: EnvironmentDescription -> Maybe EnvironmentHealthStatus
healthStatus} -> Maybe EnvironmentHealthStatus
healthStatus) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe EnvironmentHealthStatus
a -> EnvironmentDescription
s {$sel:healthStatus:EnvironmentDescription' :: Maybe EnvironmentHealthStatus
healthStatus = Maybe EnvironmentHealthStatus
a} :: EnvironmentDescription)

-- | A list of links to other environments in the same group.
environmentDescription_environmentLinks :: Lens.Lens' EnvironmentDescription (Prelude.Maybe [EnvironmentLink])
environmentDescription_environmentLinks :: (Maybe [EnvironmentLink] -> f (Maybe [EnvironmentLink]))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_environmentLinks = (EnvironmentDescription -> Maybe [EnvironmentLink])
-> (EnvironmentDescription
    -> Maybe [EnvironmentLink] -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe [EnvironmentLink])
     (Maybe [EnvironmentLink])
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe [EnvironmentLink]
environmentLinks :: Maybe [EnvironmentLink]
$sel:environmentLinks:EnvironmentDescription' :: EnvironmentDescription -> Maybe [EnvironmentLink]
environmentLinks} -> Maybe [EnvironmentLink]
environmentLinks) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe [EnvironmentLink]
a -> EnvironmentDescription
s {$sel:environmentLinks:EnvironmentDescription' :: Maybe [EnvironmentLink]
environmentLinks = Maybe [EnvironmentLink]
a} :: EnvironmentDescription) ((Maybe [EnvironmentLink] -> f (Maybe [EnvironmentLink]))
 -> EnvironmentDescription -> f EnvironmentDescription)
-> ((Maybe [EnvironmentLink] -> f (Maybe [EnvironmentLink]))
    -> Maybe [EnvironmentLink] -> f (Maybe [EnvironmentLink]))
-> (Maybe [EnvironmentLink] -> f (Maybe [EnvironmentLink]))
-> EnvironmentDescription
-> f EnvironmentDescription
forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. AnIso
  [EnvironmentLink]
  [EnvironmentLink]
  [EnvironmentLink]
  [EnvironmentLink]
-> Iso
     (Maybe [EnvironmentLink])
     (Maybe [EnvironmentLink])
     (Maybe [EnvironmentLink])
     (Maybe [EnvironmentLink])
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
  [EnvironmentLink]
  [EnvironmentLink]
  [EnvironmentLink]
  [EnvironmentLink]
forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Describes this environment.
environmentDescription_description :: Lens.Lens' EnvironmentDescription (Prelude.Maybe Prelude.Text)
environmentDescription_description :: (Maybe Text -> f (Maybe Text))
-> EnvironmentDescription -> f EnvironmentDescription
environmentDescription_description = (EnvironmentDescription -> Maybe Text)
-> (EnvironmentDescription -> Maybe Text -> EnvironmentDescription)
-> Lens
     EnvironmentDescription
     EnvironmentDescription
     (Maybe Text)
     (Maybe Text)
forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\EnvironmentDescription' {Maybe Text
description :: Maybe Text
$sel:description:EnvironmentDescription' :: EnvironmentDescription -> Maybe Text
description} -> Maybe Text
description) (\s :: EnvironmentDescription
s@EnvironmentDescription' {} Maybe Text
a -> EnvironmentDescription
s {$sel:description:EnvironmentDescription' :: Maybe Text
description = Maybe Text
a} :: EnvironmentDescription)

instance Core.FromXML EnvironmentDescription where
  parseXML :: [Node] -> Either String EnvironmentDescription
parseXML [Node]
x =
    Maybe EnvironmentStatus
-> Maybe Text
-> Maybe Text
-> Maybe Bool
-> Maybe Text
-> Maybe EnvironmentResourcesDescription
-> Maybe ISO8601
-> Maybe ISO8601
-> Maybe EnvironmentHealth
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe EnvironmentTier
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe Text
-> Maybe EnvironmentHealthStatus
-> Maybe [EnvironmentLink]
-> Maybe Text
-> EnvironmentDescription
EnvironmentDescription'
      (Maybe EnvironmentStatus
 -> Maybe Text
 -> Maybe Text
 -> Maybe Bool
 -> Maybe Text
 -> Maybe EnvironmentResourcesDescription
 -> Maybe ISO8601
 -> Maybe ISO8601
 -> Maybe EnvironmentHealth
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe EnvironmentTier
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe Text
 -> Maybe EnvironmentHealthStatus
 -> Maybe [EnvironmentLink]
 -> Maybe Text
 -> EnvironmentDescription)
-> Either String (Maybe EnvironmentStatus)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe EnvironmentResourcesDescription
      -> Maybe ISO8601
      -> Maybe ISO8601
      -> Maybe EnvironmentHealth
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> ([Node]
x [Node] -> Text -> Either String (Maybe EnvironmentStatus)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Status")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe EnvironmentResourcesDescription
   -> Maybe ISO8601
   -> Maybe ISO8601
   -> Maybe EnvironmentHealth
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Bool
      -> Maybe Text
      -> Maybe EnvironmentResourcesDescription
      -> Maybe ISO8601
      -> Maybe ISO8601
      -> Maybe EnvironmentHealth
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"CNAME")
      Either
  String
  (Maybe Text
   -> Maybe Bool
   -> Maybe Text
   -> Maybe EnvironmentResourcesDescription
   -> Maybe ISO8601
   -> Maybe ISO8601
   -> Maybe EnvironmentHealth
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Bool
      -> Maybe Text
      -> Maybe EnvironmentResourcesDescription
      -> Maybe ISO8601
      -> Maybe ISO8601
      -> Maybe EnvironmentHealth
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"TemplateName")
      Either
  String
  (Maybe Bool
   -> Maybe Text
   -> Maybe EnvironmentResourcesDescription
   -> Maybe ISO8601
   -> Maybe ISO8601
   -> Maybe EnvironmentHealth
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Bool)
-> Either
     String
     (Maybe Text
      -> Maybe EnvironmentResourcesDescription
      -> Maybe ISO8601
      -> Maybe ISO8601
      -> Maybe EnvironmentHealth
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe Bool)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"AbortableOperationInProgress")
      Either
  String
  (Maybe Text
   -> Maybe EnvironmentResourcesDescription
   -> Maybe ISO8601
   -> Maybe ISO8601
   -> Maybe EnvironmentHealth
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe EnvironmentResourcesDescription
      -> Maybe ISO8601
      -> Maybe ISO8601
      -> Maybe EnvironmentHealth
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"EndpointURL")
      Either
  String
  (Maybe EnvironmentResourcesDescription
   -> Maybe ISO8601
   -> Maybe ISO8601
   -> Maybe EnvironmentHealth
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe EnvironmentResourcesDescription)
-> Either
     String
     (Maybe ISO8601
      -> Maybe ISO8601
      -> Maybe EnvironmentHealth
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node]
-> Text -> Either String (Maybe EnvironmentResourcesDescription)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Resources")
      Either
  String
  (Maybe ISO8601
   -> Maybe ISO8601
   -> Maybe EnvironmentHealth
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe ISO8601
      -> Maybe EnvironmentHealth
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DateUpdated")
      Either
  String
  (Maybe ISO8601
   -> Maybe EnvironmentHealth
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe ISO8601)
-> Either
     String
     (Maybe EnvironmentHealth
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe ISO8601)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"DateCreated")
      Either
  String
  (Maybe EnvironmentHealth
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe EnvironmentHealth)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe EnvironmentHealth)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Health")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"VersionLabel")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"OperationsRole")
      Either
  String
  (Maybe Text
   -> Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe EnvironmentTier
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"PlatformArn")
      Either
  String
  (Maybe EnvironmentTier
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe EnvironmentTier)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe EnvironmentTier)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"Tier")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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 Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"ApplicationName")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"EnvironmentArn")
      Either
  String
  (Maybe Text
   -> Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe Text
      -> Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink]
      -> Maybe Text
      -> EnvironmentDescription)
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
"SolutionStackName")
      Either
  String
  (Maybe Text
   -> Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink]
   -> Maybe Text
   -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either
     String
     (Maybe EnvironmentHealthStatus
      -> Maybe [EnvironmentLink] -> Maybe Text -> EnvironmentDescription)
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
"EnvironmentId")
      Either
  String
  (Maybe EnvironmentHealthStatus
   -> Maybe [EnvironmentLink] -> Maybe Text -> EnvironmentDescription)
-> Either String (Maybe EnvironmentHealthStatus)
-> Either
     String
     (Maybe [EnvironmentLink] -> Maybe Text -> EnvironmentDescription)
forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> ([Node]
x [Node] -> Text -> Either String (Maybe EnvironmentHealthStatus)
forall a. FromXML a => [Node] -> Text -> Either String (Maybe a)
Core..@? Text
"HealthStatus")
      Either
  String
  (Maybe [EnvironmentLink] -> Maybe Text -> EnvironmentDescription)
-> Either String (Maybe [EnvironmentLink])
-> Either String (Maybe Text -> EnvironmentDescription)
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
"EnvironmentLinks"
                      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 [EnvironmentLink]))
-> Either String (Maybe [EnvironmentLink])
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
Prelude.>>= ([Node] -> Either String [EnvironmentLink])
-> [Node] -> Either String (Maybe [EnvironmentLink])
forall (f :: * -> *) a b.
Applicative f =>
([a] -> f b) -> [a] -> f (Maybe b)
Core.may (Text -> [Node] -> Either String [EnvironmentLink]
forall a. FromXML a => Text -> [Node] -> Either String [a]
Core.parseXMLList Text
"member")
                  )
      Either String (Maybe Text -> EnvironmentDescription)
-> Either String (Maybe Text)
-> Either String EnvironmentDescription
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
"Description")

instance Prelude.Hashable EnvironmentDescription

instance Prelude.NFData EnvironmentDescription